summaryrefslogtreecommitdiff
path: root/devel/rust/MAKEPKG
diff options
context:
space:
mode:
Diffstat (limited to 'devel/rust/MAKEPKG')
-rw-r--r--devel/rust/MAKEPKG115
1 files changed, 115 insertions, 0 deletions
diff --git a/devel/rust/MAKEPKG b/devel/rust/MAKEPKG
new file mode 100644
index 0000000..6de018b
--- /dev/null
+++ b/devel/rust/MAKEPKG
@@ -0,0 +1,115 @@
+#!/bin/mkpkg
+# description: Rust programming language
+# url: https://www.rust-lang.org/
+# https://releases.rs/docs/1.98.0/
+
+name=rust
+version=1.98.1
+_bootstrap=1.97.1
+_date=2026-07-16
+release=2
+depends=(llvm)
+makedeps=(cmake ninja python3 gcc-compat)
+source=(
+ https://static.rust-lang.org/dist/rustc-$version-src.tar.xz
+ https://static.rust-lang.org/dist/$_date/rust-std-$_bootstrap-x86_64-unknown-linux-musl.tar.xz
+ https://static.rust-lang.org/dist/$_date/rustc-$_bootstrap-x86_64-unknown-linux-musl.tar.xz
+ https://static.rust-lang.org/dist/$_date/cargo-$_bootstrap-x86_64-unknown-linux-musl.tar.xz
+ system.diff
+ musl-no-crt-static.patch
+ libressl-openssl-sys.patch
+)
+
+sha256sums=(
+ "be1816e7f6c40abb90245ad6e024bed2a7e88d7dda4561e4d5470207df616b9f"
+ "51d83178680556f73a5fa8ad865b76a1ff541867445c00fc65dc67246bc2de66"
+ "1b1f926d3b5bf8036c858180dbc9518c6c317154718ee5c5460bb23d23bacf5d"
+ "623a1315bdbddc5e7a807aaf7e1911d1435a294758e170b8758f49fc57a3e67c"
+ "c812b442131f53a6a614cba20bcd007ab0eee8583bd423d75038b90ebc87f323"
+ "8b7d3beb08cc22a4477b238eff22d91b249ea4c5344911f6fc3c279342538e35"
+ "0e5cd25e3680e75494b9d58783106723a97ef74bf70c9237bbb088fbc948a5d2"
+)
+
+extract() {
+ cp system.diff $SRC/
+ cp musl-no-crt-static.patch $SRC/
+ cp libressl-openssl-sys.patch $SRC/
+ tar -xf $PKGMK_SOURCE_DIR/rustc-$version-src.tar.xz -C $SRC
+
+ mkdir -p $SRC/rustc-$version-src/build/cache/$_date
+ cp rust-std-$_bootstrap-x86_64-unknown-linux-musl.tar.xz $SRC/rustc-$version-src/build/cache/$_date/
+ cp rustc-$_bootstrap-x86_64-unknown-linux-musl.tar.xz $SRC/rustc-$version-src/build/cache/$_date/
+ cp cargo-$_bootstrap-x86_64-unknown-linux-musl.tar.xz $SRC/rustc-$version-src/build/cache/$_date/
+}
+
+patch() {
+ cd rustc-$version-src
+ patch -p1 -i $SRC/system.diff
+ patch -p1 -i $SRC/musl-no-crt-static.patch
+ patch -p1 -i $SRC/libressl-openssl-sys.patch
+
+ # LLVM 23 dropped X86 FeatureAMXTF32 (Intel removed AMX-TF32 from the ISA).
+ # rustc 1.98 still probes it via LLVMRustHasFeature(), now fatal, and
+ # core_arch still defines the intrinsics. Fixed upstream in
+ # rust-lang/rust#159310, landing in 1.99.0.
+ sed -i '/"amx-tf32"/d' compiler/rustc_target/src/target_features.rs
+ sed -i '/amx.tf32/Id' library/std_detect/src/detect/arch/x86.rs
+ sed -i '/amx_tf32/d' library/std_detect/src/detect/os/x86.rs
+ sed -i '/amx-tf32/d' library/std_detect/tests/x86-specific.rs
+ sed -i '\%^/// Perform matrix multiplication of two tiles a and b, containing packed single precision%,/^}$/d' \
+ library/stdarch/crates/core_arch/src/x86_64/amx.rs
+ sed -i '/llvm\.x86\.tmmultf32ps/,+1d' \
+ library/stdarch/crates/core_arch/src/x86_64/amx.rs
+}
+
+build() {
+ cd rustc-$version-src
+
+ cat > bootstrap.toml <<EOF
+change-id = "ignore"
+[llvm]
+link-shared = true
+use-libcxx = true
+static-libstdcpp = false
+[build]
+build = "x86_64-unknown-linux-musl"
+host = ["x86_64-unknown-linux-musl"]
+target = ["x86_64-unknown-linux-musl"]
+docs = false
+extended = true
+tools = ["cargo", "rustfmt", "clippy", "rust-analyzer"]
+vendor = true
+[install]
+prefix = "/usr"
+[rust]
+channel = "stable"
+codegen-units = 1
+lto = "off"
+llvm-libunwind = "system"
+[target.x86_64-unknown-linux-musl]
+llvm-config = "/usr/bin/llvm-config"
+crt-static = false
+cc = "clang"
+cxx = "clang++"
+ar = "llvm-ar"
+ranlib = "llvm-ranlib"
+linker = "clang"
+rustflags = ["-C", "link-arg=-lunwind"]
+EOF
+ python3 x.py build
+ DESTDIR=$PKG python3 x.py install
+
+ rm -rf $PKG/usr/share/doc
+ rm -f $PKG/usr/lib/rustlib/install.log
+ rm -f $PKG/usr/lib/rustlib/uninstall.sh
+ rm -f $PKG/usr/lib/rustlib/manifest-*
+ rm -f $PKG/usr/lib/rustlib/components
+ rm -f $PKG/usr/lib/rustlib/rust-installer-version
+}
+
+signify() {
+ untrusted comment: public key
+ RWTZ9IduCSQ/mL8337TEUinPwT92xFEUpD92hkS7IxcOnzTt9QdpohT3
+}
+
+# vim: filetype=sh