From 1411cd7ea9e51eeae050fa27ea6a95190737b601 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Sat, 16 Apr 2022 17:12:28 -0300 Subject: deps: better error message when lua.h version mismatches --- binary/all_in_one | 4 ++-- src/luarocks/deps.lua | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/binary/all_in_one b/binary/all_in_one index 34b84a2c..63c6ef98 100755 --- a/binary/all_in_one +++ b/binary/all_in_one @@ -410,8 +410,8 @@ local function generate(main_program, dir, skip) fd:write(reindent_c(table.concat(out, "\n"))) fd:close() - deps.check_lua_incdir(cfg.variables) - deps.check_lua_libdir(cfg.variables) + assert(deps.check_lua_incdir(cfg.variables)) + assert(deps.check_lua_libdir(cfg.variables)) cmd = table.concat(filter_in(nonnull, { CC, "-o", TARGET_DIR .. "/" .. program_name .. ".exe", diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua index fc9ed804..cbd8962c 100644 --- a/src/luarocks/deps.lua +++ b/src/luarocks/deps.lua @@ -665,11 +665,10 @@ local function lua_h_exists(d, luaver) if data:match("LUA_VERSION_NUM%s*" .. tostring(luanum)) then return d end - - return nil, "Lua header mismatches configured version. You may need to install them or configure LUA_INCDIR.", "dependency" + return nil, "Lua header found at " .. d .. " does not match Lua version " .. luaver .. ". You may want to override this by configuring LUA_INCDIR.", "dependency", 2 end - return nil, "Failed finding Lua header files. You may need to install them or configure LUA_INCDIR.", "dependency" + return nil, "Failed finding Lua header files. You may need to install them or configure LUA_INCDIR.", "dependency", 1 end local function find_lua_incdir(prefix, luaver, luajitver) @@ -684,14 +683,21 @@ local function find_lua_incdir(prefix, luaver, luajitver) prefix, luajitver and prefix .. "/include/luajit-" .. luajitver:match("^(%d+%.%d+)"), } + local errprio = 0 + local mainerr for _, d in ipairs(incdirs) do - if lua_h_exists(d, luaver) then + local ok, err, _, prio = lua_h_exists(d, luaver) + if ok then return d end + if prio > errprio then + mainerr = err + errprio = prio + end end -- not found, will fallback to a default - return nil + return nil, mainerr end function deps.check_lua_incdir(vars) @@ -702,10 +708,12 @@ function deps.check_lua_incdir(vars) end if vars.LUA_DIR then - vars.LUA_INCDIR = find_lua_incdir(vars.LUA_DIR, cfg.lua_version, ljv) - if vars.LUA_INCDIR then + local d, err = find_lua_incdir(vars.LUA_DIR, cfg.lua_version, ljv) + if d then + vars.LUA_INCDIR = d return true end + return nil, err end return nil, "Failed finding Lua header files. You may need to install them or configure LUA_INCDIR.", "dependency" -- cgit v1.2.3-55-g6feb