Archived
1
0
Fork 0

gnu: rust: Add support for building 32-bit packages on 64-bit hosts.

* gnu/packages/rust.scm (rust-bootstrap, rust-1.23): Use
nix-system->gnu-triplet to determine the system type.
(rust-1.19): Use readelf instead of nm in the atomic-lock-free test.
(rust-1.23): Disable the cargo_test_env test. Disable parallel execution of
tests.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Robin Templeton 2018-05-29 12:02:41 -04:00 committed by Ludovic Courtès
parent a078a6ec3b
commit 514026d7de
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -63,14 +63,23 @@
(package (package
(name "rust-bootstrap") (name "rust-bootstrap")
(version "1.22.1") (version "1.22.1")
(source (origin (source #f)
(build-system gnu-build-system)
(native-inputs
`(("patchelf" ,patchelf)))
(inputs
`(("gcc" ,(canonical-package gcc))
("gcc:lib" ,(canonical-package gcc) "lib")
("zlib" ,zlib)
("source"
,(origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://static.rust-lang.org/dist/" "https://static.rust-lang.org/dist/"
"rust-" version "-" %host-type ".tar.gz")) "rust-" version "-" (nix-system->gnu-triplet) ".tar.gz"))
(sha256 (sha256
(base32 (base32
(match %host-type (match (nix-system->gnu-triplet)
("i686-unknown-linux-gnu" ("i686-unknown-linux-gnu"
"15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr") "15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr")
("x86_64-unknown-linux-gnu" ("x86_64-unknown-linux-gnu"
@ -81,14 +90,7 @@
"0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8") "0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8")
("mips64el-unknown-linux-gnuabi64" ("mips64el-unknown-linux-gnuabi64"
"07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2") "07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2")
(_ "")))))) (_ ""))))))))
(build-system gnu-build-system)
(native-inputs
`(("patchelf" ,patchelf)))
(inputs
`(("gcc" ,(canonical-package gcc))
("gcc:lib" ,(canonical-package gcc) "lib")
("zlib" ,zlib)))
(outputs '("out" "cargo")) (outputs '("out" "cargo"))
(arguments (arguments
`(#:tests? #f `(#:tests? #f
@ -117,7 +119,7 @@
(invoke "bash" "install.sh" (invoke "bash" "install.sh"
(string-append "--prefix=" out) (string-append "--prefix=" out)
(string-append "--components=rustc," (string-append "--components=rustc,"
"rust-std-" %host-type)) "rust-std-" ,(nix-system->gnu-triplet)))
;; Instal cargo ;; Instal cargo
(invoke "bash" "install.sh" (invoke "bash" "install.sh"
(string-append "--prefix=" cargo-out) (string-append "--prefix=" cargo-out)
@ -196,6 +198,12 @@ in turn be used to build the final Rust.")
;; This test is known to fail on aarch64 and powerpc64le: ;; This test is known to fail on aarch64 and powerpc64le:
;; https://github.com/rust-lang/rust/issues/45410 ;; https://github.com/rust-lang/rust/issues/45410
(("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine")) (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
;; nm doesn't recognize the file format because of the
;; nonstandard sections used by the Rust compiler, but readelf
;; ignores them.
(substitute* "src/test/run-make/atomic-lock-free/Makefile"
(("\tnm ")
"\treadelf -c "))
#t))) #t)))
(add-after 'patch-source-shebangs 'patch-cargo-checksums (add-after 'patch-source-shebangs 'patch-cargo-checksums
(lambda* _ (lambda* _
@ -386,6 +394,10 @@ safety and thread safety guarantees.")
(substitute* "src/tools/cargo/tests/death.rs" (substitute* "src/tools/cargo/tests/death.rs"
;; This is stuck when built in container. ;; This is stuck when built in container.
(("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone")) (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
;; Prints test output in the wrong order when built on
;; i686-linux.
(substitute* "src/tools/cargo/tests/test.rs"
(("fn cargo_test_env") "#[ignore]\nfn cargo_test_env"))
#t)) #t))
(add-after 'patch-cargo-tests 'fix-mtime-bug (add-after 'patch-cargo-tests 'fix-mtime-bug
(lambda* _ (lambda* _
@ -433,7 +445,7 @@ rpath = true
# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs # codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
# This tests required patched LLVM # This tests required patched LLVM
codegen-tests = false codegen-tests = false
[target." %host-type "] [target." ,(nix-system->gnu-triplet) "]
llvm-config = \"" llvm "/bin/llvm-config" "\" llvm-config = \"" llvm "/bin/llvm-config" "\"
cc = \"" gcc "/bin/gcc" "\" cc = \"" gcc "/bin/gcc" "\"
cxx = \"" gcc "/bin/g++" "\" cxx = \"" gcc "/bin/g++" "\"
@ -456,8 +468,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(invoke "./x.py" "build" "src/tools/cargo"))) (invoke "./x.py" "build" "src/tools/cargo")))
(replace 'check (replace 'check
(lambda* _ (lambda* _
(invoke "./x.py" "test") ;; Disable parallel execution to prevent EAGAIN errors when
(invoke "./x.py" "test" "src/tools/cargo"))) ;; running tests.
(invoke "./x.py" "-j1" "test")
(invoke "./x.py" "-j1" "test" "src/tools/cargo")))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(invoke "./x.py" "install") (invoke "./x.py" "install")