summary refs log tree commit diff
path: root/gnu/packages/rust.scm
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2023-05-03 16:13:38 +0300
committerEfraim Flashner <efraim@flashner.co.il>2023-05-07 19:29:43 +0300
commit956672129235b8d6f44a9bb4e284f58ddb44d4e9 (patch)
treeacefbcb1414a540fe54239e3290efc390fdddbd4 /gnu/packages/rust.scm
parentf88591857e68fd9df4acbb7d9addc07dc242f417 (diff)
downloadguix-956672129235b8d6f44a9bb4e284f58ddb44d4e9.tar.gz
gnu: rust: Re-enable aarch64-linux support.
* gnu/packages/rust.scm (rust)[arguments]: Only enable parallel-builds
on x86_64-linux. Add a make-flag to adjust CFLAGS. In the custom 'build
phase remove an unneeded environment variable.
[supported-architectures]: Add aarch64-linux.
Diffstat (limited to 'gnu/packages/rust.scm')
-rw-r--r--gnu/packages/rust.scm14
1 files changed, 10 insertions, 4 deletions
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index f564133ecd..8e106a9927 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -197,6 +197,9 @@
        ;; Rust's own .so library files are not found in any RUNPATH, but
        ;; that doesn't seem to cause issues.
        #:validate-runpath? #f
+       ;; Most of the build is single-threaded. This also improves the
+       ;; build time on machines with "only" 8GB of RAM.
+       #:parallel-build? ,(target-x86-64?)
        #:make-flags
        (list ,(string-append "RUSTC_TARGET="
                              (or (%current-target-system)
@@ -204,6 +207,10 @@
              ,(string-append "RUSTC_VERSION=" version)
              ,(string-append "MRUSTC_TARGET_VER="
                              (version-major+minor version))
+             ;; mrustc expects a C11 compatible compiler. Use the default
+             ;; C language dialect from the GCC-10 compiler.
+             ;; This is necessary for some architectures.
+             "CFLAGS=-std=gnu11"
              "OUTDIR_SUF=")           ;do not add version suffix to output dir
        #:phases
        (modify-phases %standard-phases
@@ -302,7 +309,6 @@
                ;; Use PARLEVEL since both minicargo and mrustc use it
                ;; to set the level of parallelism.
                (setenv "PARLEVEL" (number->string job-count))
-               (setenv "CARGO_BUILD_JOBS" (number->string job-count))
                (display "Building mrustc...\n")
                (apply invoke "make" make-flags)
 
@@ -354,9 +360,9 @@ safety and thread safety guarantees.")
     ;; therefore the build process needs 8GB of RAM while building.
     ;; It may support i686 soon:
     ;; <https://github.com/thepowersgang/mrustc/issues/78>.
-    ;; XXX: The rust bootstrap is currently broken on aarch64 and riscv64,
-    ;; remove them until this is fixed.
-    (supported-systems '("x86_64-linux"))
+    ;; XXX: The rust bootstrap is currently broken on riscv64,
+    ;; remove it until this is fixed.
+    (supported-systems '("x86_64-linux" "aarch64-linux"))
 
     ;; Dual licensed.
     (license (list license:asl2.0 license:expat))))