summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2025-02-25 22:56:49 +0800
committerruki <[email protected]>2025-02-25 11:42:10 +0800
commitb5ec74aa63fd8c0888400a9b6bd075b19da5c4c3 (patch)
tree72957fa7b6f4e929ee17847673b2034b6ac020f7 /xmake/modules
parent764a267a30d0ad8f6bb360562463d257594e2474 (diff)
select package version
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/package/manager/kotlin-native/install_package.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/xmake/modules/package/manager/kotlin-native/install_package.lua b/xmake/modules/package/manager/kotlin-native/install_package.lua
index 008295f02..b6326e49c 100644
--- a/xmake/modules/package/manager/kotlin-native/install_package.lua
+++ b/xmake/modules/package/manager/kotlin-native/install_package.lua
@@ -20,12 +20,34 @@
-- imports
import("core.base.option")
+import("core.base.global")
import("core.base.json")
import("core.base.semver")
import("lib.detect.find_tool")
import("package.manager.kotlin-native.configurations")
import("net.http")
+-- select package version
+-- e.g. https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-json-iosarm64/maven-metadata.xml
+function _select_package_version(name, opt)
+ local installdir = opt.installdir
+ local manifest_file = path.join(installdir, "maven-metadata.xml")
+ for _, repository in ipairs(opt.repositories) do
+ local manifest_url = ("%s/%s-%s/maven-metadata.xml", repository, (name:gsub("%.", "/"):gsub(":", "/")), opt.triplet)
+ local ok = try {
+ function()
+ http.download(manifest_url, manifest_file, {
+ insecure = global.get("insecure-ssl")})
+ return true
+ end
+ }
+ if ok and os.isfile(manifest_file) then
+ local manifest = io.readfile(manifest_file)
+ print(manifest)
+ end
+ end
+end
+
-- install package
--
-- @param name the package name, e.g. org.jetbrains.kotlinx:kotlinx-serialization-json 1.8.0
@@ -34,6 +56,7 @@ import("net.http")
function main(name, opt)
opt = opt or {}
local configs = opt.configs or {}
+ local repositories = opt.repositories
-- init triplet
local arch = opt.arch
@@ -42,5 +65,20 @@ function main(name, opt)
arch = configurations.arch(arch)
local triplet = configurations.triplet(plat, arch)
+ -- select version
+ local installdir = assert(opt.installdir, "installdir not found!")
+ local require_version = opt.require_version
+ if require_version == "latest" then
+ require_version = nil
+ end
+ local version, repository = _select_package_version(name, {
+ triplet = triplet,
+ version = require_version,
+ installdir = installdir,
+ repositories = repositories})
+ assert(version and repository, "package(%s): %s not found for %s!", name, require_version, triplet)
+
+
+
end