diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-06-20 10:28:49 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-01 15:51:13 -0300 |
commit | 4c1c170b9d344b6c069c8e6df5798f6e0bd63966 (patch) | |
tree | 21b0061a4c41434239320db45749ec5b4086be4c /spec/util | |
parent | 50cd8ea8941d38678e8e6cf82065108dc3217d91 (diff) | |
download | luarocks-4c1c170b9d344b6c069c8e6df5798f6e0bd63966.tar.gz luarocks-4c1c170b9d344b6c069c8e6df5798f6e0bd63966.tar.bz2 luarocks-4c1c170b9d344b6c069c8e6df5798f6e0bd63966.zip |
cfg, cmd: major reorganization
* `--lua-dir` flag, specifying a prefix for the Lua installation to
be used. This reconfigures LuaRocks entirely, including allowing
a LuaRocks which is itself running using one Lua 5.x version to
manage packages for a different Lua 5.y version. The resulting
configuration can be checked with `luarocks config --lua-dir=<path>`.
* requiring `luarocks.core.cfg` no longer has side-effects
* configuration now needs to be initialized with `cfg.init([lua_data])`,
where `lua_data` is a table with the configuration of the VM:
* `lua_version` - e.g. `"5.3"`
* `luajit_version` - e.g. `"2.1.0-beta3"`
* `lua_interpreter` - e.g. `"lua5.3"`
* `lua_bindir` - e.g. `"/usr/local/bin"`
* `lua_libdir` - e.g. `"/usr/local/lib"`
* `lua_incdir` - e.g. `"/usr/local/include/lua-5.3"`
* `cfg.init` can be called multiple times, reconfiguring the global state.
This is important since `luarocks.loader` now calls it, and the `--lua-dir`
command line can override the configuration and reconfigure LuaRocks.
* `site_config_*` is no more: LuaRocks is no longer dependent on a properly-written
site_config file. Instead, it can *optionally* use `luarocks.core.hardcoded`
for hardcoded values, or detect its configuration at runtime, based on
OS detection, arg[-1] or command-line flags.
* reduction of moving parts in the configuration:
* `cfg.platforms` is no longer a globally-visible table; instead, `cfg`
provides an API of read-only functions: `is_platform`, `each_platform`,
`print_platforms`.
* `cfg.*_proxy` options are no longer configured via the config files,
but rather via the standard `*_proxy` environment variables.
* `"windows"` is now the more general platform name of the Windows family.
This is technically a breaking change but I don't expect it to cause
problems with real-world rockspecs.
* internal code reorganization in `luarocks.cmd` module
Diffstat (limited to 'spec/util')
-rw-r--r-- | spec/util/test_env.lua | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/spec/util/test_env.lua b/spec/util/test_env.lua index 6d8a962c..1d4e98d8 100644 --- a/spec/util/test_env.lua +++ b/spec/util/test_env.lua | |||
@@ -40,6 +40,10 @@ function test_env.exists(path) | |||
40 | return lfs.attributes(path, "mode") ~= nil | 40 | return lfs.attributes(path, "mode") ~= nil |
41 | end | 41 | end |
42 | 42 | ||
43 | function test_env.file_if_exists(path) | ||
44 | return lfs.attributes(path, "mode") and path | ||
45 | end | ||
46 | |||
43 | --- Quote argument for shell processing. Fixes paths on Windows. | 47 | --- Quote argument for shell processing. Fixes paths on Windows. |
44 | -- Adds double quotes and escapes. Based on function in fs/win32.lua. | 48 | -- Adds double quotes and escapes. Based on function in fs/win32.lua. |
45 | -- @param arg string: Unquoted argument. | 49 | -- @param arg string: Unquoted argument. |
@@ -251,7 +255,15 @@ function test_env.set_args() | |||
251 | end | 255 | end |
252 | end | 256 | end |
253 | end | 257 | end |
258 | print(test_env.TEST_TARGET_OS) | ||
259 | end | ||
260 | |||
261 | if test_env.TEST_TARGET_OS == "windows" then | ||
262 | test_env.lib_extension = "dll" | ||
263 | else | ||
264 | test_env.lib_extension = "so" | ||
254 | end | 265 | end |
266 | |||
255 | return true | 267 | return true |
256 | end | 268 | end |
257 | 269 | ||
@@ -394,12 +406,8 @@ local function create_env(testing_paths) | |||
394 | env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_sys_tree .. "/share/lua/" .. luaversion_short .. "/?.lua;" | 406 | env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_sys_tree .. "/share/lua/" .. luaversion_short .. "/?.lua;" |
395 | env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_sys_tree .. "/share/lua/".. luaversion_short .. "/?/init.lua;" | 407 | env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.testing_sys_tree .. "/share/lua/".. luaversion_short .. "/?/init.lua;" |
396 | env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.src_dir .. "/?.lua;" | 408 | env_variables.LUA_PATH = env_variables.LUA_PATH .. testing_paths.src_dir .. "/?.lua;" |
397 | local lib_extension = "so" | 409 | env_variables.LUA_CPATH = testing_paths.testing_tree .. "/lib/lua/" .. luaversion_short .. "/?." .. test_env.lib_extension .. ";" |
398 | if test_env.TEST_TARGET_OS == "windows" then | 410 | .. testing_paths.testing_sys_tree .. "/lib/lua/" .. luaversion_short .. "/?." .. test_env.lib_extension .. ";" |
399 | lib_extension = "dll" | ||
400 | end | ||
401 | env_variables.LUA_CPATH = testing_paths.testing_tree .. "/lib/lua/" .. luaversion_short .. "/?." .. lib_extension .. ";" | ||
402 | .. testing_paths.testing_sys_tree .. "/lib/lua/" .. luaversion_short .. "/?." .. lib_extension .. ";" | ||
403 | env_variables.PATH = os.getenv("PATH") .. ";" .. testing_paths.testing_tree .. "/bin;" .. testing_paths.testing_sys_tree .. "/bin;" | 411 | env_variables.PATH = os.getenv("PATH") .. ";" .. testing_paths.testing_tree .. "/bin;" .. testing_paths.testing_sys_tree .. "/bin;" |
404 | 412 | ||
405 | return env_variables | 413 | return env_variables |
@@ -584,8 +592,7 @@ function test_env.setup_specs(extra_rocks) | |||
584 | 592 | ||
585 | package.path = test_env.env_variables.LUA_PATH | 593 | package.path = test_env.env_variables.LUA_PATH |
586 | 594 | ||
587 | test_env.platform = execute_output(test_env.testing_paths.lua .. " -e \"print(require('luarocks.core.cfg').arch)\"", false, test_env.env_variables) | 595 | test_env.platform = execute_output(test_env.testing_paths.lua .. " -e \"cfg = require('luarocks.core.cfg'); cfg.init(); print(cfg.arch)\"", false, test_env.env_variables) |
588 | test_env.lib_extension = execute_output(test_env.testing_paths.lua .. " -e \"print(require('luarocks.core.cfg').lib_extension)\"", false, test_env.env_variables) | ||
589 | test_env.wrapper_extension = test_env.TEST_TARGET_OS == "windows" and ".bat" or "" | 596 | test_env.wrapper_extension = test_env.TEST_TARGET_OS == "windows" and ".bat" or "" |
590 | test_env.md5sums = create_md5sums(test_env.testing_paths) | 597 | test_env.md5sums = create_md5sums(test_env.testing_paths) |
591 | test_env.setup_done = true | 598 | test_env.setup_done = true |
@@ -737,11 +744,21 @@ local function install_luarocks(install_env_vars) | |||
737 | assert(execute_bool("install.bat /LUA " .. testing_paths.luadir .. " " .. compiler_flag .. " /P " .. testing_paths.testing_lrprefix .. " /NOREG /NOADMIN /F /Q /CONFIG " .. testing_paths.testing_lrprefix .. "/etc/luarocks", false, install_env_vars)) | 744 | assert(execute_bool("install.bat /LUA " .. testing_paths.luadir .. " " .. compiler_flag .. " /P " .. testing_paths.testing_lrprefix .. " /NOREG /NOADMIN /F /Q /CONFIG " .. testing_paths.testing_lrprefix .. "/etc/luarocks", false, install_env_vars)) |
738 | assert(execute_bool(testing_paths.win_tools .. "/cp " .. testing_paths.testing_lrprefix .. "/lua/luarocks/core/site_config* " .. testing_paths.src_dir .. "/luarocks/core")) | 745 | assert(execute_bool(testing_paths.win_tools .. "/cp " .. testing_paths.testing_lrprefix .. "/lua/luarocks/core/site_config* " .. testing_paths.src_dir .. "/luarocks/core")) |
739 | else | 746 | else |
740 | local configure_cmd = "./configure --with-lua=" .. testing_paths.luadir .. " --prefix=" .. testing_paths.testing_lrprefix | 747 | local incfile = test_env.file_if_exists(testing_paths.luadir .. "/include/lua.h") |
741 | assert(execute_bool(configure_cmd, false, install_env_vars)) | 748 | or test_env.file_if_exists(testing_paths.luadir .. "/include/lua/" .. test_env.lua_version .. "/lua.h") |
742 | assert(execute_bool("make clean", false, install_env_vars)) | 749 | or test_env.file_if_exists(testing_paths.luadir .. "/include/lua" .. test_env.lua_version .. "/lua.h") |
743 | assert(execute_bool("make src/luarocks/core/site_config_"..test_env.lua_version:gsub("%.", "_")..".lua", false, install_env_vars)) | 750 | local incdir = assert(incfile):gsub("/lua.h$", "") |
744 | assert(execute_bool("make dev", false, install_env_vars)) | 751 | |
752 | local lines = { | ||
753 | "return {", | ||
754 | ("SYSCONFDIR = %q,"):format(testing_paths.testing_lrprefix .. "/etc/luarocks"), | ||
755 | ("LUA_DIR = %q,"):format(testing_paths.luadir), | ||
756 | ("LUA_INCDIR = %q,"):format(incdir), | ||
757 | ("LUA_LIBDIR = %q,"):format(testing_paths.luadir .. "/lib"), | ||
758 | ("LUA_BINDIR = %q,"):format(testing_paths.luadir .. "/bin"), | ||
759 | "}", | ||
760 | } | ||
761 | test_env.write_file("src/luarocks/core/hardcoded.lua", table.concat(lines, "\n") .. "\n") | ||
745 | end | 762 | end |
746 | print("LuaRocks installed correctly!") | 763 | print("LuaRocks installed correctly!") |
747 | end | 764 | end |