From 4745a6e42598414fb38565c75e84bd13723372ba Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Thu, 26 Sep 2013 09:02:33 +0200 Subject: support for tables in (runtime_)external_deps_subdirs.* --- src/luarocks/cfg.lua | 17 +++++++++++++++++ src/luarocks/deps.lua | 36 +++++++++++++++++++++++++++--------- 2 files changed, 44 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index 8e26bb46..9227db4b 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua @@ -437,6 +437,23 @@ if detected.solaris then defaults.variables.MAKE = "gmake" end +if type(site_config.LUAROCKS_ADD_LIB_SUBDIRS) == "table" and next(site_config.LUAROCKS_ADD_LIB_SUBDIRS) ~= nil then + local lib = defaults.external_deps_subdirs.lib + if type(lib) ~= "table" then + lib = { lib } + end + local rt_lib = defaults.runtime_external_deps_subdirs.lib + if type(rt_lib) ~= "table" then + rt_lib = { rt_lib } + end + for i,v in ipairs(site_config.LUAROCKS_ADD_LIB_SUBDIRS) do + lib[#lib+1] = v + rt_lib[#rt_lib+1] = v + end + defaults.external_deps_subdirs.lib = lib + defaults.runtime_external_deps_subdirs.lib = rt_lib +end + -- Expose some more values detected by LuaRocks for use by rockspec authors. defaults.variables.LIB_EXTENSION = defaults.lib_extension defaults.variables.OBJ_EXTENSION = defaults.obj_extension diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua index f24dc507..7f3b44f2 100644 --- a/src/luarocks/deps.lua +++ b/src/luarocks/deps.lua @@ -583,7 +583,19 @@ function check_external_deps(rockspec, mode) prefix = prefix.prefix end for dirname, dirdata in pairs(dirs) do - dirdata.dir = vars[name.."_"..dirname] or dir.path(prefix, dirdata.subdir) + local paths + local path_var_value = vars[name.."_"..dirname] + if path_var_value then + paths = { path_var_value } + elseif type(dirdata.subdir) == "table" then + paths = {} + for i,v in ipairs(dirdata.subdir) do + paths[i] = dir.path(prefix, v) + end + else + paths = { dir.path(prefix, dirdata.subdir) } + end + dirdata.dir = paths[1] local file = files[dirdata.testfile] if file then local files = {} @@ -605,16 +617,22 @@ function check_external_deps(rockspec, mode) if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension) end - if f:match("%*") then - local replaced = f:gsub("%.", "%%."):gsub("%*", ".*") - for _, entry in ipairs(fs.list_dir(dirdata.dir)) do - if entry:match(replaced) then - found = true - break + for _, d in ipairs(paths) do + if f:match("%*") then + local replaced = f:gsub("%.", "%%."):gsub("%*", ".*") + for _, entry in ipairs(fs.list_dir(d)) do + if entry:match(replaced) then + found = true + break + end end + else + found = fs.is_file(dir.path(d, f)) + end + if found then + dirdata.dir = d + break end - else - found = fs.is_file(dir.path(dirdata.dir, f)) end if found then break -- cgit v1.2.3-55-g6feb