GNU bug report logs - #31645
[PATCH] gnu: rust: Add support for building 32-bit packages on 64-bit hosts.

Previous Next

Package: guix-patches;

Reported by: Robin Templeton <rtempleton <at> igalia.com>

Date: Tue, 29 May 2018 16:41:02 UTC

Severity: normal

Tags: patch

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 31645 in the body.
You can then email your comments to 31645 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#31645; Package guix-patches. (Tue, 29 May 2018 16:41:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Robin Templeton <rtempleton <at> igalia.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 29 May 2018 16:41:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robin Templeton <rtempleton <at> igalia.com>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: rust: Add support for building 32-bit packages on 64-bit
 hosts.
Date: Tue, 29 May 2018 12:02:41 -0400
* (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.
---
 gnu/packages/rust.scm | 62 +++++++++++++++++++++++++++++++--------------------
 1 file changed, 38 insertions(+), 24 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 51d4f6c04..62b5ee5ff 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -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")
-- 
2.16.1




Reply sent to ludo <at> gnu.org (Ludovic Courtès):
You have taken responsibility. (Fri, 01 Jun 2018 11:55:02 GMT) Full text and rfc822 format available.

Notification sent to Robin Templeton <rtempleton <at> igalia.com>:
bug acknowledged by developer. (Fri, 01 Jun 2018 11:55:02 GMT) Full text and rfc822 format available.

Message #10 received at 31645-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Robin Templeton <rtempleton <at> igalia.com>
Cc: 31645-done <at> debbugs.gnu.org
Subject: Re: [bug#31645] [PATCH] gnu: rust: Add support for building 32-bit
 packages on 64-bit hosts.
Date: Fri, 01 Jun 2018 13:54:43 +0200
Hi Robin,

Good to see you here!  :-)

Robin Templeton <rtempleton <at> igalia.com> skribis:

> * (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.

I tweaked the commit log to match our conventions and pushed as
a47537831c12f599cbffc37f822c5ccfa669d555.

Thank you!

Ludo’.

PS: Building Rust really takes ages…




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 30 Jun 2018 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 350 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.