diff options
Diffstat (limited to 'src/luarocks/deps.lua')
| -rw-r--r-- | src/luarocks/deps.lua | 36 |
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 |
