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:
parent
a078a6ec3b
commit
514026d7de
@ -63,32 +63,34 @@
|
||||
(package
|
||||
(name "rust-bootstrap")
|
||||
(version "1.22.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://static.rust-lang.org/dist/"
|
||||
"rust-" version "-" %host-type ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
(match %host-type
|
||||
("i686-unknown-linux-gnu"
|
||||
"15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr")
|
||||
("x86_64-unknown-linux-gnu"
|
||||
"1yll78x6b3abnvgjf2b66gvp6mmcb9y9jdiqcwhmgc0z0i0fix4c")
|
||||
("armv7-unknown-linux-gnueabihf"
|
||||
"138a8l528kzp5wyk1mgjaxs304ac5ms8vlpq0ggjaznm6bn2j7a5")
|
||||
("aarch64-unknown-linux-gnu"
|
||||
"0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8")
|
||||
("mips64el-unknown-linux-gnuabi64"
|
||||
"07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2")
|
||||
(_ ""))))))
|
||||
(source #f)
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("patchelf" ,patchelf)))
|
||||
(inputs
|
||||
`(("gcc" ,(canonical-package gcc))
|
||||
("gcc:lib" ,(canonical-package gcc) "lib")
|
||||
("zlib" ,zlib)))
|
||||
("zlib" ,zlib)
|
||||
("source"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://static.rust-lang.org/dist/"
|
||||
"rust-" version "-" (nix-system->gnu-triplet) ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
(match (nix-system->gnu-triplet)
|
||||
("i686-unknown-linux-gnu"
|
||||
"15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr")
|
||||
("x86_64-unknown-linux-gnu"
|
||||
"1yll78x6b3abnvgjf2b66gvp6mmcb9y9jdiqcwhmgc0z0i0fix4c")
|
||||
("armv7-unknown-linux-gnueabihf"
|
||||
"138a8l528kzp5wyk1mgjaxs304ac5ms8vlpq0ggjaznm6bn2j7a5")
|
||||
("aarch64-unknown-linux-gnu"
|
||||
"0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8")
|
||||
("mips64el-unknown-linux-gnuabi64"
|
||||
"07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2")
|
||||
(_ ""))))))))
|
||||
(outputs '("out" "cargo"))
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
@ -117,7 +119,7 @@
|
||||
(invoke "bash" "install.sh"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "--components=rustc,"
|
||||
"rust-std-" %host-type))
|
||||
"rust-std-" ,(nix-system->gnu-triplet)))
|
||||
;; Instal cargo
|
||||
(invoke "bash" "install.sh"
|
||||
(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:
|
||||
;; https://github.com/rust-lang/rust/issues/45410
|
||||
(("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)))
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda* _
|
||||
@ -386,6 +394,10 @@ safety and thread safety guarantees.")
|
||||
(substitute* "src/tools/cargo/tests/death.rs"
|
||||
;; This is stuck when built in container.
|
||||
(("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))
|
||||
(add-after 'patch-cargo-tests 'fix-mtime-bug
|
||||
(lambda* _
|
||||
@ -433,7 +445,7 @@ rpath = true
|
||||
# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
|
||||
# This tests required patched LLVM
|
||||
codegen-tests = false
|
||||
[target." %host-type "]
|
||||
[target." ,(nix-system->gnu-triplet) "]
|
||||
llvm-config = \"" llvm "/bin/llvm-config" "\"
|
||||
cc = \"" gcc "/bin/gcc" "\"
|
||||
cxx = \"" gcc "/bin/g++" "\"
|
||||
@ -456,8 +468,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
|
||||
(invoke "./x.py" "build" "src/tools/cargo")))
|
||||
(replace 'check
|
||||
(lambda* _
|
||||
(invoke "./x.py" "test")
|
||||
(invoke "./x.py" "test" "src/tools/cargo")))
|
||||
;; Disable parallel execution to prevent EAGAIN errors when
|
||||
;; running tests.
|
||||
(invoke "./x.py" "-j1" "test")
|
||||
(invoke "./x.py" "-j1" "test" "src/tools/cargo")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(invoke "./x.py" "install")
|
||||
|
Loading…
Reference in New Issue
Block a user