aboutsummaryrefslogtreecommitdiff
path: root/src/luarocks/deps.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/luarocks/deps.lua')
-rw-r--r--src/luarocks/deps.lua36
1 files changed, 27 insertions, 9 deletions
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)
583 prefix = prefix.prefix 583 prefix = prefix.prefix
584 end 584 end
585 for dirname, dirdata in pairs(dirs) do 585 for dirname, dirdata in pairs(dirs) do
586 dirdata.dir = vars[name.."_"..dirname] or dir.path(prefix, dirdata.subdir) 586 local paths
587 local path_var_value = vars[name.."_"..dirname]
588 if path_var_value then
589 paths = { path_var_value }
590 elseif type(dirdata.subdir) == "table" then
591 paths = {}
592 for i,v in ipairs(dirdata.subdir) do
593 paths[i] = dir.path(prefix, v)
594 end
595 else
596 paths = { dir.path(prefix, dirdata.subdir) }
597 end
598 dirdata.dir = paths[1]
587 local file = files[dirdata.testfile] 599 local file = files[dirdata.testfile]
588 if file then 600 if file then
589 local files = {} 601 local files = {}
@@ -605,16 +617,22 @@ function check_external_deps(rockspec, mode)
605 if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then 617 if f:match("%.so$") or f:match("%.dylib$") or f:match("%.dll$") then
606 f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension) 618 f = f:gsub("%.[^.]+$", "."..cfg.external_lib_extension)
607 end 619 end
608 if f:match("%*") then 620 for _, d in ipairs(paths) do
609 local replaced = f:gsub("%.", "%%."):gsub("%*", ".*") 621 if f:match("%*") then
610 for _, entry in ipairs(fs.list_dir(dirdata.dir)) do 622 local replaced = f:gsub("%.", "%%."):gsub("%*", ".*")
611 if entry:match(replaced) then 623 for _, entry in ipairs(fs.list_dir(d)) do
612 found = true 624 if entry:match(replaced) then
613 break 625 found = true
626 break
627 end
614 end 628 end
629 else
630 found = fs.is_file(dir.path(d, f))
631 end
632 if found then
633 dirdata.dir = d
634 break
615 end 635 end
616 else
617 found = fs.is_file(dir.path(dirdata.dir, f))
618 end 636 end
619 if found then 637 if found then
620 break 638 break