aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2024-02-23 20:59:47 -0300
committerHisham Muhammad <hisham@gobolinux.org>2024-02-25 23:35:01 -0300
commitb65f5304f224ce7f9edd0faa2bbd152dc8f8ddf2 (patch)
treeec5430da4a553951bb3571e2f97c6270e681403f
parent2c4ff5240bf298fec07749f5984de2f08b8736ec (diff)
downloadluarocks-b65f5304f224ce7f9edd0faa2bbd152dc8f8ddf2.tar.gz
luarocks-b65f5304f224ce7f9edd0faa2bbd152dc8f8ddf2.tar.bz2
luarocks-b65f5304f224ce7f9edd0faa2bbd152dc8f8ddf2.zip
fix: if --lua-* flags are given, don't use the hardcoded paths
Thanks @Frityet for the help with troubleshooting! Fixes #1611
-rw-r--r--src/luarocks/cmd.lua11
-rw-r--r--src/luarocks/core/cfg.lua30
2 files changed, 26 insertions, 15 deletions
diff --git a/src/luarocks/cmd.lua b/src/luarocks/cmd.lua
index 30293d6b..e8f05575 100644
--- a/src/luarocks/cmd.lua
+++ b/src/luarocks/cmd.lua
@@ -192,15 +192,8 @@ local function search_lua(lua_version, verbose, search_at)
192 local path_sep = (package.config:sub(1, 1) == "\\" and ";" or ":") 192 local path_sep = (package.config:sub(1, 1) == "\\" and ";" or ":")
193 local all_tried = {} 193 local all_tried = {}
194 for bindir in (os.getenv("PATH") or ""):gmatch("[^"..path_sep.."]+") do 194 for bindir in (os.getenv("PATH") or ""):gmatch("[^"..path_sep.."]+") do
195 local parentdir = dir.path((bindir:gsub("[\\/][^\\/]+[\\/]?$", ""))) 195 local searchdir = (bindir:gsub("[\\/]+bin[\\/]?$", ""))
196 local detected, tried = util.find_lua(parentdir, lua_version) 196 local detected, tried = util.find_lua(searchdir, lua_version)
197 if detected then
198 return detected
199 else
200 table.insert(all_tried, tried)
201 end
202 bindir = dir.path(bindir)
203 detected = util.find_lua(bindir, lua_version)
204 if detected then 197 if detected then
205 return detected 198 return detected
206 else 199 else
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua
index b991f581..90e52150 100644
--- a/src/luarocks/core/cfg.lua
+++ b/src/luarocks/core/cfg.lua
@@ -611,19 +611,37 @@ function cfg.init(detected, warning)
611 611
612 -- Use detected values as defaults, overridable via config files or CLI args 612 -- Use detected values as defaults, overridable via config files or CLI args
613 613
614 cfg.lua_version = detected.lua_version or hardcoded.LUA_VERSION or _VERSION:sub(5) 614 local hardcoded_lua = hardcoded.LUA
615 local hardcoded_lua_dir = hardcoded.LUA_DIR
616 local hardcoded_lua_bindir = hardcoded.LUA_BINDIR
617 local hardcoded_lua_incdir = hardcoded.LUA_INCDIR
618 local hardcoded_lua_libdir = hardcoded.LUA_LIBDIR
619 local hardcoded_lua_version = hardcoded.LUA_VERSION or _VERSION:sub(5)
620
621 -- if --lua-version or --lua-dir are passed from the CLI,
622 -- don't use the hardcoded paths at all
623 if detected.given_lua_version or detected.given_lua_dir then
624 hardcoded_lua = nil
625 hardcoded_lua_dir = nil
626 hardcoded_lua_bindir = nil
627 hardcoded_lua_incdir = nil
628 hardcoded_lua_libdir = nil
629 hardcoded_lua_version = nil
630 end
631
632 cfg.lua_version = detected.lua_version or hardcoded_lua_version
615 cfg.project_dir = (not hardcoded.FORCE_CONFIG) and detected.project_dir 633 cfg.project_dir = (not hardcoded.FORCE_CONFIG) and detected.project_dir
616 634
617 do 635 do
618 local lua = detected.lua or hardcoded.LUA 636 local lua = detected.lua or hardcoded_lua
619 local lua_bindir = detected.lua_bindir or hardcoded.LUA_BINDIR 637 local lua_dir = detected.lua_dir or hardcoded_lua_dir
620 local lua_dir = detected.lua_dir or hardcoded.LUA_DIR 638 local lua_bindir = detected.lua_bindir or hardcoded_lua_bindir
621 cfg.variables = { 639 cfg.variables = {
622 LUA = lua, 640 LUA = lua,
623 LUA_DIR = lua_dir, 641 LUA_DIR = lua_dir,
624 LUA_BINDIR = lua_bindir, 642 LUA_BINDIR = lua_bindir,
625 LUA_LIBDIR = hardcoded.LUA_LIBDIR, 643 LUA_LIBDIR = hardcoded_lua_libdir,
626 LUA_INCDIR = hardcoded.LUA_INCDIR, 644 LUA_INCDIR = hardcoded_lua_incdir,
627 } 645 }
628 end 646 end
629 647