mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-07-23 15:48:45 +08:00
36 lines
1.4 KiB
Lua
36 lines
1.4 KiB
Lua
package("rust")
|
|
set_kind("toolchain")
|
|
set_homepage("https://rust-lang.org")
|
|
set_description("Rust is a general-purpose programming language emphasizing performance, type safety, and concurrency.")
|
|
|
|
add_versions("1.92.0", "")
|
|
|
|
add_deps("ca-certificates", {host = true, private = true})
|
|
add_deps("rustup", {host = true, private = true, system = false})
|
|
|
|
on_install(function(package)
|
|
import("core.tools.rustc.target_triple")
|
|
|
|
local host_target = assert(target_triple(package:plat(), package:arch()),
|
|
"failed to determine the Rust host target triple")
|
|
local version = package:version():shortstr()
|
|
local toolchain_name = version .. "-" .. host_target
|
|
local rustup_home = assert(os.getenv("RUSTUP_HOME"), "cannot find rustup home")
|
|
|
|
os.vrunv("rustup", {"install", "--no-self-update", toolchain_name})
|
|
os.vmv(path.join(rustup_home, "toolchains", toolchain_name, "*"), package:installdir())
|
|
|
|
-- Keep the Xmake-managed toolchain isolated from rustup after installation.
|
|
os.vrm(path.join(rustup_home, "toolchains", toolchain_name))
|
|
os.vrm(path.join(rustup_home, "update-hashes", toolchain_name))
|
|
|
|
package:addenv("RC", "bin/rustc" .. (is_host("windows") and ".exe" or ""))
|
|
package:mark_as_pathenv("RC")
|
|
end)
|
|
|
|
on_test(function(package)
|
|
os.vrun("cargo --version")
|
|
os.vrun("rustc --version")
|
|
end)
|
|
package_end()
|