Using /MT was causing issues when building luarocks, revert it, use the
dynammic runtime and generate release DLLs for the dependencies.
Some refactoring was required because for linking cmake looks for the
import libraries (.lib) but on runtime executables we need the .dll files
to be in the same folder.
The DLLs are placed in the bin/ folder in order for nvim.exe to run
during the build and tests. The install target installs the DLLs with
the nvim binary - uses GetPrerequisites to find runtime DLLs.
Some minor issues that required adjustments:
- [MSVC] FindMsgpack.cmake now looks for msgpack_import.lib instead of
msgpack.lib
- The lua-client fails to find libuv.lib, instead it looks for uv.lib,
added second copy of the file to the install command.
- [MSVC] CMAKE_BUILD_TYPE affects the output paths, default to Release.
Part of these changes are credited to @jasonwilliams200OK who fixed the
third-party recipes to consistently use the same build type.
Luv is a simple lua binding to libuv, which is now used by neovim lua client.
The bundled luv installation a bit different from other dependencies in that it
is installed two times:
- The "BuildLuv.cmake" script downloads and installs a static version of luv
using its normal cmake build script. This static version will be used later.
- Luv default rockspec is replaced with the alternate under the "rockspecs"
directory(the alternate rockspec plays nicer with neovim build system)
- The alternate rockspec is used to build/install the lua module and make it
available to lua scripts.
New feature: `VTermState->mode.bracketpaste`
Enabled by default, but note that `vterm_state_reset()` disables it.
03981def6b
References #3476
New feature: `vterm_state_set_unrecognised_fallbacks`
acf7f19713
Oh, and terminal reflow works now.
Closes#2514 (but not #3864, that's a bit more tricky)
Otherwise the dynamic library is built also and find_library will prefer
that over the static one. That results in linking against the dynamic
library which will not be found after install.
This code:
8b3c399b6d/third-party/CMakeLists.txt (L130)
should prevent the above problem, but it doesn't hurt to be explicit.
So far luacheck's rockspec specified only the git protocol. Hence people
behind firewalls/proxies, that block port 9814, had trouble fetching this
dependency via luarocks.
The latest commit updated the rockspec to use either git or https. Thus common
workarounds like this are not needed anymore:
git config --global url."https://".insteadOf git://
References #3769.
Libuv and LuaJIT like to hide the actual compilation and linking
commands behind nice text. This change makes them spit out the actual
command line to help us with debugging issues that people are seeing.
Introduce ALLOW_EXISTING_SRC_DIR option, turned off by default.
The Homebrew formula, which downloads and extracts the third-party
dependency sources before starting the build, would turn this option
ON.
This effectively reverts 585e5d32a3
The pinning was done at a time when `lua_cliargs` caused test failures,
so an older version which didn't was pinned. We're now using the latest
version (2.5-1), so the cause of those failures were presumably fixed.
Recent luarocks adds support for these env vars:
http_proxy
https_proxy
no_proxy
Closes#2482
Changes since previous luarocks version (27 Aug 2014):
git log --oneline 0587afbb5fe8ceb2f2eea16f486bd6183bf02f29..HEAD
5d8a165 Merge pull request #371 from ignacio/proxies
4462ca5 Add `luarocks config` command for querying LuaRocks settings.
b80244b Merge branch 'master' of https://github.com/keplerproject/luarocks
dd6f0e7 Update lmathx used for testing Lua 5.3
70c7577 Merge pull request #366 from Tieske/windows_exitcode
11b8b48 fixes#365
0d071fa Back to scm
7bff020 Mark release 2.2.2
2f9c115 Merge branch 'master' of https://github.com/keplerproject/luarocks
9736020 Install .md files as docs
97b98bf Clip string.gsub results to just one when redacting url.
2a0a9fa Merge pull request #359 from ignacio/redact_verbose
968e963 Redact api tokens when using --verbose flag
9aa5d05 Update upload URL as well.
cda43ce Merge branch 'master' of https://github.com/keplerproject/luarocks
022c87d MoonRocks → LuaRocks.org transition complete!
7b6efb9 Trust the user :)
2c536b4 Deal with 'no_proxy' env var
f022fe0 Drop use of config.proxy
b6b6754 Merge pull request #354 from Tieske/pe_parser
460e42d update to version 0.3
2ee6bd7 Merge pull request #349 from ignacio/build_only_deps
15ad97b Address issues spotted in the review
6b350de Adds --only-deps flag to install command
6dd402b Adds new file (fetch/git_https.lua) to Makefile.setup.inc
46f8ad6 Merge pull request #350 from jszakmeister/add-git-https-support
989347e Add git+https support.
0f67be5 Adds --only-deps flag to the 'build' command.
0fe8556 Update function documentation, as suggested by @ignacio in #347.
0679559 Decided to step back in turn this into a warning. `luarocks list` on an empty ~/.luarocks is a valid use case.
40f9173 Fail when given an invalid tree.
6d5dfcd Fix crash on `luarocks --tree=/path list`. Closes#347.
1fcf354 Add test that checks for error in default sysconfig. See #346.
3ce554c Restore comment about second return, but put it in the right function. https://github.com/keplerproject/luarocks/pull/346#discussion_r28008668
0e3a052 Merge pull request #346 from Tieske/bad_config
c66a88e bail out on bad config files, fixes#228
79addc7 Continuing slowly. Distracted by code golf. :)
58fb6b9 Merge branch 'master' of https://github.com/keplerproject/luarocks
ed1f916 Starting to port test suite from Unix shell to Lua.
6f87c47 Merge pull request #343 from xpol/master
cbde573 And also hide the startup logo for RC.
5cb4aa7 Merge branch 'master' of https://github.com/keplerproject/luarocks
303cca7 Add AppVeyor badge
ad8ba47 Merge pull request #335 from ignacio/appveyor
a52b5ca Merge branch 'master' of https://github.com/keplerproject/luarocks
6251735 Add Coveralls coverage badge
2fcc0cc Add options to hide the MSVC tools' startup logo.
ff68e97 Fallback for platform variable
e31c46b Improved the CI scripts
050d656 Fix summary detection in long paragraphs
4ad1f1a Remove failing test. Try this some other time.
db81c2e Force package to be in cache.
303628a Add more simple tests.
8d6a9e3 Merge branch 'master' of https://github.com/keplerproject/luarocks
5b45de2 More small tests.
066cda4 Merge pull request #341 from keplerproject/add-travis
2639401 Make localhost a known host.
a549c6d Try not to block checking server identification.
7c8e527 Let's see if Travis allow sftp'ing to localhost.
98e0979 Merge branch 'master' of https://github.com/keplerproject/luarocks
5f293dd Remove debugging print.
ed02691 Add trivial tests for `luarocks upload`
b4ea2a1 Merge pull request #340 from xpol/master
b9789f3 Revert incorrect remove of cmake_generator support. Only windows (msvc) default cmake_generator are removed.
a19af6d luacov-coveralls overwrites luacov.report.out!
1b5bbfc luacov-coveralls did not exit with 0?
df08baf Run luacov-coveralls from $testing_dir
f3aaee7 Avoid tests that mess with the testing environment.
836898f Let's try Coveralls
b5244be Merge branch 'master' of https://github.com/keplerproject/luarocks
30430cf Don't overwrite --detailed when given by the user.
19ca56c Actually direct users to the bug tracker
57c838e Merge branch 'master' of https://github.com/keplerproject/luarocks
5495f3c A missing CWD returns "" for lfs.current_dir() on Ubuntu
db90cb4 Really test for missing parameters.
d3d74bf A missing CWD returns "" for fs.current_dir on Ubuntu...
a027595 Let's try harder to fail if CWD does not exist.
876d9c8 Fix inconsistency in --homepage flag in `luarocks doc` and `luarocks write_rockspec`.
294e08f Fix --lib flag (and my last commit goof...)
62d4e05 Fix tests: new flag parser detected invalid flags in the testsuite.
7f7c006 Add support for space in long option assignments.
68aa7ae Merge branch 'master' of https://github.com/keplerproject/luarocks
e869c09 Fail nicely if CWD does not exist. Fixes#147.
ae51a3c Fix confusing error when unpack fails due to network error
93cdd54 Adds integration with AppVeyor
28ade76 Fixes#332.
51ea074 Expose platform and processor to home config files.
a02a53a Merge branch 'master' of https://github.com/keplerproject/luarocks
4c96972 Don't use user tree when running as root. Fixes#303.
f15e49d Merge pull request #330 from mpeterv/hg-support
9567ac5 Merge pull request #329 from mpeterv/persist-refactor
20eb947 Improve hg support
cf19178 Refactor persist.save_from_table
3c7c472 Refactor persist.load_into_table
603b0ea Merge branch 'master' of https://github.com/keplerproject/luarocks
be3c52d Add extra smartness to configure to check that the user-given flag seems correct. Closes#293.
d820069 Merge pull request #326 from mpeterv/fix-redact-api
8739847 Merge branch 'master' of https://github.com/keplerproject/luarocks
5db7c54 Merge branch 'xpol-master'
7d22ee5 Open file in 'rb
90586f6 Merge branch 'master' of https://github.com/keplerproject/luarocks
bdf218b Remove commented code after remove cfg.cmake_generator.
b5e2539 Better cmake support.
df332f6 Fix url redacting when Luasocket is used
88a903a Add logo :)
6e21673 Try the one we have as `lua` first!
4e9a0e3 This is for Makefile.luarocks only.
ccab32f Merge branch 'new-makefile'
855259b New set of Makefiles for self-upgrade.
ff6fdfc Ignore more files.
92d6363 Make sure suffix is produced when installing via rock (see #323) and copy over site_config.lua, in case we're installing to a different prefix (see https://sourceforge.net/p/luarocks/mailman/message/33608257/)
dc5f200 Make it a bit more robust.
4347dc7 Redact API URL to hide API key.
650c8ae Back to our regularly scheduled programming
8649a4e Release LuaRocks 2.2.1
c7a704a Add test files that were not committed before.
463ee89 Don't crash when modules table is missing.
d110857 Use the system-installed stat.
0f9d259 Test success of patching in `unpack`. Closes#316. Includes test cases for the test suite! Yay!
9a9caf8 We're always using the internal patch module. See #316.
c9cc478 All 5.x versions of Lua share the same license.
92c7acb Clarify that runtime support is optional.
5f3d390 Don't crash when asking for help on invalid cmd.
46f2d25 Code cleanups suggested by luacheck.
7fe62f1 Remove unused assignment.
53e0c65 Direct users to the bug tracker
2013547 Support both --lua-version and --with-lua-version. Error messages were even already using it by accident!
48847a4 Support more file extensions as source files.
23afae6 Merge branch 'master' of https://github.com/keplerproject/luarocks
c54cbfc Fix behavior of `luarocks pack` on Windows. It was failing when a path contained spaces due to lack of quoting. Closes#308.
7f6320c Merge pull request #309 from mpeterv/unused_variables
500741f Removed some unused and global variables
113ada0 Merge branch 'master' of https://github.com/keplerproject/luarocks
9204178 Discard excess characters when a tool gives out an octal mode string that's too long. Fixes#53.
aa4e0d3 Merge pull request #298 from seclorum/master
9702239 Use updated LuaFileSystem for Lua 5.3
0f1c937 Updates for Lua 5.3 compatibility
8d6845e Make conversion more robust for Lua 5.3
d98c3e0 Make it more robust. (I _think_ win32 needs something similar, but there's the complication of drive letters so I won't touch it now without proper testing.)
8d588f9 Catch error if filename is a directory
1885a7f Improve error checking
f74346e Do not pack scm versions
cd99315 Fix search of lua interpreter. Closes#301.
4c503eb Update stdlib for 5.3 (thought I had this in the previous commit!)
c5501d4 Merge branch 'master' of https://github.com/keplerproject/luarocks
de654b3 Updates for Lua 5.3 support
4636244 use cprint version compatible with Lua 5.3
fc6d30d Update stdlib for Lua 5.3 compatibility
76e5515 Add Lua 5.3 to the test matrix
9ab9988 Add test that catches #228.
0ebdcd4 Updates to testing infrastructure (use new luasec, luacov)
e7f9680 Error out on bad config files. Alternative implementation to the one given by @Tieske, following discussion in #260. Closes#260. Closes#228.
02e8bbd Safer guards for OSX Deployment target selection..
c4558a3 OSX 10.10 Yosemite sw_vers update
db46b22 Apply change suggested by @siffiejoe. Thanks @catwell for catching this! Closes#295.
1a1c407 Add test for #295.
8bbf02e Make test suite detect crashes on tests that should fail gracefully.
7a7c124 Add check for Fedora systems. Closes#289.
723bf99 Isolate the convenience hack, for readability.
a35dd43 Silence complaints from `luarocks upload`. Closes#292.
af679a9 Fix typo. Closes#294.
453179d Provide a fallback for when the version number is 'scm', to avoid breaking Windows default paths (which assume something like c:\luarocks\2.2\ ) Closes#288.
88ea74e Make code more resilient.
0467eba Merge branch 'master' of https://github.com/keplerproject/luarocks
8278ed2 Add flag to enable/disable SSL cert check. We disabled SSL certificate checks for wget and curl a while ago, when we first added https repositories. We'll keep the check disabled by default for now, but this adds a config option, `check_certificates=true` that can be used in your config.lua.
af19063 Don't report WIP versions as releases.
d15e99f Merge pull request #285 from mpeterv/fix-lint
86ba23c Fix `luarocks lint`.
e5cd7a9 Add --outdated as a flag to `luarocks list`. A variation of the feature suggested in #282.
f0d66ae Support per-field version checking. This will allow us to add fields and bump rockspec version numbers in a well-behaved manner.
From here[1]:
1.1.4 2015-04-26
- move maintainer options from GNUmakefile to maint.mk
- compile with -O2 by default
1.1.3 2015-04-25
- fix permission error when installing into existing directory
(gh PR #7)
- relicense tools/*.c under MIT (gh #9)
- add change log in Changes
[1]: https://github.com/mauke/unibilium/compare/v1.1.2...v1.1.4
Changes since 2.0.3:
- Fix stack check in narrowing optimization.
- Fix Lua/C API typecheck error for special indexes.
- Fix string to number conversion.
- Fix lexer error for chunks without tokens.
- Don't compile IR_RETF after CALLT to ff with-side effects.
- Fix BC_UCLO/BC_JMP join optimization in Lua parser.
- Fix corner case in string to number conversion.
- Gracefully handle lua_error() for a suspended coroutine.
- Avoid error messages when building with Clang.
- Fix snapshot #0 handling for traces with a stack check on entry.
- Fix fused constant loads under high register pressure.
- Invalidate backpropagation cache after DCE.
- Fix ABC elimination.
- Fix debug info for main chunk of stripped bytecode.
- Fix FOLD rule for string.sub(s, ...) == k.
- Fix FOLD rule for STRREF of SNEW.
- Fix frame traversal while searching for error function.
- Prevent GC estimate miscalculation due to buffer growth.
- Prevent adding side traces for stack checks.
- Fix top slot calculation for snapshots with continuations.
- Fix check for reuse of SCEV results in FORL.
- Add PS Vita port.
- Fix compatibility issues with Illumos.
- Fix DragonFly build (unsupported).
- OpenBSD/x86: Better executable memory allocation for W^X mode.
- x86: Fix argument checks for ipairs() iterator.
- x86: lj_math_random_step() clobbers XMM regs on OSX Clang.
- x86: Fix code generation for unused result of math.random().
- x64: Allow building with LUAJIT_USE_SYSMALLOC and LUAJIT_USE_VALGRIND.
- x86/x64: Fix argument check for bit shifts.
- x86/x64: Fix code generation for fused test/arith ops.
- ARM: Fix write barrier check in BC_USETS.
- PPC: Fix red zone overflow in machine code generation.
- PPC: Don't use mcrxr on PPE.
- Various archs: Fix excess stack growth in interpreter.
- FFI: Fix FOLD rule for TOBIT + CONV num.u32.
- FFI: Prevent DSE across ffi.string().
- FFI: No meta fallback when indexing pointer to incomplete struct.
- FFI: Fix initialization of unions of subtypes.
- FFI: Fix cdata vs. non-cdata arithmetic and comparisons.
- FFI: Fix __index/__newindex metamethod resolution for ctypes.
- FFI: Fix compilation of reference field access.
- FFI: Fix frame traversal for backtraces with FFI callbacks.
- FFI: Fix recording of indexing a struct pointer ctype object itself.
- FFI: Allow non-scalar cdata to be compared for equality by address.
- FFI: Fix pseudo type conversions for type punning.
Taken from http://luajit.org/changes.html
- Update recipes to build with MSVC or cross compile in Unix with Mingw
- For recipes that need to be reused, wrap recipe in CMake function
using cmake_parse_arguments
- New directory .deps/host is the install root for HOST targets, the old
.deps/usr is used for TARGET
- In windows disable builds for terminal libraries and jemalloc
- Added cmake script CopyFilesGlob.cmake to copy files using glob
cmake -DFROM_GLOB=*.h -DTO=/usr/include -P CopyFilesGlob.cmake
- New CMake variables HOSTDEPS_* can be used in cross compile recipes.
Except when the target is UNIX, since that would break 32bit builds
in 64bit Unix systems using the Travis 32bit toolchain
We didn't have ansicolors pegged, and several others were below the
minimum required versions causing busted to go out and grab newer
versions anyways. Let's peg them all to useful versions.
Libtermkey can be linked against unibilium or curses. For the bundled
dependencies Neovim links against static versions of libtermkey and
unibilium, after building both libraries.
However libtermkey requires pkg-config to be installed in order to detect
and link against unibilium, otherwise it falls back to curses by default.
In systems where pkg-config is not installed building Neovim against the
bundled libtermkey caused a linking error (#2484).
So pkg-config needs to be installed for the bundled libtermkey to build
properly.
* Set JEMALLOC_NO_DEMANGLE to be able to use `je_*` functions,
regardless of how jemalloc was compiled (--with-jemalloc-prefix)
* Show jemalloc information in Neovim's version output.
Resolve#2449.
- When not running the unit tests, building the third-party busted,
nvim-client and other dependencies can be skipped by passing
-DUSE_BUNDLED_BUSTED=FALSE to the third-party project.
Jemalloc will be used if the cmake option `USE_JEMALLOC` is enabled(which is the
default). To avoid trouble with clang's ASAN, it is disabled by default if the
`SANITIZE` option is enabled.
Since jemalloc has thread cache for small objects, it fills the gap created by
removing klib memory pools.
The `xstrdup` funciton(memory.c) had to be reimplemented on top of `xmalloc` to
make it work with a custom allocator.
This requires a couple of extra modules that are not installed by
default, and it requires capturing stdout of the tests--otherwise CMake
output is intermixed with the XML output of busted.
This is a variant of the utfTerminal output handler that will:
- Output the file name before each suite is executed
- Output the test name before each test is executed
This will make it simpler to identify crashing/hanging tests.
* Force building Lua rocks instead of trying to install a binary.
* Set the CC and LD environment variables to pass
CMAKE_C_COMPILER_ARG1 (contains `-m32` for 32-bit builds)
to `luarocks build`.
busted depends on a number of libraries that sometimes introduce crashing bugs.
The new custom target makes sure only stable versions of those dependencies are
installed.
It turns out that `file(DOWNLOAD ...)` is not very user friendly with
it's error message, and only supports MD5 on v2.8.10 of CMake (the
default for Ubuntu 12.04). If CMake is built without SSL support,
users are left hanging with a message that the hashes don't match.
It turns out that `file(SHA1 ...)` exists in v2.8.10, and we
can use that to compute the hash ourselves. So this splits the hash
checking into a separate step, where we can provide some additional
advice if the SHA1 is the hash for an empty file. Additionally, it also
allows us to drop the MD5 hashes and maintain only SHA1 hashes for our
dependencies.
The issue is that libuv decides to use ${PREFIX}/lib64 as the lib
directory instead of ${PREFIX}/lib. Since we're just installing it to
provide access to the static library, let's just force the libdir to be
${PREFIX}/lib.
It appears that commit 393c1c59a27591d705648919b2d7fb921cba37bc (unix:
set non-block mode in uv_{pipe,tcp,udp}_open) has broken Neovim's
drawing under OSX. Let's revert to 1.2.0 until we can figure out what
is happening and get it fixed.
The latest version works around a libuv bug that can leave zombie nvim processes
despite the event loop being properly cleaned up. This can lead to functional
tests being aborted depending on the maximum number of child processes
configured for a platform.
- third-party is built under .deps by default instead of using its own
${CMAKE_BINARY_DIR}, move this default setting out of the cmake
settings and into the Makefile.
- As a consequence the workflow of building third-party using CMake
should feel more natural, avoid the additional folder or setting
DEPS_DIR from the command line.
- This commit does not change the default behaviour when calling the
Makefile wrapper.
* References to old repository found through grepping
* Replace references from github.com/joyent/libuv to github.com/libuv/libuv
* Fix previous commit by not including whitespace changes
For issue #1560.
This is useful when trying to bisect an issue in a dependency, and we
want to pull from a specific commit but don't want to have to download
and determine the sha1sum and md5sum of the tarball.
- If possble try to abstract away from Make, and use cmake --build
- third-party still needs to find Make to build some components
- Removed search for Make from CMakeLists.txt
* for CMake < 3.0 --build has no color output
When building under Homebrew, we want to let Homebrew manage
downloading and extracting the tarballs. See PR #1411.
Also make sure to skip only if directory is not empty. Fix#1433.
Also, the command was removing only .so versions of the library, and not
the the `.dylib` under Mac OS X, and in a way that it would fail if the
files weren't present.
Instead, let's delegate to a CMake script--to get the portability--and
use a glob to detect and remove the shared versions of the library.
Hopefully, this will become unnecessary as msgpack's build becomes more
full-featured, and we can just tell it to build the static version
instead.
Using msgpack v5 will let nvim be more compatible with msgpack libraries for
other platforms.
This also replaces "raw" references by "bin" which is the new name for msgpack
binary data type
Should fix the following travis error:
/usr/bin/ld: /opt/neovim-deps/lib/libluajit-5.1.a(lj_err.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/opt/neovim-deps/lib/libluajit-5.1.a: could not read symbols: Bad value
Apparently busted 1.11.0 is broken(https://github.com/Olivine-Labs/busted/issues/236)
in a way that is causing the unit tests to fail. This pins the version to 1.10.0
and also fixes a wrong variable set when msgpack was added as a dependency
As of v0.11.23 libuv's uv_timer_cb, uv_async_cb, uv_prepare_cb, uv_check_cb and
uv_idle_cb no longer require a status parameter (this went unused in the first
place).
Bump third-party dependency `libuv` up to 0.11.23 and remove the extra
parameters from the callbacks.
Underneath the hood, CMake uses libcurl and libcurl has had a number of
issues regarding progress feedback. In one sample run against Travis
CI, we ended up with nearly 3,000 lines of progress output for a single
download.
Unfortunately, CMake doesn't have the download and extract steps
separate, so we have some extra work that we have to do. Much of the
content was taken from the ExternalProject.cmake and it's template for
generating the content of the download and extract CMake files.
This achieves several goals:
* Less reliance on scripts so we have better portability to Windows
(though we still have a ways to go for proper Windows support).
Luajit, luarocks, moonscript, and busted are all installed via CMake
now.
* Trying to make use of pkg-config to get the correct libraries. The
latest libuv is still broken in this regard, but we'll at least be in
a position to use it.
* Allow the use of Ninja or make. The former runs faster in many
environments, and automatically makes use of parallel builds.
This also allows for system installed dependencies--though not through
the Makefile just yet--and adds support for FreeBSD.
This also make us build libuv and luajit as static libraries only, since
we're only concerned about having static libraries for our bundled
dependencies.
Add a brief README on the purpose of the third-party directory and some
suggestions for how to manage it. The neovim bigwigs may want to
re-draft the README.