diff options
| author | Mauro Tortonesi <[email protected]> | 2022-11-03 17:09:14 +0100 |
|---|---|---|
| committer | Mauro Tortonesi <[email protected]> | 2022-11-03 17:09:14 +0100 |
| commit | 4be10d436233bd7dffc0c91f5c5bd2d0806156ba (patch) | |
| tree | 1eb7babab534408e4857b9bdede1dc4a751a795e | |
| parent | 60b8a7e7b06b4f964c07a8e784832883c3073a83 (diff) | |
Fix sandbox_lib_detect_find_path._find function.
Function sandbox_lib_detect_find_path._find function currently searches
the first occurrence of substring path.pattern(path.translate(name))
within filepath. This behavior breaks in case one wants, e.g., to find
packages named libsomething. The correct behavior would be to find the
last occurrence of substring path.pattern(path.translate(name)) within
filepath. Hence this patch.
| -rw-r--r-- | xmake/core/sandbox/modules/import/lib/detect/find_path.lua | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_path.lua b/xmake/core/sandbox/modules/import/lib/detect/find_path.lua index d881d1072..98edd8aa4 100644 --- a/xmake/core/sandbox/modules/import/lib/detect/find_path.lua +++ b/xmake/core/sandbox/modules/import/lib/detect/find_path.lua @@ -37,7 +37,18 @@ function sandbox_lib_detect_find_path._find(filedir, name) local filepath = results[1] if filepath then -- we need translate name first, https://github.com/xmake-io/xmake-repo/issues/1315 - local p = filepath:find(path.pattern(path.translate(name))) + local to_search = path.pattern(path.translate(name)) + + -- need to find the last occurrence of substring to_search within filepath + local last_index = 0 + local idx = 0 + while true do + idx = filepath:find(to_search, idx+1) + if idx == nil then break end + last_index = idx + end + + local p = filepath:find(to_search, last_index) if p then filepath = path.translate(filepath:sub(1, p - 1)) if os.isdir(filepath) then |
