From 956672129235b8d6f44a9bb4e284f58ddb44d4e9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 3 May 2023 16:13:38 +0300 Subject: [PATCH] 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. --- gnu/packages/rust.scm | 14 ++++++++++---- 1 file 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 @@ (define rust-bootstrap ;; 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 @@ (define rust-bootstrap ,(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 @@ (define rust-bootstrap ;; 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 @@ (define rust-bootstrap ;; therefore the build process needs 8GB of RAM while building. ;; It may support i686 soon: ;; . - ;; 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))))