summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLingfeng Fu <[email protected]>2023-06-11 21:22:28 +0800
committerLingfeng Fu <[email protected]>2023-06-11 21:22:28 +0800
commitb4194846cb1cb140c93897aa07d70a3b5013c6c5 (patch)
tree2899d1ea686e482bec8a7c141042fc062fa4163c
parent02c2e064b27b6041a9f75890154a731d064b8618 (diff)
support version opt for zypper
-rw-r--r--README.md2
-rw-r--r--xmake/modules/package/manager/install_package.lua1
-rw-r--r--xmake/modules/package/manager/zypper/find_package.lua3
-rw-r--r--xmake/modules/package/manager/zypper/install_package.lua3
4 files changed, 8 insertions, 1 deletions
diff --git a/README.md b/README.md
index 73918f83d..082f415fc 100644
--- a/README.md
+++ b/README.md
@@ -326,7 +326,7 @@ Xmake can automatically fetch and install dependencies!
* Portage on Gentoo/Linux (portage::libhandy)
* Nimble for nimlang (nimble::zip >1.3)
* Cargo for rust (cargo::base64 0.13.0)
-* Zypper on openSUSE (zypper::libsfml2-2_5)
+* Zypper on openSUSE (zypper::libsfml2 2.5)
### Package management features
diff --git a/xmake/modules/package/manager/install_package.lua b/xmake/modules/package/manager/install_package.lua
index 05e13ed27..71664aefe 100644
--- a/xmake/modules/package/manager/install_package.lua
+++ b/xmake/modules/package/manager/install_package.lua
@@ -40,6 +40,7 @@ function _install_package(manager_name, package_name, opt)
table.insert(managers, "pacman")
table.insert(managers, "portage")
table.insert(managers, "brew")
+ table.insert(managers, "zypper")
elseif is_host("macosx") then
table.insert(managers, "vcpkg")
table.insert(managers, "brew")
diff --git a/xmake/modules/package/manager/zypper/find_package.lua b/xmake/modules/package/manager/zypper/find_package.lua
index 53db5467e..d26f566de 100644
--- a/xmake/modules/package/manager/zypper/find_package.lua
+++ b/xmake/modules/package/manager/zypper/find_package.lua
@@ -27,6 +27,9 @@ import("package.manager.pkgconfig.find_package", { alias = "find_package_from_pk
-- find package
function _find_package(rpm, zypper, name, opt)
+ if opt.require_version and opt.require_version ~= "latest" then
+ name = name .. '-' .. opt.require_version:gsub('%.', '_')
+ end
local result = nil
local pkgconfig_files = {}
local listinfo = try { function()
diff --git a/xmake/modules/package/manager/zypper/install_package.lua b/xmake/modules/package/manager/zypper/install_package.lua
index 8beb45ff1..8f2f60feb 100644
--- a/xmake/modules/package/manager/zypper/install_package.lua
+++ b/xmake/modules/package/manager/zypper/install_package.lua
@@ -34,6 +34,9 @@ function main(name, opt)
-- init options
opt = opt or {}
+ if opt.require_version and opt.require_version ~= "latest" then
+ name = name .. '-' .. opt.require_version:gsub('%.', '_')
+ end
-- find apt
local zypper = find_tool("zypper")