From 1bb23335e63522a558594adf4ab30003eb141e31 Mon Sep 17 00:00:00 2001 From: Nikolai Merinov Date: Sun, 15 Apr 2018 10:05:14 +0200 Subject: gnu: rust: Enable more tests. * gnu/packages/rust.scm (rust-1.19)[arguments]<#:phases>[set-env]: Modify. (rust-1.23)<#:phases>[patch-cargo-tests]: New phase. (rust-1.23)<#:phases>[check]: Enable more tests. --- gnu/packages/rust.scm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index eaa8c48525..1112d08440 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -161,9 +161,12 @@ in turn be used to build the final Rust.") #:phases (modify-phases %standard-phases (add-after 'unpack 'set-env - (lambda _ + (lambda* (#:key inputs #:allow-other-keys) + ;; Disable test for cross compilation support. + (setenv "CFG_DISABLE_CROSS_TESTS" "1") (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) + (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) @@ -258,7 +261,17 @@ safety and thread safety guarantees.") (substitute-keyword-arguments (package-arguments rust-1.19) ((#:phases phases) `(modify-phases ,phases - (add-after 'patch-tests 'fix-mtime-bug + (add-after 'patch-tests 'patch-cargo-tests + (lambda _ + (substitute* "src/tools/cargo/tests/build.rs" + (("/usr/bin/env") (which "env")) + ;; Guix llvm is compiled without asmjs-unknown-emscripten. + (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs")) + (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")) + #t)) + (add-after 'patch-cargo-tests 'fix-mtime-bug (lambda* _ (substitute* "src/build_helper/lib.rs" ;; Bug in Rust code. @@ -327,7 +340,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ - (invoke "./x.py" "test"))) + (invoke "./x.py" "test") + (invoke "./x.py" "test" "src/tools/cargo"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") -- cgit v1.2.3 From fe61c88af93a230bee9aebb9c6c3836d153a4e0f Mon Sep 17 00:00:00 2001 From: Nikolai Merinov Date: Sun, 15 Apr 2018 10:11:37 +0200 Subject: gnu: rust: Update to 1.24.0. * gnu/packages/rust.scm (rust): Rename to... (rust-1.24): ...this. (rust): New variable. --- gnu/packages/rust.scm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 1112d08440..d95577e45b 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -362,7 +362,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) #t))))))))) -(define-public rust +(define-public rust-1.24 (let ((base-rust (rust-bootstrapped-package rust-1.23 "1.24.1" "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) @@ -373,3 +373,25 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" ((#:phases phases) `(modify-phases ,phases (delete 'fix-mtime-bug)))))))) + +(define-public rust + (let ((base-rust rust-1.24)) + (package + (inherit base-rust) + (version "1.25.0") + (source + (rust-source version + "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf")) + (native-inputs + (alist-replace "cargo-bootstrap" (list base-rust "cargo") + (alist-replace "rustc-bootstrap" (list base-rust) + (package-native-inputs base-rust)))) + (arguments + (substitute-keyword-arguments (package-arguments base-rust) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'patch-cargo-tests 'patch-cargo-index-update + (lambda* _ + (substitute* "src/tools/cargo/tests/generate-lockfile.rs" + ;; This test wants to update the crate index. + (("fn no_index_update") "#[ignore]\nfn no_index_update"))))))))))) -- cgit v1.2.3 From a92bf11c49e83d67b331526a8b752bb4ab85b2aa Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 15 Apr 2018 10:13:39 +0200 Subject: gnu: Add mrustc. * gnu/packages/rust.scm (mrustc): New variable. --- gnu/packages/rust.scm | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index d95577e45b..df5d803b6b 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017, 2018 Nikolai Merinov ;;; Copyright © 2017 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Danny Milosavljevic ;;; ;;; This file is part of GNU Guix. ;;; @@ -46,6 +47,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module ((guix build utils) #:select (alist-replace)) @@ -250,6 +252,92 @@ safety and thread safety guarantees.") (alist-replace "rustc-bootstrap" (list base-rust) (package-native-inputs base-rust)))))) +(define-public mrustc + (let ((commit "1a16def28935548e29be0fe5a632e25c83045924") + (revision "0") + (rustc-version "1.19.0")) + (package + (name "mrustc") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/thepowersgang/mrustc.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0i5kqnzsd1rkj8qm147jx934nyn9sd1fz2b4achj9z0r00h84dh6")))) + (outputs '("out" "cargo")) + (build-system gnu-build-system) + (inputs + `(("llvm" ,llvm-3.9.1))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ;; Required for the libstd sources. + ("rustc" + ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) + (arguments + `(#:tests? #f + #:make-flags (list (string-append "LLVM_CONFIG=" + (assoc-ref %build-inputs "llvm") + "/bin/llvm-config")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-target-compiler + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "minicargo.mk" + ;; Don't try to build LLVM. + (("^[$][(]LLVM_CONFIG[)]:") "xxx:") + ;; Build for the correct target architecture. + (("^RUSTC_TARGET := x86_64-unknown-linux-gnu") + (string-append "RUSTC_TARGET := " + ,(or (%current-target-system) + (nix-system->gnu-triplet + (%current-system)))))) + (invoke "tar" "xf" (assoc-ref inputs "rustc")) + (chdir "rustc-1.19.0-src") + (invoke "patch" "-p0" "../rust_src.patch") + (chdir "..") + #t)) + (delete 'configure) + (add-after 'build 'build-minicargo + (lambda _ + (for-each (lambda (target) + (invoke "make" "-f" "minicargo.mk" target)) + '("output/libstd.hir" "output/libpanic_unwind.hir" + "output/libproc_macro.hir" "output/libtest.hir")) + ;; Technically the above already does it - but we want to be clear. + (invoke "make" "-C" "tools/minicargo"))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (tools-bin (string-append out "/tools/bin")) + (cargo-out (assoc-ref outputs "cargo")) + (cargo-bin (string-append cargo-out "/bin")) + (lib (string-append out "/lib")) + (lib/rust (string-append lib "/mrust")) + (gcc (assoc-ref inputs "gcc"))) + ;; These files are not reproducible. + (for-each delete-file (find-files "output" "\\.txt$")) + (mkdir-p lib) + (copy-recursively "output" lib/rust) + (mkdir-p bin) + (mkdir-p tools-bin) + (install-file "bin/mrustc" bin) + ;; minicargo uses relative paths to resolve mrustc. + (install-file "tools/bin/minicargo" tools-bin) + (install-file "tools/bin/minicargo" cargo-bin) + #t)))))) + (synopsis "Compiler for the Rust progamming language") + (description "Rust is a systems programming language that provides memory +safety and thread safety guarantees.") + (home-page "https://github.com/thepowersgang/mrustc") + ;; Dual licensed. + (license (list license:asl2.0 license:expat))))) + (define-public rust-1.23 (package (inherit rust-1.19) -- cgit v1.2.3 From af4ea9c5cbeb6fe9c3c694d97db07c335c2e51c9 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 15 Apr 2018 10:16:41 +0200 Subject: gnu: rust: Don't #ignore the same test twice. * gnu/packages/rust.scm (rust-1.19)[arguments]<#:phases>[patch-tests]: Don't #ignore the same test twice. --- gnu/packages/rust.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index df5d803b6b..8c5abfcbae 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -186,7 +186,9 @@ in turn be used to build the final Rust.") "#[ignore]\nfn connect_timeout_unroutable")) ;; (substitute* "src/libstd/sys/unix/process/process_common.rs" - (("fn test_process_mask") "#[ignore]\nfn test_process_mask")) + (("#\\[cfg_attr\\(target_arch = \"arm\", ignore\\)\\] + fn test_process_mask") "#[ignore] + fn test_process_mask")) ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; (delete-file-recursively "src/test/run-make/linker-output-non-utf8") -- cgit v1.2.3 From 67ca98ec7818f5b63fe041bfee4ef10826635685 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 22 Mar 2018 09:14:53 +0200 Subject: gnu: rust: Don't build for "native" arch on ARM. * gnu/packages/rust.scm (rust-1.23)<#:phases>[dont-build-native]: New phase. --- gnu/packages/rust.scm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 8c5abfcbae..0df649c119 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -351,6 +351,12 @@ safety and thread safety guarantees.") (substitute-keyword-arguments (package-arguments rust-1.19) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'dont-build-native + (lambda _ + ;; XXX: Revisit this when we use gcc 6. + (substitute* "src/binaryen/CMakeLists.txt" + (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") "")) + #t)) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" -- cgit v1.2.3 From 237587f1e07f79d1d39212e05f9548ddc6856387 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 15 Apr 2018 23:45:34 +0200 Subject: gnu: rust: Disable test_process_mask tests. * gnu/packages/rust.scm (rust-1.19): Disable test_process_mask tests. --- gnu/packages/rust.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 0df649c119..0192b04ddf 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -186,8 +186,8 @@ in turn be used to build the final Rust.") "#[ignore]\nfn connect_timeout_unroutable")) ;; (substitute* "src/libstd/sys/unix/process/process_common.rs" - (("#\\[cfg_attr\\(target_arch = \"arm\", ignore\\)\\] - fn test_process_mask") "#[ignore] + (("fn test_process_mask") "#[allow(unused_attributes)] + #[ignore] fn test_process_mask")) ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; -- cgit v1.2.3 From 8366a67b0a27b2bb9190ff45d8fd97b42e0d021d Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Tue, 17 Apr 2018 19:20:41 +0200 Subject: gnu: mrustc: Update to 0.0.0-1.4f98e43. * gnu/packages/rust.scm (mrustc): Update to 0.0.0-1.4f98e43. --- gnu/packages/rust.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 0192b04ddf..9ba2c42c68 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -255,8 +255,8 @@ safety and thread safety guarantees.") (package-native-inputs base-rust)))))) (define-public mrustc - (let ((commit "1a16def28935548e29be0fe5a632e25c83045924") - (revision "0") + (let ((commit "4f98e4322ef7aabd3bbef8cd93c0980cd6eeeed1") + (revision "1") (rustc-version "1.19.0")) (package (name "mrustc") @@ -269,7 +269,7 @@ safety and thread safety guarantees.") (file-name (git-file-name name version)) (sha256 (base32 - "0i5kqnzsd1rkj8qm147jx934nyn9sd1fz2b4achj9z0r00h84dh6")))) + "1hk1x2iv64il5g2n3z06d6h219hnxg1w84lj7vi1lydqa65qk92p")))) (outputs '("out" "cargo")) (build-system gnu-build-system) (inputs -- cgit v1.2.3 From 94b22905ab4ebc8de4c42082df51de96bb824dd7 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 18 Apr 2018 09:40:06 +0300 Subject: gnu: rust: Skip test_loading_cosine test. * gnu/packages/rust.scm (rust-1.19.0)[arguments]: Modify custom 'patch-tests phase to skip test_loading_cosine test. (rust-1.24.0)[arguments]: Modify inherited 'patch-tests to point to updated code locations. --- gnu/packages/rust.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'gnu/packages/rust.scm') diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 9ba2c42c68..0a9d5bb382 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -192,6 +192,10 @@ in turn be used to build the final Rust.") ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (substitute* "src/librustc_back/dynamic_lib.rs" + ;; 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")) #t))) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ @@ -468,6 +472,31 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases + (replace 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "src/libstd/process.rs" + ;; The newline is intentional. + ;; There's a line length "tidy" check in Rust which would + ;; fail otherwise. + (("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\""))) + (substitute* "src/libstd/net/tcp.rs" + ;; There is no network in build environment + (("fn connect_timeout_unroutable") + "#[ignore]\nfn connect_timeout_unroutable")) + ;; + (substitute* "src/libstd/sys/unix/process/process_common.rs" + (("fn test_process_mask") "#[allow(unused_attributes)] + #[ignore] + fn test_process_mask")) + ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. + ;; + (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (substitute* "src/librustc_metadata/dynamic_lib.rs" + ;; 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")) + #t))) (delete 'fix-mtime-bug)))))))) (define-public rust -- cgit v1.2.3