Re: [Pkg-rust-maintainers] Bug#881845: Bug#881845: Bug#881845: Bug#881845: Bug#881845: Bug#881845: Bug#881845: Bug#881845: rustc: FTBFS on mips*: test failures
Hello!
With the attached patch, I can almost fully build rustc 1.29 natively on mips,
but it fails again with an out-of-memory error while generating the Rustbook:
Rustbook (mips-unknown-linux-gnu) - unstable-book
running: "/home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/mips-unknown-linux-gnu/stage0-tools-bin/rustbook" "build"
"/home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/mips-unknown-linux-gnu/md-doc/unstable-book" "-d"
"/home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/mips-unknown-linux-gnu/doc/unstable-book"
memory allocation of 1342177280 bytes failed
command did not execute successfully: "/home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/mips-unknown-linux-gnu/stage0-tools-bin/rustbook" "build"
"/home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/mips-unknown-linux-gnu/md-doc/unstable-book" "-d"
"/home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/mips-unknown-linux-gnu/doc/unstable-book"
expected success, got: signal: 6
Traceback (most recent call last):
File "./x.py", line 20, in <module>
bootstrap.main()
File "/home/glaubitz/rustc/rustc-1.29.0+dfsg1/src/bootstrap/bootstrap.py", line 842, in main
bootstrap(help_triggered)
File "/home/glaubitz/rustc/rustc-1.29.0+dfsg1/src/bootstrap/bootstrap.py", line 833, in bootstrap
run(args, env=env, verbose=build.verbose)
File "/home/glaubitz/rustc/rustc-1.29.0+dfsg1/src/bootstrap/bootstrap.py", line 149, in run
raise RuntimeError(err)
RuntimeError: failed to run: /home/glaubitz/rustc/rustc-1.29.0+dfsg1/build/bootstrap/debug/bootstrap install --config debian/config.toml -vv --on-fail env
make[1]: *** [debian/rules:271: override_dh_auto_install] Error 1
make[1]: Leaving directory '/home/glaubitz/rustc/rustc-1.29.0+dfsg1'
make: *** [debian/rules:132: binary-arch] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary-arch subprocess returned exit status 2
I also disabled the debug symbols for stdlib on mips/mipsel (same as for 32-bit ARM):
[ $(DEB_BUILD_ARCH) != mips -a \
$(DEB_BUILD_ARCH) != mipsel ] || sed -i -e '/^debuginfo-only-std = /d' "$@"
So, if we move the generation of the Rustbook into the binary-indep target (which
we should do anyway, shouldn't we), then rustc should build fine on 32-bit MIPS.
Note: We still need this one patch for LLVM backported to fix the atomics issue
otherwise the testsuite will hang.
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - glaubitz@debian.org
`. `' Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Description: <short summary of the patch>
TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.
.
rustc (1.29.0+dfsg1-1) unstable; urgency=medium
.
* Upload to unstable.
* Drop d-armel-disable-kernel-helpers.patch as a necessary part of the
fix to #906520, so it is actually fixed.
* Backport a patch to fix the rand crate on powerpc. (Closes: #909400)
* Lower the s390x allowed failures back to 25.
Author: Ximin Luo <infinity0@debian.org>
Bug-Debian: https://bugs.debian.org/909400
---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:
Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: 2018-10-24
--- rustc-1.29.0+dfsg1.orig/src/librustc_codegen_llvm/llvm_util.rs
+++ rustc-1.29.0+dfsg1/src/librustc_codegen_llvm/llvm_util.rs
@@ -66,6 +66,8 @@ unsafe fn configure_llvm(sess: &Session)
add("-disable-preinline");
}
+ if sess.target.target.arch == "mips" || sess.target.target.arch == "mips64" { add("-fast-isel=0"); }
+
for arg in &sess.opts.cg.llvm_args {
add(&(*arg));
}
--- rustc-1.29.0+dfsg1.orig/src/test/run-pass/invalid_const_promotion.rs
+++ rustc-1.29.0+dfsg1/src/test/run-pass/invalid_const_promotion.rs
@@ -33,7 +33,8 @@ fn check_status(status: std::process::Ex
use std::os::unix::process::ExitStatusExt;
assert!(status.signal() == Some(libc::SIGILL)
- || status.signal() == Some(libc::SIGABRT));
+ || status.signal() == Some(libc::SIGABRT)
+ || status.signal() == Some(libc::SIGTRAP));
}
#[cfg(not(unix))]
--- rustc-1.29.0+dfsg1.orig/src/test/ui/asm-out-assign-imm.rs
+++ rustc-1.29.0+dfsg1/src/test/ui/asm-out-assign-imm.rs
@@ -10,6 +10,8 @@
// ignore-s390x
// ignore-emscripten
+// ignore-mips
+// ignore-mips64
// ignore-powerpc
// ignore-powerpc64
// ignore-powerpc64le
--- rustc-1.29.0+dfsg1.orig/src/test/ui/target-feature-gate.rs
+++ rustc-1.29.0+dfsg1/src/test/ui/target-feature-gate.rs
@@ -12,6 +12,8 @@
// ignore-aarch64
// ignore-wasm
// ignore-emscripten
+// ignore-mips
+// ignore-mips64
// ignore-powerpc64
// ignore-powerpc64le
// gate-test-sse4a_target_feature
--- rustc-1.29.0+dfsg1.orig/src/test/ui/target-feature-wrong.rs
+++ rustc-1.29.0+dfsg1/src/test/ui/target-feature-wrong.rs
@@ -13,6 +13,7 @@
// ignore-wasm
// ignore-emscripten
// ignore-mips
+// ignore-mips64
// ignore-powerpc
// ignore-powerpc64
// ignore-powerpc64le
Reply to: