import os import shutil import subprocess from lib.make import * from lib import arch upstream_version = "1.97.1" version(upstream_version) description("A language empowering everyone to build reliable and efficient software") maintainer("sisungo ") source_url(f"https://static.rust-lang.org/dist/rustc-{upstream_version}-src.tar.xz") builddep("shortcut/cmake") builddep("shortcut/c++") builddep("python") builddep(f"libz-ng-dev @{arch.get_target()}") builddep(f"linux-dev @{arch.get_target()}") builddep(f"libunwind-dev @{arch.get_target()}") builddep("curl") builddep("grep") builddep("sed") def setup_musl_root(): os.makedirs("../musl_root/lib", exist_ok=True) for i in ["libc.a", "crt1.o", "Scrt1.o", "rcrt1.o", "crti.o", "crtn.o", "libunwind.a"]: shutil.copy2(f"/lib/{arch.get_target()}/{i}", f"../musl_root/lib/{i}") def configure(): with open("../../bootstrap.toml.in") as file: content = file.read() content = content.replace("%RUSTVERSION%", upstream_version) content = content.replace("%CARGOPATH%", shutil.which("cargo") or "cargo") content = content.replace("%RUSTCPATH%", shutil.which("rustc") or "rustc") content = content.replace("%INSTALLPREFIX%", get_prefix("rust")) content = content.replace("%MUSLROOT%", os.getcwd() + "/../musl_root") with open("bootstrap.toml", "wt+") as file: file.write(content) def run_build(): subprocess.run(["python3", "x.py", "build"], check=True) def run_install(): os.environ["DESTDIR"] = os.getcwd() + "/../install_destdir" subprocess.run(["python3", "x.py", "install"], check=True) os.chdir(os.environ["DESTDIR"]) os.chdir("./" + get_prefix("rust")) def build(): setup_musl_root() configure() run_build() run_install() on_build(build) def pack_rust(composer): composer.add_dir("bin") composer.add_dir("lib") package("rust") dep("semi-libc @same-arch") dep("libz @same-arch") dep("libcxx @same-arch") on_pack(pack_rust)