author | Urja (ARMLFS builder)
<urja+armlfs@urja.dev> 2025-05-03 16:49:56 UTC |
committer | Urja (ARMLFS builder)
<urja+armlfs@urja.dev> 2025-05-03 16:49:56 UTC |
parent | 3e8af188d2bb6760c244270d4bba9e8e20a6fd40 |
.SRCINFO | +14 | -28 |
0001-bootstrap-Change-libexec-dir.patch | +5 | -5 |
0002-bootstrap-Change-bash-completion-dir.patch | +3 | -3 |
0003-compiler-Change-LLVM-targets.patch | +20 | -39 |
PKGBUILD | +35 | -31 |
diff --git a/.SRCINFO b/.SRCINFO index cc42317..0a61a9f 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,43 +1,46 @@ pkgbase = rust pkgdesc = Systems programming language focused on safety, speed and concurrency - pkgver = 1.77.2 + pkgver = 1.78.0 pkgrel = 1 epoch = 1 url = https://www.rust-lang.org/ - arch = x86_64 + arch = armv7h + arch = aarch64 license = Apache-2.0 OR MIT checkdepends = gdb checkdepends = procps-ng + makedepends = clang makedepends = cmake - makedepends = lib32-gcc-libs makedepends = libffi makedepends = lld makedepends = llvm - makedepends = musl makedepends = ninja makedepends = perl makedepends = python makedepends = rust - makedepends = wasi-libc + depends = bash depends = curl depends = gcc depends = gcc-libs + depends = glibc depends = libssh2 depends = llvm-libs + depends = openssl + depends = zlib options = !emptydirs options = !lto - source = https://static.rust-lang.org/dist/rustc-1.77.2-src.tar.gz - source = https://static.rust-lang.org/dist/rustc-1.77.2-src.tar.gz.asc + source = https://static.rust-lang.org/dist/rustc-1.78.0-src.tar.gz + source = https://static.rust-lang.org/dist/rustc-1.78.0-src.tar.gz.asc source = 0001-bootstrap-Change-libexec-dir.patch source = 0002-bootstrap-Change-bash-completion-dir.patch source = 0003-compiler-Change-LLVM-targets.patch source = 0004-compiler-Use-wasm-ld-for-wasm-targets.patch validpgpkeys = 108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE - b2sums = cf9fd96580d2c696e8d2992a5b4ee285824648bfa721212dd7691d63c876cf8fda1d50e924bec891af2c721e3746c4227fd23a0bed48e0b505fcd328936f5a35 + b2sums = 3f43a1c50e268afbe76755ae24bccb3db9ff4dd8bbb8130c75d486c4c0e40f0253c4d4cad1de1040600c090d03d93b08adee5b16fa8abcf36d47a3c14024719f b2sums = SKIP - b2sums = d3ed7043e288c78ac4007b267448457db0972905037754b67249d81be0889f47c4d93573c24d730907c31ec44e80ce696fbf50f98521eadee92c003d2324a1a3 - b2sums = 6afaf5bff729618aa35d84f20b1447694c887b84a406f55344864b9e8dce72f80467412c128b5309d5b962b605ca396b77a52f275dd35681ab50cbedc68f873a - b2sums = 18ca47c350373d9a095aff9a658c61816a542bb391a2a8ddf582f25795a21e9fc344b3e71a2eed7b094610bb61d9658e5360ef2ace9441fd21e4193746d45be7 + b2sums = ef56a70741bae70a95695b4d05d1a6395f545e671c9d016c7180732f69a09b828ff5e16964ef16f9ebec55dd778a1b50927275cd4c21a7b78ae4959946a0657c + b2sums = d20861a8a8e16d4bb0143f00d4beb42e2c52eeb2c1894e9f9c04e3d74ecd750d9bdacf15bb39fd0ade4487b9d3d14da24cf5f25ceab112f096fddcd329320a15 + b2sums = 64391cf17e7d801fb263e9d637928c3a2f6aa11aca6afbf115be4e38e9afce42371ed4884929cf11d6c74c2aa497fb26abbba1812d4f31f44dcda38e4978a33f b2sums = 23f399d5ea776df5dba1ec42a96020a7ae3b18f5a83121d90ca0256a90027529135bac751373a31480860c0dbad30598833a7da43d1e7f25ce5b6d5d945ce550 pkgname = rust @@ -53,23 +56,6 @@ pkgname = rust replaces = rust-docs<1:1.56.1-3 replaces = rustfmt -pkgname = lib32-rust-libs - pkgdesc = 32-bit target and libraries for Rust - depends = lib32-gcc-libs - depends = rust - provides = lib32-rust - conflicts = lib32-rust - replaces = lib32-rust - -pkgname = rust-musl - pkgdesc = Musl target for Rust - depends = rust - -pkgname = rust-wasm - pkgdesc = WebAssembly targets for Rust - depends = lld - depends = rust - pkgname = rust-src pkgdesc = Source code for the Rust standard library depends = rust diff --git a/0001-bootstrap-Change-libexec-dir.patch b/0001-bootstrap-Change-libexec-dir.patch index ebc8f2f..2c3552b 100644 --- a/0001-bootstrap-Change-libexec-dir.patch +++ b/0001-bootstrap-Change-libexec-dir.patch @@ -9,10 +9,10 @@ Subject: [PATCH] bootstrap: Change libexec dir 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs -index f50026368dab..6940e0c50752 100644 +index 012d64e53443..a077e67e49dc 100644 --- a/src/bootstrap/src/core/build_steps/dist.rs +++ b/src/bootstrap/src/core/build_steps/dist.rs -@@ -423,7 +423,7 @@ fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) { +@@ -424,7 +424,7 @@ fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) { }, builder.kind, ) { @@ -22,15 +22,15 @@ index f50026368dab..6940e0c50752 100644 let libdir_relative = builder.libdir_relative(compiler); diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs -index 5d8d10a7debc..f52315416bd4 100644 +index 3c2001121037..17c816c6230a 100644 --- a/src/bootstrap/src/core/build_steps/tool.rs +++ b/src/bootstrap/src/core/build_steps/tool.rs -@@ -682,7 +682,7 @@ fn run(self, builder: &Builder<'_>) -> Option<PathBuf> { +@@ -684,7 +684,7 @@ fn run(self, builder: &Builder<'_>) -> Option<PathBuf> { // Copy `rust-analyzer-proc-macro-srv` to `<sysroot>/libexec/` // so that r-a can use it. - let libexec_path = builder.sysroot(self.compiler).join("libexec"); + let libexec_path = builder.sysroot(self.compiler).join("lib"); t!(fs::create_dir_all(&libexec_path)); - builder.copy(&path, &libexec_path.join("rust-analyzer-proc-macro-srv")); + builder.copy_link(&path, &libexec_path.join("rust-analyzer-proc-macro-srv")); diff --git a/0002-bootstrap-Change-bash-completion-dir.patch b/0002-bootstrap-Change-bash-completion-dir.patch index d0e8b43..112156d 100644 --- a/0002-bootstrap-Change-bash-completion-dir.patch +++ b/0002-bootstrap-Change-bash-completion-dir.patch @@ -8,12 +8,12 @@ Subject: [PATCH] bootstrap: Change bash-completion dir 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs -index 6940e0c50752..d45daad3a829 100644 +index a077e67e49dc..eac689560808 100644 --- a/src/bootstrap/src/core/build_steps/dist.rs +++ b/src/bootstrap/src/core/build_steps/dist.rs -@@ -1071,7 +1071,11 @@ fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> { +@@ -1072,7 +1072,11 @@ fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> { - tarball.add_file(&cargo, "bin", 0o755); + tarball.add_file(cargo, "bin", 0o755); tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644); - tarball.add_renamed_file(etc.join("cargo.bashcomp.sh"), "etc/bash_completion.d", "cargo"); + tarball.add_renamed_file( diff --git a/0003-compiler-Change-LLVM-targets.patch b/0003-compiler-Change-LLVM-targets.patch index 26df177..41abedb 100644 --- a/0003-compiler-Change-LLVM-targets.patch +++ b/0003-compiler-Change-LLVM-targets.patch @@ -17,47 +17,28 @@ targets, as things break when this is done: `rustc --version --verbose`) is different from the target triple (from `rustc --print target-list`) that best matches autoconf. --- - compiler/rustc_session/src/config.rs | 2 +- - compiler/rustc_target/src/spec/mod.rs | 9 +++++++++ - .../src/spec/targets/i686_unknown_linux_gnu.rs | 2 +- - .../src/spec/targets/x86_64_unknown_linux_gnu.rs | 2 +- - 4 files changed, 12 insertions(+), 3 deletions(-) + compiler/rustc_session/src/config.rs | 4 ++++ + .../rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs | 2 +- + .../rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs | 2 +- + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs -index d35f951e2aea..7841c4d19094 100644 +index b7ee2c980254..3be7b748718d 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs -@@ -2221,7 +2221,7 @@ pub fn parse_target_triple(early_dcx: &EarlyDiagCtxt, matches: &getopts::Matches +@@ -2222,6 +2222,10 @@ pub fn parse_target_triple(early_dcx: &EarlyDiagCtxt, matches: &getopts::Matches early_dcx.early_fatal(format!("target file {path:?} does not exist")) }) } -- Some(target) => TargetTriple::TargetTriple(target), -+ Some(target) => TargetTriple::from_alias(target), ++ Some(s) if &s == "x86_64-pc-linux-gnu" => { ++ TargetTriple::from_triple("x86_64-unknown-linux-gnu") ++ } ++ Some(s) if &s == "i686-pc-linux-gnu" => TargetTriple::from_triple("i686-unknown-linux-gnu"), + Some(target) => TargetTriple::TargetTriple(target), _ => TargetTriple::from_triple(host_triple()), } - } -diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs -index 6c698c5b01dd..4a1c2dd18b8d 100644 ---- a/compiler/rustc_target/src/spec/mod.rs -+++ b/compiler/rustc_target/src/spec/mod.rs -@@ -3453,6 +3453,15 @@ pub fn from_path(path: &Path) -> Result<Self, io::Error> { - Ok(TargetTriple::TargetJson { path_for_rustdoc: canonicalized_path, triple, contents }) - } - -+ /// Creates a target triple from its alias -+ pub fn from_alias(triple: String) -> Self { -+ match triple.as_str() { -+ "x86_64-pc-linux-gnu" => TargetTriple::from_triple("x86_64-unknown-linux-gnu"), -+ "i686-pc-linux-gnu" => TargetTriple::from_triple("i686-unknown-linux-gnu"), -+ _ => TargetTriple::TargetTriple(triple), -+ } -+ } -+ - /// Returns a string triple for this target. - /// - /// If this target is a path, the file name (without extension) is returned. diff --git a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs -index 9bc38a72f4d3..a7a36eb3c9d6 100644 +index 1d4916cabfdf..4caab818efdb 100644 --- a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs @@ -9,7 +9,7 @@ pub fn target() -> Target { @@ -66,19 +47,19 @@ index 9bc38a72f4d3..a7a36eb3c9d6 100644 Target { - llvm_target: "i686-unknown-linux-gnu".into(), + llvm_target: "i686-pc-linux-gnu".into(), - pointer_width: 32, - data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\ - i128:128-f64:32:64-f80:32-n8:16:32-S128" + metadata: crate::spec::TargetMetadata { + description: None, + tier: None, diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs -index 2296b58f45dc..a54dbf573dd6 100644 +index 98374023dc57..0e08b8c32229 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs -@@ -17,7 +17,7 @@ pub fn target() -> Target { +@@ -18,7 +18,7 @@ pub fn target() -> Target { base.supports_xray = true; Target { - llvm_target: "x86_64-unknown-linux-gnu".into(), + llvm_target: "x86_64-pc-linux-gnu".into(), - pointer_width: 64, - data_layout: - "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128".into(), + metadata: crate::spec::TargetMetadata { + description: None, + tier: None, diff --git a/PKGBUILD b/PKGBUILD index 85a600a..f193cc8 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -20,7 +20,7 @@ pkgname=( rust-src ) epoch=1 -pkgver=1.77.2 +pkgver=1.78.0 pkgrel=1 pkgdesc="Systems programming language focused on safety, speed and concurrency" url=https://www.rust-lang.org/ @@ -31,13 +31,18 @@ options=( !lto ) depends=( + bash curl gcc gcc-libs + glibc libssh2 llvm-libs + openssl + zlib ) makedepends=( + clang cmake libffi lld @@ -58,11 +63,11 @@ source=( 0003-compiler-Change-LLVM-targets.patch 0004-compiler-Use-wasm-ld-for-wasm-targets.patch ) -b2sums=('cf9fd96580d2c696e8d2992a5b4ee285824648bfa721212dd7691d63c876cf8fda1d50e924bec891af2c721e3746c4227fd23a0bed48e0b505fcd328936f5a35' +b2sums=('3f43a1c50e268afbe76755ae24bccb3db9ff4dd8bbb8130c75d486c4c0e40f0253c4d4cad1de1040600c090d03d93b08adee5b16fa8abcf36d47a3c14024719f' 'SKIP' - 'd3ed7043e288c78ac4007b267448457db0972905037754b67249d81be0889f47c4d93573c24d730907c31ec44e80ce696fbf50f98521eadee92c003d2324a1a3' - '6afaf5bff729618aa35d84f20b1447694c887b84a406f55344864b9e8dce72f80467412c128b5309d5b962b605ca396b77a52f275dd35681ab50cbedc68f873a' - '18ca47c350373d9a095aff9a658c61816a542bb391a2a8ddf582f25795a21e9fc344b3e71a2eed7b094610bb61d9658e5360ef2ace9441fd21e4193746d45be7' + 'ef56a70741bae70a95695b4d05d1a6395f545e671c9d016c7180732f69a09b828ff5e16964ef16f9ebec55dd778a1b50927275cd4c21a7b78ae4959946a0657c' + 'd20861a8a8e16d4bb0143f00d4beb42e2c52eeb2c1894e9f9c04e3d74ecd750d9bdacf15bb39fd0ade4487b9d3d14da24cf5f25ceab112f096fddcd329320a15' + '64391cf17e7d801fb263e9d637928c3a2f6aa11aca6afbf115be4e38e9afce42371ed4884929cf11d6c74c2aa497fb26abbba1812d4f31f44dcda38e4978a33f' '23f399d5ea776df5dba1ec42a96020a7ae3b18f5a83121d90ca0256a90027529135bac751373a31480860c0dbad30598833a7da43d1e7f25ce5b6d5d945ce550') validpgpkeys=( 108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE # Rust Language (Tag and Release Signing Key) <rust-key@rust-lang.org> @@ -86,7 +91,7 @@ prepare() { cat >config.toml <<END profile = "user" -change-id = 118703 +change-id = 121754 [llvm] link-shared = true @@ -117,27 +122,16 @@ docs = false prefix = "/usr" [rust] +codegen-units-std = 1 +debuginfo-level = 0 debuginfo-level-std = 0 channel = "stable" description = "ARMLFS $pkgbase $epoch:$pkgver-$pkgrel" rpath = false +deny-warnings = false backtrace-on-ice = true jemalloc = true -# Causes "error: --remap-path-prefix must contain '=' between FROM and TO" -# even after creating the missing ~/.cargo/registry/src dir. -# https://github.com/rust-lang/rust/issues/117885 -remap-debuginfo = false - -# LLVM crashes when passing an object through ThinLTO twice. This is triggered -# when using rust code in cross-language LTO if libstd was built using ThinLTO. -# http://blog.llvm.org/2019/09/closing-gap-cross-language-lto-between.html -# https://github.com/rust-lang/rust/issues/54872 -codegen-units-std = 1 - -# musl target produces warnings -deny-warnings = false - [dist] compression-formats = ["gz"] @@ -180,6 +174,7 @@ END # This is a huge hack, but the build host is volatile, so who cares lol su -c "mv /usr/libexec/gcc /usr/libexec/gcc32" su -c "ln -s ../cross-a64/libexec/gcc /usr/libexec/gcc" + export LD_LIBRARY_PATH=/lib/aarch64 export PATH=/usr/cross-a64/bin:$PATH mkdir path ln -s /usr/bin/g++ path/arm-linux-gnueabihf-g++ @@ -205,24 +200,33 @@ build() { [[ $CARCH == "aarch64" ]] && export JEMALLOC_SYS_WITH_LG_PAGE=16 export RUST_BACKTRACE=1 + unset CFLAGS CXXFLAGS LDFLAGS DESTDIR="$srcdir/dest-rust" python ./x.py install -j "$(nproc)" cd ../dest-rust # delete unnecessary files, e.g. files only used for the uninstall script - rm usr/bin/*.old - rm usr/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh} - rm usr/lib/rustlib/manifest-* + rm -v usr/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh} + rm -v usr/lib/rustlib/manifest-* + + # licenses for main rust package + local ldir="usr/share/licenses/rust" f d + mkdir -p "$ldir" + for f in usr/share/doc/*/{COPYRIGHT,LICENSE}*; do + d="$(dirname "$f")" + case $f in + */LICENSE-APACHE) rm -v "$f" ;; + *) mv -v "$f" "$ldir/${f##*/}.${d##*/}" ;; + esac + rmdir -p --ignore-fail-on-non-empty "$d" + done # rustbuild always installs copies of the shared libraries to /usr/lib, # overwrite them with symlinks to the per-architecture versions - #mkdir -p usr/lib32 - #ln -srft usr/lib usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/*.so - #ln -srft usr/lib32 usr/lib/rustlib/i686-unknown-linux-gnu/lib/*.so - - mkdir -p usr/share/licenses/rust - mv -t usr/share/licenses/rust usr/share/doc/rust/{COPYRIGHT,LICENSE*} + #mkdir -pv usr/lib32 + #ln -srvft usr/lib usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/*.so + #ln -srvft usr/lib32 usr/lib/rustlib/i686-unknown-linux-gnu/lib/*.so #_pick dest-i686 usr/lib/rustlib/i686-unknown-linux-gnu usr/lib32 #_pick dest-musl usr/lib/rustlib/x86_64-unknown-linux-musl @@ -260,8 +264,8 @@ package_rust-src() { cp -a dest-src/* "$pkgdir" - mkdir -p "$pkgdir/usr/share/licenses" - ln -s rust "$pkgdir/usr/share/licenses/$pkgname" + install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 \ + rustc-$pkgver-src/{COPYRIGHT,LICENSE-MIT} } # vim:set ts=2 sw=2 et: