diff options
| author | ruki <[email protected]> | 2025-02-25 22:56:49 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-02-25 11:42:10 +0800 |
| commit | b5ec74aa63fd8c0888400a9b6bd075b19da5c4c3 (patch) | |
| tree | 72957fa7b6f4e929ee17847673b2034b6ac020f7 /xmake/modules | |
| parent | 764a267a30d0ad8f6bb360562463d257594e2474 (diff) | |
select package version
Diffstat (limited to 'xmake/modules')
| -rw-r--r-- | xmake/modules/package/manager/kotlin-native/install_package.lua | 38 |
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 |
