aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2020-04-17 19:49:17 -0300
committerHisham Muhammad <hisham@gobolinux.org>2020-04-22 17:10:21 -0300
commitc52a5c57ccffa5a0929593cd94fa5f87e795efd7 (patch)
treef476f43eddad0e04e24631b9d7fd638b6650103a /src
parentd1a32ba6b1fd5a829aa551aeb37a0c558b09660f (diff)
downloadluarocks-c52a5c57ccffa5a0929593cd94fa5f87e795efd7.tar.gz
luarocks-c52a5c57ccffa5a0929593cd94fa5f87e795efd7.tar.bz2
luarocks-c52a5c57ccffa5a0929593cd94fa5f87e795efd7.zip
Check version of lua.h to ensure it matches
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/cmd/config.lua4
-rw-r--r--src/luarocks/deps.lua19
2 files changed, 16 insertions, 7 deletions
diff --git a/src/luarocks/cmd/config.lua b/src/luarocks/cmd/config.lua
index 5e92634a..2573876d 100644
--- a/src/luarocks/cmd/config.lua
+++ b/src/luarocks/cmd/config.lua
@@ -240,8 +240,8 @@ end
240--- Driver function for "config" command. 240--- Driver function for "config" command.
241-- @return boolean: True if succeeded, nil on errors. 241-- @return boolean: True if succeeded, nil on errors.
242function config_cmd.command(args) 242function config_cmd.command(args)
243 deps.check_lua_incdir(cfg.variables) 243 deps.check_lua_incdir(cfg.variables, args.lua_version or cfg.lua_version)
244 deps.check_lua_libdir(cfg.variables) 244 deps.check_lua_libdir(cfg.variables, args.lua_version or cfg.lua_version)
245 245
246 -- deprecated flags 246 -- deprecated flags
247 if args.lua_incdir then 247 if args.lua_incdir then
diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua
index d935a5c8..e1ecacee 100644
--- a/src/luarocks/deps.lua
+++ b/src/luarocks/deps.lua
@@ -649,13 +649,20 @@ function deps.scan_deps(results, manifest, name, version, deps_mode)
649 end 649 end
650end 650end
651 651
652local function lua_h_exists(d) 652local function lua_h_exists(d, luaver)
653 local n = tonumber(luaver)
654 local major = math.floor(n)
655 local minor = (n - major) * 10
656 local luanum = math.floor(major * 100 + minor)
657
653 local lua_h = dir.path(d, "lua.h") 658 local lua_h = dir.path(d, "lua.h")
654 local fd = io.open(lua_h) 659 local fd = io.open(lua_h)
655 if fd then 660 if fd then
656 -- TODO check that LUA_VERSION_MAJOR and LUA_VERSION_MINOR match luaver 661 local data = fd:read("*a")
657 fd:close() 662 fd:close()
658 return d 663 if data:match("LUA_VERSION_NUM%s*" .. tostring(luanum)) then
664 return d
665 end
659 end 666 end
660end 667end
661 668
@@ -672,7 +679,7 @@ local function find_lua_incdir(prefix, luaver, luajitver)
672 luajitver and prefix .. "/include/luajit-" .. luajitver:match("^(%d+%.%d+)"), 679 luajitver and prefix .. "/include/luajit-" .. luajitver:match("^(%d+%.%d+)"),
673 } 680 }
674 for _, d in ipairs(incdirs) do 681 for _, d in ipairs(incdirs) do
675 if lua_h_exists(d) then 682 if lua_h_exists(d, luaver) then
676 return d 683 return d
677 end 684 end
678 end 685 end
@@ -685,7 +692,7 @@ function deps.check_lua_incdir(vars)
685 local ljv = util.get_luajit_version() 692 local ljv = util.get_luajit_version()
686 693
687 if vars.LUA_INCDIR then 694 if vars.LUA_INCDIR then
688 return lua_h_exists(vars.LUA_INCDIR) 695 return lua_h_exists(vars.LUA_INCDIR, cfg.lua_version)
689 end 696 end
690 697
691 if vars.LUA_DIR then 698 if vars.LUA_DIR then
@@ -713,7 +720,9 @@ function deps.check_lua_libdir(vars)
713 table.insert(libnames, 1, "luajit-" .. cfg.lua_version) 720 table.insert(libnames, 1, "luajit-" .. cfg.lua_version)
714 end 721 end
715 local cache = {} 722 local cache = {}
723 local save_LUA_INCDIR = vars.LUA_INCDIR
716 local ok = check_external_dependency("LUA", { library = libnames }, vars, "build", cache) 724 local ok = check_external_dependency("LUA", { library = libnames }, vars, "build", cache)
725 vars.LUA_INCDIR = save_LUA_INCDIR
717 if ok then 726 if ok then
718 vars.LUALIB = vars.LUA_LIBDIR_FILE 727 vars.LUALIB = vars.LUA_LIBDIR_FILE
719 return true 728 return true