aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2019-07-26 19:11:21 -0300
committerHisham Muhammad <hisham@gobolinux.org>2019-07-26 23:58:19 -0300
commit1d3bb56b309ce0463249852f901147157f34adfa (patch)
treec55817e90dbc51e45b8ecb8f59581c3f00047a10
parent4dd439f804844ce82c1519eede0e9201db72ba77 (diff)
downloadluarocks-1d3bb56b309ce0463249852f901147157f34adfa.tar.gz
luarocks-1d3bb56b309ce0463249852f901147157f34adfa.tar.bz2
luarocks-1d3bb56b309ce0463249852f901147157f34adfa.zip
cfg: avoid setting LUA_LIBDIR and LUA_INCDIR too early
-rw-r--r--spec/build_spec.lua3
-rw-r--r--src/luarocks/build.lua9
-rw-r--r--src/luarocks/cmd.lua15
-rw-r--r--src/luarocks/cmd/config.lua3
-rw-r--r--src/luarocks/cmd/init.lua2
-rw-r--r--src/luarocks/core/cfg.lua22
-rw-r--r--src/luarocks/deps.lua48
7 files changed, 59 insertions, 43 deletions
diff --git a/spec/build_spec.lua b/spec/build_spec.lua
index 2cfdeace..41c169d9 100644
--- a/spec/build_spec.lua
+++ b/spec/build_spec.lua
@@ -507,7 +507,8 @@ describe("LuaRocks build tests #unit", function()
507 runner.tick = true 507 runner.tick = true
508 cfg.init() 508 cfg.init()
509 fs.init() 509 fs.init()
510 deps.check_lua(cfg.variables) 510 deps.check_lua_incdir(cfg.variables)
511 deps.check_lua_libdir(cfg.variables)
511 end) 512 end)
512 513
513 teardown(function() 514 teardown(function()
diff --git a/src/luarocks/build.lua b/src/luarocks/build.lua
index c2dd4439..2ac7dd3a 100644
--- a/src/luarocks/build.lua
+++ b/src/luarocks/build.lua
@@ -109,11 +109,18 @@ local function process_dependencies(rockspec, opts)
109 end 109 end
110 end 110 end
111 111
112 local ok, err, errcode = deps.check_lua(rockspec.variables) 112 local ok, err, errcode = deps.check_lua_incdir(rockspec.variables)
113 if not ok then 113 if not ok then
114 return nil, err, errcode 114 return nil, err, errcode
115 end 115 end
116 116
117 if cfg.link_lua_explicitly then
118 local ok, err, errcode = deps.check_lua_libdir(rockspec.variables)
119 if not ok then
120 return nil, err, errcode
121 end
122 end
123
117 if opts.deps_mode == "none" then 124 if opts.deps_mode == "none" then
118 util.warning("skipping dependency checks.") 125 util.warning("skipping dependency checks.")
119 return true 126 return true
diff --git a/src/luarocks/cmd.lua b/src/luarocks/cmd.lua
index 4397ffbd..1ead6c4b 100644
--- a/src/luarocks/cmd.lua
+++ b/src/luarocks/cmd.lua
@@ -178,12 +178,12 @@ do
178 do 178 do
179 local function find_project_dir(project_tree) 179 local function find_project_dir(project_tree)
180 if project_tree then 180 if project_tree then
181 return project_tree:gsub("[/\\][^/\\]+$", "") 181 return project_tree:gsub("[/\\][^/\\]+$", ""), true
182 else 182 else
183 local try = "." 183 local try = "."
184 for _ = 1, 10 do -- FIXME detect when root dir was hit instead 184 for _ = 1, 10 do -- FIXME detect when root dir was hit instead
185 if util.exists(try .. "/.luarocks") and util.exists(try .. "/lua_modules") then 185 if util.exists(try .. "/.luarocks") and util.exists(try .. "/lua_modules") then
186 return try 186 return try, false
187 elseif util.exists(try .. "/.luarocks-no-project") then 187 elseif util.exists(try .. "/.luarocks-no-project") then
188 break 188 break
189 end 189 end
@@ -265,8 +265,17 @@ do
265 end 265 end
266 266
267 detect_config_via_flags = function(flags) 267 detect_config_via_flags = function(flags)
268 local project_dir = find_project_dir(flags["project-tree"]) 268 local project_dir, given = find_project_dir(flags["project-tree"])
269 local detected = detect_lua_via_flags(flags, project_dir) 269 local detected = detect_lua_via_flags(flags, project_dir)
270 if flags["lua-version"] then
271 detected.given_lua_version = flags["lua-version"]
272 end
273 if flags["lua-dir"] then
274 detected.given_lua_dir = flags["lua-dir"]
275 end
276 if given then
277 detected.given_project_dir = project_dir
278 end
270 detected.project_dir = project_dir 279 detected.project_dir = project_dir
271 return detected 280 return detected
272 end 281 end
diff --git a/src/luarocks/cmd/config.lua b/src/luarocks/cmd/config.lua
index e9b2fef4..b3cb5e07 100644
--- a/src/luarocks/cmd/config.lua
+++ b/src/luarocks/cmd/config.lua
@@ -234,7 +234,8 @@ end
234--- Driver function for "config" command. 234--- Driver function for "config" command.
235-- @return boolean: True if succeeded, nil on errors. 235-- @return boolean: True if succeeded, nil on errors.
236function config_cmd.command(flags, var, val) 236function config_cmd.command(flags, var, val)
237 deps.check_lua(cfg.variables) 237 deps.check_lua_incdir(cfg.variables)
238 deps.check_lua_libdir(cfg.variables)
238 239
239 -- deprecated flags 240 -- deprecated flags
240 if flags["lua-incdir"] then 241 if flags["lua-incdir"] then
diff --git a/src/luarocks/cmd/init.lua b/src/luarocks/cmd/init.lua
index 88de283b..60aa4f82 100644
--- a/src/luarocks/cmd/init.lua
+++ b/src/luarocks/cmd/init.lua
@@ -70,7 +70,7 @@ function init.command(flags, name, version)
70 if not cfg.lua_found then 70 if not cfg.lua_found then
71 return nil, "Lua installation is not found." 71 return nil, "Lua installation is not found."
72 end 72 end
73 local ok, err = deps.check_lua(cfg.variables) 73 local ok, err = deps.check_lua_incdir(cfg.variables)
74 if not ok then 74 if not ok then
75 return nil, err 75 return nil, err
76 end 76 end
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua
index 8edd5f63..008ae7dc 100644
--- a/src/luarocks/core/cfg.lua
+++ b/src/luarocks/core/cfg.lua
@@ -514,8 +514,6 @@ local cfg = {}
514-- environment. All fields below are optional: 514-- environment. All fields below are optional:
515-- * lua_version (in x.y format, e.g. "5.3") 515-- * lua_version (in x.y format, e.g. "5.3")
516-- * lua_bindir (e.g. "/usr/local/bin") 516-- * lua_bindir (e.g. "/usr/local/bin")
517-- * lua_incdir (e.g. "/usr/local/include/lua5.3/")
518-- * lua_libdir(e.g. "/usr/local/lib")
519-- * lua_dir (e.g. "/usr/local") 517-- * lua_dir (e.g. "/usr/local")
520-- * lua_interpreter (e.g. "lua-5.3") 518-- * lua_interpreter (e.g. "lua-5.3")
521-- * project_dir (a string with the path of the project directory 519-- * project_dir (a string with the path of the project directory
@@ -533,8 +531,6 @@ function cfg.init(detected, warning)
533 local lua_version = detected.lua_version or hardcoded.LUA_VERSION or _VERSION:sub(5) 531 local lua_version = detected.lua_version or hardcoded.LUA_VERSION or _VERSION:sub(5)
534 local lua_interpreter = detected.lua_interpreter or hardcoded.LUA_INTERPRETER or (arg and arg[-1] and arg[-1]:gsub(".*[\\/]", "")) or (is_windows and "lua.exe" or "lua") 532 local lua_interpreter = detected.lua_interpreter or hardcoded.LUA_INTERPRETER or (arg and arg[-1] and arg[-1]:gsub(".*[\\/]", "")) or (is_windows and "lua.exe" or "lua")
535 local lua_bindir = detected.lua_bindir or hardcoded.LUA_BINDIR or (arg and arg[-1] and arg[-1]:gsub("[\\/][^\\/]+$", "")) 533 local lua_bindir = detected.lua_bindir or hardcoded.LUA_BINDIR or (arg and arg[-1] and arg[-1]:gsub("[\\/][^\\/]+$", ""))
536 local lua_incdir = detected.lua_incdir or hardcoded.LUA_INCDIR
537 local lua_libdir = detected.lua_libdir or hardcoded.LUA_LIBDIR
538 local lua_dir = detected.lua_dir or hardcoded.LUA_DIR or (lua_bindir and lua_bindir:gsub("[\\/]bin$", "")) 534 local lua_dir = detected.lua_dir or hardcoded.LUA_DIR or (lua_bindir and lua_bindir:gsub("[\\/]bin$", ""))
539 local project_dir = (not hardcoded.FORCE_CONFIG) and detected.project_dir 535 local project_dir = (not hardcoded.FORCE_CONFIG) and detected.project_dir
540 536
@@ -558,8 +554,8 @@ function cfg.init(detected, warning)
558 cfg.variables = { 554 cfg.variables = {
559 LUA_DIR = lua_dir, 555 LUA_DIR = lua_dir,
560 LUA_BINDIR = lua_bindir, 556 LUA_BINDIR = lua_bindir,
561 LUA_INCDIR = lua_incdir, 557 LUA_LIBDIR = hardcoded.LUA_LIBDIR,
562 LUA_LIBDIR = lua_libdir, 558 LUA_INCDIR = hardcoded.LUA_INCDIR,
563 } 559 }
564 560
565 cfg.init = init 561 cfg.init = init
@@ -668,14 +664,14 @@ function cfg.init(detected, warning)
668 -- Let's finish up the cfg table. 664 -- Let's finish up the cfg table.
669 ---------------------------------------- 665 ----------------------------------------
670 666
671 -- Settings detected or given via the CLI (i.e. --lua-dir) take precedence over config files: 667 -- Settings given via the CLI (i.e. --lua-dir) take precedence over config files.
672 cfg.project_dir = project_dir 668 cfg.project_dir = detected.given_project_dir or project_dir
673 cfg.lua_version = detected.lua_version or cfg.lua_version 669 cfg.lua_version = detected.given_lua_version or lua_version or cfg.lua_version
670 cfg.variables.LUA_DIR = detected.given_lua_dir or cfg.variables.LUA_DIR or lua_dir
671
674 cfg.lua_interpreter = detected.lua_interpreter or cfg.lua_interpreter 672 cfg.lua_interpreter = detected.lua_interpreter or cfg.lua_interpreter
675 cfg.variables.LUA_BINDIR = detected.lua_bindir or cfg.variables.LUA_BINDIR or lua_bindir 673
676 cfg.variables.LUA_INCDIR = detected.lua_incdir or cfg.variables.LUA_INCDIR or lua_incdir 674 cfg.variables.LUA_BINDIR = cfg.variables.LUA_BINDIR or lua_bindir
677 cfg.variables.LUA_LIBDIR = detected.lua_libdir or cfg.variables.LUA_LIBDIR or lua_libdir
678 cfg.variables.LUA_DIR = detected.lua_dir or cfg.variables.LUA_DIR or lua_dir
679 675
680 -- Build a default list of rocks trees if not given 676 -- Build a default list of rocks trees if not given
681 if cfg.rocks_trees == nil then 677 if cfg.rocks_trees == nil then
diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua
index 9ea14881..9ee21772 100644
--- a/src/luarocks/deps.lua
+++ b/src/luarocks/deps.lua
@@ -531,7 +531,7 @@ local function find_lua_incdir(prefix, luaver, luajitver)
531 return nil 531 return nil
532end 532end
533 533
534function deps.check_lua(vars) 534function deps.check_lua_incdir(vars)
535 local ljv = util.get_luajit_version() 535 local ljv = util.get_luajit_version()
536 536
537 if (not vars.LUA_INCDIR) and vars.LUA_DIR then 537 if (not vars.LUA_INCDIR) and vars.LUA_DIR then
@@ -541,30 +541,32 @@ function deps.check_lua(vars)
541 end 541 end
542 end 542 end
543 543
544 if cfg.link_lua_explicitly then 544 return true
545 local shortv = cfg.lua_version:gsub("%.", "") 545end
546 local libnames = { 546
547 "lua" .. cfg.lua_version, 547function deps.check_lua_libdir(vars)
548 "lua" .. shortv, 548 local ljv = util.get_luajit_version()
549 "lua-" .. cfg.lua_version, 549
550 "lua-" .. shortv, 550 local shortv = cfg.lua_version:gsub("%.", "")
551 "lua", 551 local libnames = {
552 } 552 "lua" .. cfg.lua_version,
553 if ljv then 553 "lua" .. shortv,
554 table.insert(libnames, 1, "luajit-" .. cfg.lua_version) 554 "lua-" .. cfg.lua_version,
555 end 555 "lua-" .. shortv,
556 local cache = {} 556 "lua",
557 for _, libname in ipairs(libnames) do 557 }
558 local ok = check_external_dependency("LUA", { library = libname }, vars, "build", cache) 558 if ljv then
559 if ok then 559 table.insert(libnames, 1, "luajit-" .. cfg.lua_version)
560 vars.LUALIB = vars.LUA_LIBDIR_FILE 560 end
561 return true 561 local cache = {}
562 end 562 for _, libname in ipairs(libnames) do
563 local ok = check_external_dependency("LUA", { library = libname }, vars, "build", cache)
564 if ok then
565 vars.LUALIB = vars.LUA_LIBDIR_FILE
566 return true
563 end 567 end
564 return nil, "Failed finding Lua library. You may need to configure LUA_LIBDIR.", "dependency"
565 end 568 end
566 569 return nil, "Failed finding Lua library. You may need to configure LUA_LIBDIR.", "dependency"
567 return true
568end 570end
569 571
570local valid_deps_modes = { 572local valid_deps_modes = {