summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaleb Kiage <[email protected]>2023-07-13 20:32:46 +0300
committerCaleb Kiage <[email protected]>2023-07-13 20:32:46 +0300
commit186222d45dac082760ea4c2878e30a367dc66a24 (patch)
tree62141524d8ea81e53cd60c8c633a1cf75edb307a
parentce629e9b207ed5ca9dec6db96ba54fce422e3d13 (diff)
Use MSYSTEM to compute an alt package name in MSYS
-rw-r--r--xmake/modules/package/manager/pacman/find_package.lua19
1 files changed, 17 insertions, 2 deletions
diff --git a/xmake/modules/package/manager/pacman/find_package.lua b/xmake/modules/package/manager/pacman/find_package.lua
index ccbb590cf..be14ee6e0 100644
--- a/xmake/modules/package/manager/pacman/find_package.lua
+++ b/xmake/modules/package/manager/pacman/find_package.lua
@@ -112,14 +112,29 @@ function main(name, opt)
end
-- for msys2/mingw? mingw-w64-[i686|x86_64]-xxx
+ local name_alt
if is_subhost("msys") and opt.plat == "mingw" then
-- try to get the package prefix from the environment first
-- https://www.msys2.org/docs/package-naming/
- name = (os.getenv("MINGW_PACKAGE_PREFIX") or (opt.arch == "x86_64" and "mingw-w64-x86_64" or "mingw-w64-i686")) .. "-" .. name
+ local prefix = "mingw-w64-"
+ local arch = (opt.arch == "x86_64" and "x86_64-" or "i686-")
+
+ local msystem = os.getenv("MSYSTEM")
+ if msystem and msystem ~= "MINGW32" then
+ local i, j = msystem:find("%D+")
+ name_alt = prefix .. msystem:sub(i, j):lower() .. "-" .. arch .. name
+ end
+ name = prefix .. arch .. name
end
-- get package files list
- local list = try { function() return os.iorunv(pacman.program, {"-Q", "-l", name}) end }
+ local list
+ for _, n in ipairs({name, name_alt}) do
+ list = n and try { function() return os.iorunv(pacman.program, {"-Q", "-l", n}) end }
+ if list then
+ break
+ end
+ end
if not list then
return
end