From unknown Fri Jun 20 07:15:00 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#38110 <38110@debbugs.gnu.org> To: bug#38110 <38110@debbugs.gnu.org> Subject: Status: [PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. Reply-To: bug#38110 <38110@debbugs.gnu.org> Date: Fri, 20 Jun 2025 14:15:00 +0000 retitle 38110 [PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. reassign 38110 guix-patches submitter 38110 Danny Milosavljevic severity 38110 normal tag 38110 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 17:28:58 2019 Received: (at submit) by debbugs.gnu.org; 7 Nov 2019 22:28:58 +0000 Received: from localhost ([127.0.0.1]:44070 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSqGt-0004uQ-Sn for submit@debbugs.gnu.org; Thu, 07 Nov 2019 17:28:58 -0500 Received: from lists.gnu.org ([209.51.188.17]:59812) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSqGq-0004uG-7X for submit@debbugs.gnu.org; Thu, 07 Nov 2019 17:28:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57767) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSqGp-0000Wu-9N for guix-patches@gnu.org; Thu, 07 Nov 2019 17:28:52 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_LOW, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iSqGk-0006Fo-7Y for guix-patches@gnu.org; Thu, 07 Nov 2019 17:28:51 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:57218) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iSqGi-0006Dj-Je for guix-patches@gnu.org; Thu, 07 Nov 2019 17:28:46 -0500 Received: from localhost.localdomain (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id B27A033615B5; Thu, 7 Nov 2019 23:28:39 +0100 (CET) From: Danny Milosavljevic To: guix-patches@gnu.org Subject: [PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. Date: Thu, 7 Nov 2019 23:27:56 +0100 Message-Id: <20191107222756.20064-1-dannym@scratchpost.org> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 85.13.145.193 X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Danny Milosavljevic (2): gnu: mrustc: Update to 0.9. gnu: rust: Bootstrap rust@1.29.0 from mrustc. gnu/local.mk | 1 - ...ix-variable-length-integer-receiving.patch | 15 - gnu/packages/rust.scm | 494 ++++-------------- 3 files changed, 105 insertions(+), 405 deletions(-) delete mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length= -integer-receiving.patch From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 17:30:20 2019 Received: (at 38110) by debbugs.gnu.org; 7 Nov 2019 22:30:20 +0000 Received: from localhost ([127.0.0.1]:44077 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSqID-0004yo-5n for submit@debbugs.gnu.org; Thu, 07 Nov 2019 17:30:20 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:38826) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSqI7-0004yW-Lx for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 17:30:16 -0500 Received: from localhost.localdomain (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 704CC33615B5; Thu, 7 Nov 2019 23:30:10 +0100 (CET) From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: [PATCH 1/2] gnu: mrustc: Update to 0.9. Date: Thu, 7 Nov 2019 23:29:59 +0100 Message-Id: <20191107223000.20242-1-dannym@scratchpost.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191107222756.20064-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) * gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. * gnu/packages/rust.scm: Update to 0.9. [source](patches): Remove it. --- gnu/local.mk | 1 - ...fix-variable-length-integer-receiving.patch | 15 --------------- gnu/packages/rust.scm | 18 ++++++++---------- 3 files changed, 8 insertions(+), 26 deletions(-) delete mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch diff --git a/gnu/local.mk b/gnu/local.mk index 2513b4003c..5f52372875 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1140,7 +1140,6 @@ dist_patch_DATA = \ %D%/packages/patches/mozjs38-tracelogger.patch \ %D%/packages/patches/mozjs38-version-detection.patch \ %D%/packages/patches/mrrescue-support-love-11.patch \ - %D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \ %D%/packages/patches/mtools-mformat-uninitialized.patch \ %D%/packages/patches/mumble-1.2.19-abs.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ diff --git a/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch b/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch deleted file mode 100644 index 9e76653a07..0000000000 --- a/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch +++ /dev/null @@ -1,15 +0,0 @@ -https://github.com/thepowersgang/mrustc/issues/109 -From: Danny Milosavljevic -Date: Fri, 3 Jan 2019 13:00:00 +0100 - ---- mrustc/src/expand/proc_macro.cpp.orig 2019-02-01 14:16:54.208486062 +0100 -+++ mrustc/src/expand/proc_macro.cpp 2019-02-01 14:17:14.350925705 +0100 -@@ -977,7 +977,7 @@ - for(;;) - { - auto b = recv_u8(); -- v |= static_cast(b) << ofs; -+ v |= static_cast(b & 0x7F) << ofs; - if( (b & 0x80) == 0 ) - break; - ofs += 7; diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index f3fee4c126..a752f9ece4 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -88,10 +88,10 @@ (package-native-inputs base-rust)))))) (define-public mrustc - (let ((rustc-version "1.19.0")) + (let ((rustc-version "1.29.0")) (package (name "mrustc") - (version "0.8.0") + (version "0.9") (source (origin (method git-fetch) (uri (git-reference @@ -100,9 +100,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i")) - (patches - (search-patches "mrustc-0.8.0-fix-variable-length-integer-receiving.patch")))) + "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))) (outputs '("out" "cargo")) (build-system gnu-build-system) (inputs @@ -111,7 +109,7 @@ `(("bison" ,bison) ("flex" ,flex) ;; Required for the libstd sources. - ("rustc" ,(package-source rust-1.19)))) + ("rustc" ,(package-source rust-1.29)))) (arguments `(#:test-target "local_tests" #:make-flags (list (string-append "LLVM_CONFIG=" @@ -135,8 +133,8 @@ ,(or (%current-target-system) (nix-system->gnu-triplet-for-rust))))) (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir "rustc-1.19.0-src") - (invoke "patch" "-p0" "../rust_src.patch") + (chdir "rustc-1.29.0-src") + (invoke "patch" "-p0" "../rustc-1.29.0-src.patch") (chdir "..") #t)) (replace 'configure @@ -147,8 +145,8 @@ (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")) + '("output/libstd.rlib" "output/libpanic_unwind.rlib" + "output/libproc_macro.rlib" "output/libtest.rlib")) ;; Technically the above already does it - but we want to be clear. (invoke "make" "-C" "tools/minicargo"))) (replace 'install From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 17:30:31 2019 Received: (at 38110) by debbugs.gnu.org; 7 Nov 2019 22:30:31 +0000 Received: from localhost ([127.0.0.1]:44079 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSqIG-0004z2-BO for submit@debbugs.gnu.org; Thu, 07 Nov 2019 17:30:30 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:38834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSqI9-0004yb-Pc for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 17:30:19 -0500 Received: from localhost.localdomain (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 8EFFD3361A00; Thu, 7 Nov 2019 23:30:12 +0100 (CET) From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: [PATCH 2/2] gnu: rust: Bootstrap rust@1.29.0 from mrustc. Date: Thu, 7 Nov 2019 23:30:00 +0100 Message-Id: <20191107223000.20242-2-dannym@scratchpost.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191107223000.20242-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20191107223000.20242-1-dannym@scratchpost.org> MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * gnu/packages/rust.scm (rust-1.19): Delete variable. (rust-1.20): Delete variable. (rust-1.21): Delete variable. (rust-1.22): Delete variable. (rust-1.23): Delete variable. (rust-1.24): Delete variable. (rust-1.25): Delete variable. (rust-1.26): Delete variable. (rust-1.27): Delete variable. (rust-1.28): Delete variable. (rust-1.29): Bootstrap from mrustc. (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. --- gnu/packages/rust.scm | 476 +++++++++--------------------------------- 1 file changed, 97 insertions(+), 379 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index a752f9ece4..0102a97a80 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -178,18 +178,19 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat))))) -(define rust-1.19 +(define rust-1.29 (package (name "rust") - (version "1.19.0") + (version "1.29.0") (source (origin (method url-fetch) - (uri (rust-uri "1.19.0")) - (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (uri (rust-uri "1.29.0")) + (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9sx4")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (map search-patch '("rust-1.19-mrustc.patch"))))) + (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch"))))) (outputs '("out" "cargo")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) @@ -201,6 +202,7 @@ safety and thread safety guarantees.") (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) ;; Disable test for cross compilation support. +;(write "X") (setenv "CFG_DISABLE_CROSS_TESTS" "1") (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) @@ -208,24 +210,6 @@ safety and thread safety guarantees.") ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) - (add-after 'unpack 'patch-cargo-tomls - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "src/librustc_errors/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -term = \"0.4.4\" -")) - (substitute* "src/librustc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -getopts = { path = \"../libgetopts\" } -")) - (substitute* "src/librustdoc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -test = { path = \"../libtest\" } -")) - #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -244,27 +228,29 @@ test = { path = \"../libtest\" } #[ignore] fn test_process_mask")) #t))) + (add-after 'patch-tests 'patch-cargo-index-update + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" + ;; This test wants to update the crate index. + (("fn no_index_update") "#[ignore]\nfn no_index_update")) + #t)) (add-after 'patch-tests 'patch-aarch64-test (lambda* _ - (substitute* "src/librustc_back/dynamic_lib.rs" + (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)) - (add-after 'patch-tests 'use-readelf-for-tests - (lambda* _ - ;; 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 ")) + ;; This test fails on aarch64 with llvm@6.0: + ;; https://github.com/rust-lang/rust/issues/49807 + ;; other possible solution: + ;; https://github.com/rust-lang/rust/pull/47688 + (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") #t)) (add-after 'patch-tests 'remove-unsupported-tests (lambda* _ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; - (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ @@ -289,14 +275,20 @@ test = { path = \"../libtest\" } (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) +;(invoke "ls" "src/vendor/getopts") +;(newline) (setenv "CFG_COMPILER_HOST_TRIPLE" ,(nix-system->gnu-triplet (%current-system))) (setenv "CFG_RELEASE" "") (setenv "CFG_RELEASE_CHANNEL" "stable") (setenv "CFG_LIBDIR_RELATIVE" "lib") - (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + (setenv "CFG_VERSION" "1.29.0-stable-mrustc") ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. - (mkdir-p "output") + ;; Crate::load_extern_crate ignores the search path, so make + ;; the situation easier for it. + (copy-recursively (string-append rustc-bootstrap "/lib/mrust") + "output") + ;(mkdir-p "output") (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/rustc" "--vendor-dir" "src/vendor" "--output-dir" "output/rustc-build" @@ -311,7 +303,7 @@ test = { path = \"../libtest\" } (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/tools/cargo" "--vendor-dir" "src/vendor" "--output-dir" "output/cargo-build" - "-L" "output/" + ;"-L" "output/" "-L" (string-append rustc-bootstrap "/lib/mrust") "-j" "1") ;; Now use the newly-built rustc to build the libraries. @@ -419,10 +411,10 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define-public rust-1.20 +(define-public rust-1.30 (let ((base-rust - (rust-bootstrapped-package rust-1.19 "1.20.0" - "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) + (rust-bootstrapped-package rust-1.29 "1.30.1" + "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) (package (inherit base-rust) (source @@ -431,20 +423,45 @@ safety and thread safety guarantees.") (snippet '(begin (delete-file-recursively "src/jemalloc") (delete-file-recursively "src/llvm") + (delete-file-recursively "src/llvm-emscripten") + (delete-file-recursively "src/tools/clang") + (delete-file-recursively "src/tools/lldb") #t)) (patches '()))) (outputs '("out" "doc" "cargo")) - ;; Since rust-1.19 is local, it's quite probable that Hydra - ;; will build rust-1.19 only as a dependency of rust-1.20. + ;; Since rust-2.19 is local, it's quite probable that Hydra + ;; will build rust-1.29 only as a dependency of rust-1.20. ;; But then Hydra will use the wrong properties, the ones here, - ;; for rust-1.19. Therefore, we copied the properties of - ;; rust-1.19 here. + ;; for rust-1.29. Therefore, we copied the properties of + ;; rust-1.29 here. (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) + (inputs + ;; Use LLVM 6.0 + (alist-replace "llvm" (list llvm-6) + (package-inputs base-rust))) (arguments - (substitute-keyword-arguments (package-arguments rust-1.19) + (substitute-keyword-arguments (package-arguments rust-1.29) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'remove-flaky-test + (lambda _ + ;; See . + (when (file-exists? "src/test/run-make/issue-26092") + (delete-file-recursively "src/test/run-make/issue-26092")) + #t)) + (add-after 'configure 'enable-codegen-tests + ;; Codegen tests should pass with llvm 6, so enable them. + (lambda* _ + (substitute* "config.toml" + (("codegen-tests = false") "")) + #t)) + ;; The test has been moved elsewhere. + (add-after 'patch-tests 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" @@ -466,12 +483,29 @@ safety and thread safety guarantees.") (("fn finds_author_git") "#[ignore]\nfn finds_author_git") (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) #t)) - (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test - ;; https://github.com/rust-lang/rust/issues/47863 - (lambda _ - (substitute* "src/test/run-pass/out-of-stack.rs" - (("// ignore-android") "// ignore-test\n// ignore-android")) - #t)) + (add-after 'patch-cargo-tests 'patch-cargo-env-shebang + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "src/tools/cargo/tests/testsuite/fix.rs" + ;; Cargo has a test which explicitly sets a + ;; RUSTC_WRAPPER environment variable which points + ;; to /usr/bin/env. Since it's not a shebang, it + ;; needs to be manually patched + (("\"/usr/bin/env\"") + (string-append "\"" coreutils "/bin/env\""))) + #t))) + (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/package.rs" + ;; These tests largely check that cargo outputs warning/error + ;; messages as expected. It seems that cargo outputs an + ;; absolute path to something in the store instead of the + ;; expected relative path (e.g. `[..]`) so we'll ignore + ;; these for now + (("fn include") "#[ignore]\nfn include") + (("fn exclude") "#[ignore]\nfn exclude")) + #t)) + (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -523,16 +557,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" "/tmp/cc") (setenv "PATH" (string-append "/tmp:" (getenv "PATH"))) #t)) - (add-after 'provide-cc 'configure-archiver - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/build_helper/lib.rs" - ;; Make sure "ar" is always used as the archiver. - (("\"musl\"") "\"\"") - ;; Then substitute "ar" by our name. - (("\"ar\"") (string-append "\"" - (assoc-ref inputs "binutils") - "/bin/ar\""))) - #t)) (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ @@ -549,11 +573,14 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ - ;; Disable parallel execution to prevent EAGAIN errors when - ;; running tests. - (invoke "./x.py" "-j1" "test" "-vv") - (invoke "./x.py" "-j1" "test" "src/tools/cargo") - #t)) + ;; Enable parallel execution. + (let ((parallel-job-spec + (string-append "-j" (number->string + (min 4 + (parallel-job-count)))))) + (invoke "./x.py" parallel-job-spec "test" "-vv") + (invoke "./x.py" parallel-job-spec "test" + "src/tools/cargo")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") @@ -591,315 +618,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) #t)))))))))) -(define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" - "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'remove-ar - (lambda* (#:key inputs #:allow-other-keys) - ;; Remove because toml complains about "unknown field". - (substitute* "config.toml" - (("^ar =.*") "\n")) - #t))))))))) - -(define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" - "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'remove-flaky-test - (lambda _ - ;; See . - (when (file-exists? "src/test/run-make/issue-26092") - (delete-file-recursively "src/test/run-make/issue-26092")) - #t))))))))) - -(define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" - "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-archiver) - (delete 'remove-ar) - (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))))))))) - -(define-public rust-1.24 - (let ((base-rust - (rust-bootstrapped-package rust-1.23 "1.24.1" - "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'use-readelf-for-tests) - (replace 'patch-aarch64-test - (lambda* _ - (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))))))))) - -;;; Rust 1.25 release support work with llvm 6--but build with llvm 6 is -;;; not determenistic due to . -;;; Keep using llvm 3.9.1 until builds become determenistic -(define-public rust-1.25 - (let ((base-rust - (rust-bootstrapped-package rust-1.24 "1.25.0" - "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - #t)) - (patches (map search-patch - '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (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")) - #t)) - (replace 'patch-aarch64-test - (lambda _ - (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")) - ;; This test fails on aarch64 with llvm@6.0: - ;; https://github.com/rust-lang/rust/issues/49807 - ;; other possible solution: - ;; https://github.com/rust-lang/rust/pull/47688 - (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") - #t)) - (delete 'ignore-glibc-2.27-incompatible-test)))))))) - -(define-public rust-1.26 - (let ((base-rust - (rust-bootstrapped-package rust-1.25 "1.26.2" - "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch - '("rust-coresimd-doctest.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - ;; binaryen was replaced with LLD project from LLVM - (delete 'dont-build-native) - (replace 'check - (lambda* _ - ;; Enable parallel execution. - (let ((parallel-job-spec - (string-append "-j" (number->string - (min 4 - (parallel-job-count)))))) - (invoke "./x.py" parallel-job-spec "test" "-vv") - (invoke "./x.py" parallel-job-spec "test" - "src/tools/cargo")))) - (replace 'remove-unsupported-tests - (lambda* _ - ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. - ;; - (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") - #t)) - (replace 'patch-cargo-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/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/testsuite/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/testsuite/test.rs" - (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) - - ;; Avoid dependency on "git". - (substitute* "src/tools/cargo/tests/testsuite/new.rs" - (("fn author_prefers_cargo") "#[ignore]\nfn author_prefers_cargo") - (("fn finds_author_git") "#[ignore]\nfn finds_author_git") - (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) - #t)) - (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel - (lambda* _ - ;; This test failed to work on "nightly" channel builds - ;; https://github.com/rust-lang/cargo/issues/5648 - (substitute* "src/tools/cargo/tests/testsuite/resolve.rs" - (("fn test_resolving_minimum_version_with_transitive_deps") - "#[ignore]\nfn test_resolving_minimum_version_with_transitive_deps")) - #t)) - (replace 'patch-cargo-index-update - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" - ;; This test wants to update the crate index. - (("fn no_index_update") "#[ignore]\nfn no_index_update")) - #t))))))))) - -(define-public rust-1.27 - (let ((base-rust - (rust-bootstrapped-package rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'install 'mkdir-prefix-paths - (lambda* (#:key outputs #:allow-other-keys) - ;; As result of https://github.com/rust-lang/rust/issues/36989 - ;; `prefix' directory should exist before `install' call - (mkdir-p (assoc-ref outputs "out")) - (mkdir-p (assoc-ref outputs "cargo")) - #t)) - (add-after 'patch-cargo-tests 'disable-thinlto-test - (lambda* _ - ;; thinlto required llvm 6.0 for work - (substitute* "src/tools/cargo/tests/testsuite/path.rs" - (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works")) - #t))))))))) - -(define-public rust-1.28 - (let ((base-rust - (rust-bootstrapped-package rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (inputs - ;; Use LLVM 6.0 - (alist-replace "llvm" (list llvm-6) - (package-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'enable-codegen-tests - ;; Codegen tests should pass with llvm 6, so enable them. - (lambda* _ - (substitute* "config.toml" - (("codegen-tests = false") "")) - #t)) - (add-after 'patch-tests 'disable-amd64-avx-test - ;; That test would fail on x86_64 machines without avx. - (lambda* _ - (substitute* "src/test/run-pass/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t)) - ;; The thinlto test should pass with llvm 6. - (delete 'disable-thinlto-test)))))))) - -(define-public rust-1.29 - (let ((base-rust - (rust-bootstrapped-package rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))))))) - -(define-public rust-1.30 - (let ((base-rust - (rust-bootstrapped-package rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - (delete-file-recursively "src/tools/clang") - (delete-file-recursively "src/tools/lldb") - #t)))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'patch-cargo-tests 'patch-cargo-env-shebang - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) - (substitute* "src/tools/cargo/tests/testsuite/fix.rs" - ;; Cargo has a test which explicitly sets a - ;; RUSTC_WRAPPER environment variable which points - ;; to /usr/bin/env. Since it's not a shebang, it - ;; needs to be manually patched - (("\"/usr/bin/env\"") - (string-append "\"" coreutils "/bin/env\""))) - #t))) - (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/package.rs" - ;; These tests largely check that cargo outputs warning/error - ;; messages as expected. It seems that cargo outputs an - ;; absolute path to something in the store instead of the - ;; expected relative path (e.g. `[..]`) so we'll ignore - ;; these for now - (("fn include") "#[ignore]\nfn include") - (("fn exclude") "#[ignore]\nfn exclude")) - #t)) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/run-pass/issues/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t))))))))) - (define-public rust-1.31 (let ((base-rust (rust-bootstrapped-package rust-1.30 "1.31.1" From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 18:17:14 2019 Received: (at 38110) by debbugs.gnu.org; 7 Nov 2019 23:17:14 +0000 Received: from localhost ([127.0.0.1]:44111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSr1e-0006AW-0l for submit@debbugs.gnu.org; Thu, 07 Nov 2019 18:17:14 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:43168) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSr1Z-0006AH-Qb for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 18:17:11 -0500 Received: from localhost (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 9C3B23360ED9 for <38110@debbugs.gnu.org>; Fri, 8 Nov 2019 00:17:07 +0100 (CET) Date: Fri, 8 Nov 2019 00:17:03 +0100 From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: Re: [PATCH 1/2] gnu: mrustc: Update to 0.9. Message-ID: <20191108001703.6bba1088@scratchpost.org> In-Reply-To: <20191107223000.20242-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20191107223000.20242-1-dannym@scratchpost.org> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/9.QV6l1eMjuZWpn8hVQDEvh"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --Sig_/9.QV6l1eMjuZWpn8hVQDEvh Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable (It might make sense to only update mrustc and not update the rust it boots= traps in this patch) --Sig_/9.QV6l1eMjuZWpn8hVQDEvh Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl3Epe8ACgkQ5xo1VCww uqXsEwf+O2obVPlNlsIcdpQWkQv++dGs/J8LTejYnQaDCOWedGI33Y4cqGJDRToT Jcd5EBefeDWa34fgRj+SSkrNipNedqdR2N8bDM7IqqkCjW+CROyc2wFqJ/okxa5D StMJn1mswkdDrr8L2PzqKvndb2IvStaU8x89hzvh6x2BF9d825cZgEBIKLoES5nC YhTh/Etf6U8ibkDuLAAmGBKT3FJ1GWmVvVWBTN2n3O6g8z5vs3DE2+wWFEfFfXak VM6j+UnDDhyu51cvf05mICWWXh+1J/p1/dyEB74lzG3fPE5EXtnGCiisLMlW7m2S yGvIDqVrnxigQ5jqhGONXc7YKnM9sg== =DL2o -----END PGP SIGNATURE----- --Sig_/9.QV6l1eMjuZWpn8hVQDEvh-- From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 18:18:29 2019 Received: (at 38110) by debbugs.gnu.org; 7 Nov 2019 23:18:29 +0000 Received: from localhost ([127.0.0.1]:44115 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSr2q-0006CZ-Mj for submit@debbugs.gnu.org; Thu, 07 Nov 2019 18:18:28 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:43276) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSr2o-0006CQ-N2 for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 18:18:27 -0500 Received: from localhost (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id C336A3360ED9 for <38110@debbugs.gnu.org>; Fri, 8 Nov 2019 00:18:25 +0100 (CET) Date: Fri, 8 Nov 2019 00:18:24 +0100 From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: Re: [PATCH 2/2] gnu: rust: Bootstrap rust@1.29.0 from mrustc. Message-ID: <20191108001824.523f0e1d@scratchpost.org> In-Reply-To: <20191107223000.20242-2-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20191107223000.20242-1-dannym@scratchpost.org> <20191107223000.20242-2-dannym@scratchpost.org> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/oCeZM0DpVEf/oX9G=196lS6"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --Sig_/oCeZM0DpVEf/oX9G=196lS6 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable (It might make sense to make it target 1.29.2--although mrustc upstream doe= sn't do that) --Sig_/oCeZM0DpVEf/oX9G=196lS6 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl3EpkAACgkQ5xo1VCww uqWNXQf+ITZxPT7yspCh/xy4UQOhrR3vQzcKywL0C3cOUL4UdGyeVSk6sMXLuXXz mfbNLUiAE4eNwZx+VulXAERRmzog2UgjoMXAZ24Ez4yk6y4Ii++CAAO196cKlrXR iH7ggbVkvIi7p+pjb4filDK6qF53jH9CI+fR4ojmTQZocqF8IxmTibn1aE+M47D+ OJOyDGb3wCaMaTOiNqdfaYTDDS1PySCrhcVB7hMR3zsHI9aNHVCMc1FrDSBbDbSt i/ISRI6/6Hh4j8457D6VZnI/MIamu6wLysHYgMT35DJFNQMckCBKCvcekzdxLfJ8 gzxa0NB1bekpVjFbEq1eLdOVd5/04g== =6Djl -----END PGP SIGNATURE----- --Sig_/oCeZM0DpVEf/oX9G=196lS6-- From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 21:57:09 2019 Received: (at 38110) by debbugs.gnu.org; 8 Nov 2019 02:57:09 +0000 Received: from localhost ([127.0.0.1]:44293 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSuST-0006sT-F1 for submit@debbugs.gnu.org; Thu, 07 Nov 2019 21:57:09 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:34280) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSuSN-0006s8-Q3 for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 21:57:07 -0500 Received: from localhost.localdomain (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 9B5213360F70; Fri, 8 Nov 2019 03:57:01 +0100 (CET) From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: [PATCH v2 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. Date: Fri, 8 Nov 2019 03:46:57 +0100 Message-Id: <20191108024659.10138-1-dannym@scratchpost.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191107223000.20242-1-dannym@scratchpost.org> References: <20191107223000.20242-1-dannym@scratchpost.org> MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Danny Milosavljevic (2): gnu: mrustc: Update to 0.9. gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. gnu/local.mk | 1 - ...ix-variable-length-integer-receiving.patch | 15 - gnu/packages/rust.scm | 495 ++++-------------- 3 files changed, 106 insertions(+), 405 deletions(-) delete mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 21:57:10 2019 Received: (at 38110) by debbugs.gnu.org; 8 Nov 2019 02:57:10 +0000 Received: from localhost ([127.0.0.1]:44295 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSuST-0006sW-PK for submit@debbugs.gnu.org; Thu, 07 Nov 2019 21:57:10 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:34282) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSuSO-0006sB-RK for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 21:57:07 -0500 Received: from localhost.localdomain (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 3828533615F6; Fri, 8 Nov 2019 03:57:03 +0100 (CET) From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: [PATCH v2 1/2] gnu: mrustc: Update to 0.9. Date: Fri, 8 Nov 2019 03:46:58 +0100 Message-Id: <20191108024659.10138-2-dannym@scratchpost.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191108024659.10138-1-dannym@scratchpost.org> References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) * gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. * gnu/packages/rust.scm (mrustc): Update to 0.9. [source](patches): Remove it. [arguments]<#:phases>[build-minicargo]: Modify. --- gnu/local.mk | 1 - ....0-fix-variable-length-integer-receiving.patch | 15 --------------- gnu/packages/rust.scm | 12 +++++------- 3 files changed, 5 insertions(+), 23 deletions(-) delete mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch diff --git a/gnu/local.mk b/gnu/local.mk index 2513b4003c..5f52372875 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1140,7 +1140,6 @@ dist_patch_DATA = \ %D%/packages/patches/mozjs38-tracelogger.patch \ %D%/packages/patches/mozjs38-version-detection.patch \ %D%/packages/patches/mrrescue-support-love-11.patch \ - %D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \ %D%/packages/patches/mtools-mformat-uninitialized.patch \ %D%/packages/patches/mumble-1.2.19-abs.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ diff --git a/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch b/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch deleted file mode 100644 index 9e76653a07..0000000000 --- a/gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch +++ /dev/null @@ -1,15 +0,0 @@ -https://github.com/thepowersgang/mrustc/issues/109 -From: Danny Milosavljevic -Date: Fri, 3 Jan 2019 13:00:00 +0100 - ---- mrustc/src/expand/proc_macro.cpp.orig 2019-02-01 14:16:54.208486062 +0100 -+++ mrustc/src/expand/proc_macro.cpp 2019-02-01 14:17:14.350925705 +0100 -@@ -977,7 +977,7 @@ - for(;;) - { - auto b = recv_u8(); -- v |= static_cast(b) << ofs; -+ v |= static_cast(b & 0x7F) << ofs; - if( (b & 0x80) == 0 ) - break; - ofs += 7; diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index f3fee4c126..76b1466284 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -91,7 +91,7 @@ (let ((rustc-version "1.19.0")) (package (name "mrustc") - (version "0.8.0") + (version "0.9") (source (origin (method git-fetch) (uri (git-reference @@ -100,9 +100,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i")) - (patches - (search-patches "mrustc-0.8.0-fix-variable-length-integer-receiving.patch")))) + "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))) (outputs '("out" "cargo")) (build-system gnu-build-system) (inputs @@ -136,7 +134,7 @@ (nix-system->gnu-triplet-for-rust))))) (invoke "tar" "xf" (assoc-ref inputs "rustc")) (chdir "rustc-1.19.0-src") - (invoke "patch" "-p0" "../rust_src.patch") + (invoke "patch" "-p0" "../rustc-1.19.0-src.patch") (chdir "..") #t)) (replace 'configure @@ -147,8 +145,8 @@ (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")) + '("output/libstd.rlib" "output/libpanic_unwind.rlib" + "output/libproc_macro.rlib" "output/libtest.rlib")) ;; Technically the above already does it - but we want to be clear. (invoke "make" "-C" "tools/minicargo"))) (replace 'install From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 07 21:57:26 2019 Received: (at 38110) by debbugs.gnu.org; 8 Nov 2019 02:57:27 +0000 Received: from localhost ([127.0.0.1]:44297 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSuSb-0006sx-5W for submit@debbugs.gnu.org; Thu, 07 Nov 2019 21:57:25 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:34292) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iSuSQ-0006sE-VP for 38110@debbugs.gnu.org; Thu, 07 Nov 2019 21:57:15 -0500 Received: from localhost.localdomain (178.113.183.24.wireless.dyn.drei.com [178.113.183.24]) by dd26836.kasserver.com (Postfix) with ESMTPSA id A3B5433620E1; Fri, 8 Nov 2019 03:57:05 +0100 (CET) From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Date: Fri, 8 Nov 2019 03:46:59 +0100 Message-Id: <20191108024659.10138-3-dannym@scratchpost.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191108024659.10138-1-dannym@scratchpost.org> References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * gnu/packages/patches/rustc-1.29.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/rust.scm (rust-1.19): Delete variable. (rust-1.20): Delete variable. (rust-1.21): Delete variable. (rust-1.22): Delete variable. (rust-1.23): Delete variable. (rust-1.24): Delete variable. (rust-1.25): Delete variable. (rust-1.26): Delete variable. (rust-1.27): Delete variable. (rust-1.28): Delete variable. (rust-1.29): Bootstrap from mrustc. [source]: Add patch. (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. (mrustc): Update rustc-version to 1.29.0. --- gnu/local.mk | 1 + gnu/packages/patches/rustc-1.29.0-src.patch | 86 ++++ gnu/packages/rust.scm | 494 +++++--------------- 3 files changed, 195 insertions(+), 386 deletions(-) create mode 100644 gnu/packages/patches/rustc-1.29.0-src.patch diff --git a/gnu/local.mk b/gnu/local.mk index 5f52372875..2c8db401f3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1320,6 +1320,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-1.19-mrustc.patch \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ + %D%/packages/patches/rustc-1.29.0-src.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rust-reproducible-builds.patch \ %D%/packages/patches/rxvt-unicode-escape-sequences.patch \ diff --git a/gnu/packages/patches/rustc-1.29.0-src.patch b/gnu/packages/patches/rustc-1.29.0-src.patch new file mode 100644 index 0000000000..feeb7e71cf --- /dev/null +++ b/gnu/packages/patches/rustc-1.29.0-src.patch @@ -0,0 +1,86 @@ +From mrustc 0.9. +# Add mrustc slice length intrinsics +--- rustc-1.29.0-src/src/libcore/intrinsics.rs ++++ rustc-1.29.0-src/src/libcore/intrinsics.rs +@@ -678,5 +678,9 @@ + pub fn min_align_of_val(_: &T) -> usize; + ++ /// Obtain the length of a slice pointer ++ #[cfg(rust_compiler="mrustc")] ++ pub fn mrustc_slice_len(pointer: *const [T]) -> usize; ++ + /// Gets a static string slice containing the name of a type. + pub fn type_name() -> &'static str; + +--- rustc-1.29.0-src/src/libcore/slice/mod.rs ++++ rustc-1.29.0-src/src/libcore/slice/mod.rs +@@ -413,5 +413,7 @@ + pub const fn len(&self) -> usize { +- unsafe { +- Repr { rust: self }.raw.len +- } ++ #[cfg(not(rust_compiler="mrustc"))] ++ const fn len_inner(s: &[T]) -> usize { unsafe { Repr { rust: s }.raw.len } }; ++ #[cfg(rust_compiler="mrustc")] ++ const fn len_inner(s: &[T]) -> usize { unsafe { ::intrinsics::mrustc_slice_len(s) } } ++ len_inner(self) + } +# Static-link rustc_codegen_llvm because mrustc doesn't have dylib support +--- rustc-1.29.0-src/src/librustc_driver/Cargo.toml ++++ rustc-1.29.0-src/src/librustc_driver/Cargo.toml +@@ -39,1 +39,2 @@ + syntax_pos = { path = "../libsyntax_pos" } ++rustc_codegen_llvm = { path = "../librustc_codegen_llvm" } +--- rustc-1.29.0-src/src/librustc_driver/lib.rs ++++ rustc-1.29.0-src/src/librustc_driver/lib.rs +@@ -63,2 +63,3 @@ + extern crate syntax_pos; ++extern crate rustc_codegen_llvm; + +@@ -296,3 +296,7 @@ + } + ++ if backend_name == "llvm" { ++ return rustc_codegen_llvm::__rustc_codegen_backend; ++ } ++ + let target = session::config::host_triple(); +# No workspace support in minicargo, patch cargo's Cargo.toml +--- rustc-1.29.0-src/src/tools/cargo/Cargo.toml ++++ rustc-1.29.0-src/src/tools/cargo/Cargo.toml +@@ -60,5 +60,5 @@ + # A noop dependency that changes in the Rust repository, it's a bit of a hack. + # See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust` + # for more information. +-rustc-workspace-hack = "1.0.0" ++rustc-workspace-hack = { path = "../rustc-workspace-hack" } + +# mrustc can't represent a 24 byte version of this enum (no way of storing the +# tag in padding) +--- rustc-1.29.0-src/src/librustc/ty/context.rs ++++ rustc-1.29.0-src/src/librustc/ty/context.rs +@@ -805,5 +805,5 @@ + // Ensure our type representation does not grow +- #[cfg(target_pointer_width = "64")] +- assert!(mem::size_of::() <= 24); +- #[cfg(target_pointer_width = "64")] +- assert!(mem::size_of::() <= 32); ++ //#[cfg(target_pointer_width = "64")] ++ //assert!(mem::size_of::() <= 24); ++ //#[cfg(target_pointer_width = "64")] ++ //assert!(mem::size_of::() <= 32); + +--- rustc-1.29.0-src/src/stdsimd/stdsimd/arch/detect/os/x86.rs ++++ rustc-1.29.0-src/src/stdsimd/stdsimd/arch/detect/os/x86.rs +@@ -14,5 +14,11 @@ + /// Performs run-time feature detection. + #[inline] ++#[cfg(not(rust_compiler="mrustc"))] + pub fn check_for(x: Feature) -> bool { + cache::test(x as u32, detect_features) + } ++#[inline] ++#[cfg(rust_compiler="mrustc")] ++pub fn check_for(x: Feature) -> bool { ++ false ++} diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 76b1466284..75dc694f24 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -88,7 +88,7 @@ (package-native-inputs base-rust)))))) (define-public mrustc - (let ((rustc-version "1.19.0")) + (let ((rustc-version "1.29.0")) (package (name "mrustc") (version "0.9") @@ -109,7 +109,7 @@ `(("bison" ,bison) ("flex" ,flex) ;; Required for the libstd sources. - ("rustc" ,(package-source rust-1.19)))) + ("rustc" ,(package-source rust-1.29)))) (arguments `(#:test-target "local_tests" #:make-flags (list (string-append "LLVM_CONFIG=" @@ -133,8 +133,8 @@ ,(or (%current-target-system) (nix-system->gnu-triplet-for-rust))))) (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir "rustc-1.19.0-src") - (invoke "patch" "-p0" "../rustc-1.19.0-src.patch") + (chdir "rustc-1.29.0-src") + (invoke "patch" "-p0" "../rustc-1.29.0-src.patch") (chdir "..") #t)) (replace 'configure @@ -178,19 +178,21 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat))))) -(define rust-1.19 +(define rust-1.29 (package (name "rust") - (version "1.19.0") + (version "1.29.0") (source (origin (method url-fetch) - (uri (rust-uri "1.19.0")) - (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (uri (rust-uri "1.29.0")) + (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9sx4")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (map search-patch '("rust-1.19-mrustc.patch"))))) - (outputs '("out" "cargo")) + (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch" + "rustc-1.29.0-src.patch"))))) + (outputs '("out" "cargo" "doc")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) (arguments @@ -201,6 +203,7 @@ safety and thread safety guarantees.") (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) ;; Disable test for cross compilation support. +(write "X") (setenv "CFG_DISABLE_CROSS_TESTS" "1") (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) @@ -208,24 +211,6 @@ safety and thread safety guarantees.") ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) - (add-after 'unpack 'patch-cargo-tomls - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "src/librustc_errors/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -term = \"0.4.4\" -")) - (substitute* "src/librustc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -getopts = { path = \"../libgetopts\" } -")) - (substitute* "src/librustdoc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -test = { path = \"../libtest\" } -")) - #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -244,27 +229,29 @@ test = { path = \"../libtest\" } #[ignore] fn test_process_mask")) #t))) + (add-after 'patch-tests 'patch-cargo-index-update + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" + ;; This test wants to update the crate index. + (("fn no_index_update") "#[ignore]\nfn no_index_update")) + #t)) (add-after 'patch-tests 'patch-aarch64-test (lambda* _ - (substitute* "src/librustc_back/dynamic_lib.rs" + (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)) - (add-after 'patch-tests 'use-readelf-for-tests - (lambda* _ - ;; 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 ")) + ;; This test fails on aarch64 with llvm@6.0: + ;; https://github.com/rust-lang/rust/issues/49807 + ;; other possible solution: + ;; https://github.com/rust-lang/rust/pull/47688 + (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") #t)) (add-after 'patch-tests 'remove-unsupported-tests (lambda* _ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; - (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ @@ -284,19 +271,28 @@ test = { path = \"../libtest\" } #t)) ;; This phase is overridden by newer versions. (replace 'configure - (const #t)) + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "CXX" "g++") + (setenv "HOST_CXX" "g++") + #t)) ;; This phase is overridden by newer versions. (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) +;(invoke "ls" "src/vendor/getopts") +;(newline) (setenv "CFG_COMPILER_HOST_TRIPLE" ,(nix-system->gnu-triplet (%current-system))) (setenv "CFG_RELEASE" "") (setenv "CFG_RELEASE_CHANNEL" "stable") (setenv "CFG_LIBDIR_RELATIVE" "lib") - (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + (setenv "CFG_VERSION" "1.29.0-stable-mrustc") ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. - (mkdir-p "output") + ;; Crate::load_extern_crate ignores the search path, so make + ;; the situation easier for it. + (copy-recursively (string-append rustc-bootstrap "/lib/mrust") + "output") + ;(mkdir-p "output") (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/rustc" "--vendor-dir" "src/vendor" "--output-dir" "output/rustc-build" @@ -311,7 +307,7 @@ test = { path = \"../libtest\" } (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/tools/cargo" "--vendor-dir" "src/vendor" "--output-dir" "output/cargo-build" - "-L" "output/" + ;"-L" "output/" "-L" (string-append rustc-bootstrap "/lib/mrust") "-j" "1") ;; Now use the newly-built rustc to build the libraries. @@ -396,7 +392,7 @@ test = { path = \"../libtest\" } ("which" ,which))) (inputs `(("jemalloc" ,jemalloc-4.5.0) - ("llvm" ,llvm-3.9.1) + ("llvm" ,llvm-6) ("openssl" ,openssl-1.0) ("libssh2" ,libssh2) ; For "cargo" ("libcurl" ,curl))) ; For "cargo" @@ -419,10 +415,10 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define-public rust-1.20 +(define-public rust-1.30 (let ((base-rust - (rust-bootstrapped-package rust-1.19 "1.20.0" - "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) + (rust-bootstrapped-package rust-1.29 "1.30.1" + "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) (package (inherit base-rust) (source @@ -431,20 +427,45 @@ safety and thread safety guarantees.") (snippet '(begin (delete-file-recursively "src/jemalloc") (delete-file-recursively "src/llvm") + (delete-file-recursively "src/llvm-emscripten") + (delete-file-recursively "src/tools/clang") + (delete-file-recursively "src/tools/lldb") #t)) (patches '()))) (outputs '("out" "doc" "cargo")) - ;; Since rust-1.19 is local, it's quite probable that Hydra - ;; will build rust-1.19 only as a dependency of rust-1.20. + ;; Since rust-2.19 is local, it's quite probable that Hydra + ;; will build rust-1.29 only as a dependency of rust-1.20. ;; But then Hydra will use the wrong properties, the ones here, - ;; for rust-1.19. Therefore, we copied the properties of - ;; rust-1.19 here. + ;; for rust-1.29. Therefore, we copied the properties of + ;; rust-1.29 here. (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) + (inputs + ;; Use LLVM 6.0 + (alist-replace "llvm" (list llvm-6) + (package-inputs base-rust))) (arguments - (substitute-keyword-arguments (package-arguments rust-1.19) + (substitute-keyword-arguments (package-arguments rust-1.29) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'remove-flaky-test + (lambda _ + ;; See . + (when (file-exists? "src/test/run-make/issue-26092") + (delete-file-recursively "src/test/run-make/issue-26092")) + #t)) + (add-after 'configure 'enable-codegen-tests + ;; Codegen tests should pass with llvm 6, so enable them. + (lambda* _ + (substitute* "config.toml" + (("codegen-tests = false") "")) + #t)) + ;; The test has been moved elsewhere. + (add-after 'patch-tests 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" @@ -466,12 +487,29 @@ safety and thread safety guarantees.") (("fn finds_author_git") "#[ignore]\nfn finds_author_git") (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) #t)) - (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test - ;; https://github.com/rust-lang/rust/issues/47863 - (lambda _ - (substitute* "src/test/run-pass/out-of-stack.rs" - (("// ignore-android") "// ignore-test\n// ignore-android")) - #t)) + (add-after 'patch-cargo-tests 'patch-cargo-env-shebang + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "src/tools/cargo/tests/testsuite/fix.rs" + ;; Cargo has a test which explicitly sets a + ;; RUSTC_WRAPPER environment variable which points + ;; to /usr/bin/env. Since it's not a shebang, it + ;; needs to be manually patched + (("\"/usr/bin/env\"") + (string-append "\"" coreutils "/bin/env\""))) + #t))) + (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/package.rs" + ;; These tests largely check that cargo outputs warning/error + ;; messages as expected. It seems that cargo outputs an + ;; absolute path to something in the store instead of the + ;; expected relative path (e.g. `[..]`) so we'll ignore + ;; these for now + (("fn include") "#[ignore]\nfn include") + (("fn exclude") "#[ignore]\nfn exclude")) + #t)) + (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -523,16 +561,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" "/tmp/cc") (setenv "PATH" (string-append "/tmp:" (getenv "PATH"))) #t)) - (add-after 'provide-cc 'configure-archiver - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/build_helper/lib.rs" - ;; Make sure "ar" is always used as the archiver. - (("\"musl\"") "\"\"") - ;; Then substitute "ar" by our name. - (("\"ar\"") (string-append "\"" - (assoc-ref inputs "binutils") - "/bin/ar\""))) - #t)) (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ @@ -549,11 +577,14 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ - ;; Disable parallel execution to prevent EAGAIN errors when - ;; running tests. - (invoke "./x.py" "-j1" "test" "-vv") - (invoke "./x.py" "-j1" "test" "src/tools/cargo") - #t)) + ;; Enable parallel execution. + (let ((parallel-job-spec + (string-append "-j" (number->string + (min 4 + (parallel-job-count)))))) + (invoke "./x.py" parallel-job-spec "test" "-vv") + (invoke "./x.py" parallel-job-spec "test" + "src/tools/cargo")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") @@ -591,315 +622,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) #t)))))))))) -(define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" - "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'remove-ar - (lambda* (#:key inputs #:allow-other-keys) - ;; Remove because toml complains about "unknown field". - (substitute* "config.toml" - (("^ar =.*") "\n")) - #t))))))))) - -(define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" - "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'remove-flaky-test - (lambda _ - ;; See . - (when (file-exists? "src/test/run-make/issue-26092") - (delete-file-recursively "src/test/run-make/issue-26092")) - #t))))))))) - -(define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" - "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-archiver) - (delete 'remove-ar) - (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))))))))) - -(define-public rust-1.24 - (let ((base-rust - (rust-bootstrapped-package rust-1.23 "1.24.1" - "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'use-readelf-for-tests) - (replace 'patch-aarch64-test - (lambda* _ - (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))))))))) - -;;; Rust 1.25 release support work with llvm 6--but build with llvm 6 is -;;; not determenistic due to . -;;; Keep using llvm 3.9.1 until builds become determenistic -(define-public rust-1.25 - (let ((base-rust - (rust-bootstrapped-package rust-1.24 "1.25.0" - "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - #t)) - (patches (map search-patch - '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (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")) - #t)) - (replace 'patch-aarch64-test - (lambda _ - (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")) - ;; This test fails on aarch64 with llvm@6.0: - ;; https://github.com/rust-lang/rust/issues/49807 - ;; other possible solution: - ;; https://github.com/rust-lang/rust/pull/47688 - (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") - #t)) - (delete 'ignore-glibc-2.27-incompatible-test)))))))) - -(define-public rust-1.26 - (let ((base-rust - (rust-bootstrapped-package rust-1.25 "1.26.2" - "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch - '("rust-coresimd-doctest.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - ;; binaryen was replaced with LLD project from LLVM - (delete 'dont-build-native) - (replace 'check - (lambda* _ - ;; Enable parallel execution. - (let ((parallel-job-spec - (string-append "-j" (number->string - (min 4 - (parallel-job-count)))))) - (invoke "./x.py" parallel-job-spec "test" "-vv") - (invoke "./x.py" parallel-job-spec "test" - "src/tools/cargo")))) - (replace 'remove-unsupported-tests - (lambda* _ - ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. - ;; - (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") - #t)) - (replace 'patch-cargo-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/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/testsuite/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/testsuite/test.rs" - (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) - - ;; Avoid dependency on "git". - (substitute* "src/tools/cargo/tests/testsuite/new.rs" - (("fn author_prefers_cargo") "#[ignore]\nfn author_prefers_cargo") - (("fn finds_author_git") "#[ignore]\nfn finds_author_git") - (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) - #t)) - (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel - (lambda* _ - ;; This test failed to work on "nightly" channel builds - ;; https://github.com/rust-lang/cargo/issues/5648 - (substitute* "src/tools/cargo/tests/testsuite/resolve.rs" - (("fn test_resolving_minimum_version_with_transitive_deps") - "#[ignore]\nfn test_resolving_minimum_version_with_transitive_deps")) - #t)) - (replace 'patch-cargo-index-update - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" - ;; This test wants to update the crate index. - (("fn no_index_update") "#[ignore]\nfn no_index_update")) - #t))))))))) - -(define-public rust-1.27 - (let ((base-rust - (rust-bootstrapped-package rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'install 'mkdir-prefix-paths - (lambda* (#:key outputs #:allow-other-keys) - ;; As result of https://github.com/rust-lang/rust/issues/36989 - ;; `prefix' directory should exist before `install' call - (mkdir-p (assoc-ref outputs "out")) - (mkdir-p (assoc-ref outputs "cargo")) - #t)) - (add-after 'patch-cargo-tests 'disable-thinlto-test - (lambda* _ - ;; thinlto required llvm 6.0 for work - (substitute* "src/tools/cargo/tests/testsuite/path.rs" - (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works")) - #t))))))))) - -(define-public rust-1.28 - (let ((base-rust - (rust-bootstrapped-package rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (inputs - ;; Use LLVM 6.0 - (alist-replace "llvm" (list llvm-6) - (package-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'enable-codegen-tests - ;; Codegen tests should pass with llvm 6, so enable them. - (lambda* _ - (substitute* "config.toml" - (("codegen-tests = false") "")) - #t)) - (add-after 'patch-tests 'disable-amd64-avx-test - ;; That test would fail on x86_64 machines without avx. - (lambda* _ - (substitute* "src/test/run-pass/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t)) - ;; The thinlto test should pass with llvm 6. - (delete 'disable-thinlto-test)))))))) - -(define-public rust-1.29 - (let ((base-rust - (rust-bootstrapped-package rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))))))) - -(define-public rust-1.30 - (let ((base-rust - (rust-bootstrapped-package rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - (delete-file-recursively "src/tools/clang") - (delete-file-recursively "src/tools/lldb") - #t)))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'patch-cargo-tests 'patch-cargo-env-shebang - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) - (substitute* "src/tools/cargo/tests/testsuite/fix.rs" - ;; Cargo has a test which explicitly sets a - ;; RUSTC_WRAPPER environment variable which points - ;; to /usr/bin/env. Since it's not a shebang, it - ;; needs to be manually patched - (("\"/usr/bin/env\"") - (string-append "\"" coreutils "/bin/env\""))) - #t))) - (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/package.rs" - ;; These tests largely check that cargo outputs warning/error - ;; messages as expected. It seems that cargo outputs an - ;; absolute path to something in the store instead of the - ;; expected relative path (e.g. `[..]`) so we'll ignore - ;; these for now - (("fn include") "#[ignore]\nfn include") - (("fn exclude") "#[ignore]\nfn exclude")) - #t)) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/run-pass/issues/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t))))))))) - (define-public rust-1.31 (let ((base-rust (rust-bootstrapped-package rust-1.30 "1.31.1" @@ -925,10 +647,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" ((" Command::new\\(\"echo\"\\)") (string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n"))) #t))) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/issues/issue-44056.rs" + ;; The test has been moved elsewhere. + (replace 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" (("only-x86_64") "ignore-test")) #t)) (add-after 'patch-tests 'patch-process-docs-rev-cmd From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 08 17:47:23 2019 Received: (at 38110) by debbugs.gnu.org; 8 Nov 2019 22:47:23 +0000 Received: from localhost ([127.0.0.1]:47894 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iTD2I-0007Q3-Mm for submit@debbugs.gnu.org; Fri, 08 Nov 2019 17:47:22 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58556) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iTD2C-0007Pk-5D for 38110@debbugs.gnu.org; Fri, 08 Nov 2019 17:47:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58489) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iTD26-00026k-PY; Fri, 08 Nov 2019 17:47:10 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=40830 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iTD26-0003DP-14; Fri, 08 Nov 2019 17:47:10 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Danny Milosavljevic Subject: Re: [bug#38110] [PATCH v2 1/2] gnu: mrustc: Update to 0.9. References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> <20191108024659.10138-2-dannym@scratchpost.org> Date: Fri, 08 Nov 2019 23:47:08 +0100 In-Reply-To: <20191108024659.10138-2-dannym@scratchpost.org> (Danny Milosavljevic's message of "Fri, 8 Nov 2019 03:46:58 +0100") Message-ID: <87o8xmc7f7.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi! Danny Milosavljevic skribis: > * gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving= .patch: Delete file. > * gnu/local.mk (dist_patch_DATA): Remove it. > * gnu/packages/rust.scm (mrustc): Update to 0.9. > [source](patches): Remove it. > [arguments]<#:phases>[build-minicargo]: Modify. LGTM! But note that this cannot go to =E2=80=98master=E2=80=99 yet because= IceCat depends on it. So I think we should discuss on guix-devel when and where to land these patches; perhaps the next =E2=80=98staging=E2=80=99 bra= nch? Thanks, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 08 17:50:16 2019 Received: (at 38110) by debbugs.gnu.org; 8 Nov 2019 22:50:16 +0000 Received: from localhost ([127.0.0.1]:47898 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iTD56-0007UU-8r for submit@debbugs.gnu.org; Fri, 08 Nov 2019 17:50:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59003) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iTD52-0007U9-IR for 38110@debbugs.gnu.org; Fri, 08 Nov 2019 17:50:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58516) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iTD4x-000434-91; Fri, 08 Nov 2019 17:50:07 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=40902 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iTD4u-0003R2-AX; Fri, 08 Nov 2019 17:50:07 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Danny Milosavljevic Subject: Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> <20191108024659.10138-3-dannym@scratchpost.org> Date: Fri, 08 Nov 2019 23:50:02 +0100 In-Reply-To: <20191108024659.10138-3-dannym@scratchpost.org> (Danny Milosavljevic's message of "Fri, 8 Nov 2019 03:46:59 +0100") Message-ID: <87d0e2c7ad.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, Danny Milosavljevic skribis: > * gnu/packages/patches/rustc-1.29.0-src.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add it. > * gnu/packages/rust.scm (rust-1.19): Delete variable. > (rust-1.20): Delete variable. > (rust-1.21): Delete variable. > (rust-1.22): Delete variable. > (rust-1.23): Delete variable. > (rust-1.24): Delete variable. > (rust-1.25): Delete variable. > (rust-1.26): Delete variable. > (rust-1.27): Delete variable. > (rust-1.28): Delete variable. > (rust-1.29): Bootstrap from mrustc. > [source]: Add patch. > (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. > (mrustc): Update rustc-version to 1.29.0. This is really, really cool! I stumbled upon recently and felt a relief. :-) I wonder if there=E2=80=99d be any value in keeping a couple of old version= s of Rust. Is that something useful to Rust developers? If not, I=E2=80=99m ha= ppy to see them go! > --- /dev/null > +++ b/gnu/packages/patches/rustc-1.29.0-src.patch > @@ -0,0 +1,86 @@ > +From mrustc 0.9. > +# Add mrustc slice length intrinsics Could you use a more meaningful name (why =E2=80=9C-src=E2=80=9D?) and add = a link to the upstream commit or upstream issue discussing this change? Apart from that it looks great! Thanks, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 19 17:19:21 2020 Received: (at 38110) by debbugs.gnu.org; 19 Jan 2020 22:19:21 +0000 Received: from localhost ([127.0.0.1]:44036 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itIuf-0005yB-Lx for submit@debbugs.gnu.org; Sun, 19 Jan 2020 17:19:21 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:34498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1itIue-0005y2-8C for 38110@debbugs.gnu.org; Sun, 19 Jan 2020 17:19:20 -0500 Received: from localhost (unknown [185.17.13.127]) by dd26836.kasserver.com (Postfix) with ESMTPSA id B54D33361D1F for <38110@debbugs.gnu.org>; Sun, 19 Jan 2020 23:19:18 +0100 (CET) Date: Sun, 19 Jan 2020 23:19:17 +0100 From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: Re: [PATCH v2 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. Message-ID: <20200119231917.1c34d2d4@scratchpost.org> In-Reply-To: <20191108024659.10138-1-dannym@scratchpost.org> References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/vUvuAMqwpy1Yt79eOUDoD/b"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --Sig_/vUvuAMqwpy1Yt79eOUDoD/b Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable This version has a problem. --Sig_/vUvuAMqwpy1Yt79eOUDoD/b Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl4k1eUACgkQ5xo1VCww uqXjvwf/Y5xHSunHsqIZZ6kIisSSunyfz9rLDfvNRNVFRXNn93BGP5NPTXip9vbn puX4+LLo7nZOJ+ugUUtcWHHksR4vk3RQnXn5kvrc3cULCBSowt77sDk5P/64ye9R mZo2IfhJ5FmKxT1UyNxtzax6VKm/P16Czn9H9TuhULv25gYljXNqxxb4tsAEbaqh lzynDJ7GYsTqih0xlyRcpkYRqbjk+EBM/Gftxi7K9Usp0yuuMiOG/GRDH/AAi4p3 0W2p05y58P7lx9I+98xlR5x2KTG2uUU0Bdn9XIidymtfR4tJLfDO/zyRMmqzT6eA dx/LHVNxWF49ws+/PCt2quDH9WXYZA== =ZgLM -----END PGP SIGNATURE----- --Sig_/vUvuAMqwpy1Yt79eOUDoD/b-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 20 19:15:29 2020 Received: (at 38110) by debbugs.gnu.org; 21 Jan 2020 00:15:29 +0000 Received: from localhost ([127.0.0.1]:46292 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ithCb-0001WL-3V for submit@debbugs.gnu.org; Mon, 20 Jan 2020 19:15:29 -0500 Received: from dd26836.kasserver.com ([85.13.145.193]:47882) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ithCW-0001W9-9l for 38110@debbugs.gnu.org; Mon, 20 Jan 2020 19:15:28 -0500 Received: from localhost (80-110-118-191.cgn.dynamic.surfer.at [80.110.118.191]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 816E53360AB3 for <38110@debbugs.gnu.org>; Tue, 21 Jan 2020 01:15:22 +0100 (CET) Date: Tue, 21 Jan 2020 01:15:18 +0100 From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: Re: [bug#38110] [PATCH v2 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. Message-ID: <20200121011518.25c65947@scratchpost.org> In-Reply-To: <20200119231917.1c34d2d4@scratchpost.org> References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> <20200119231917.1c34d2d4@scratchpost.org> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/q.VFSiv/8ib1flUwyCmXJ+H"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: 4.3 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: https://github.com/thepowersgang/mrustc/issues/140 Content analysis details: (4.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [85.13.145.193 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.5 BODY_SINGLE_URI Message body is only a URI 2.5 BODY_SINGLE_WORD Message body is only one word (no spaces) X-Debbugs-Envelope-To: 38110 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 3.3 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: https://github.com/thepowersgang/mrustc/issues/140 Content analysis details: (3.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [85.13.145.193 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager 2.5 BODY_SINGLE_URI Message body is only a URI 2.5 BODY_SINGLE_WORD Message body is only one word (no spaces) --Sig_/q.VFSiv/8ib1flUwyCmXJ+H Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable https://github.com/thepowersgang/mrustc/issues/140 --Sig_/q.VFSiv/8ib1flUwyCmXJ+H Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl4mQpYACgkQ5xo1VCww uqX8Bwf8C4QGlroCjwoXiGXXGV84oQUHKEVkuvQa8S3H87qgJi5tIfncVSRxQ2Gr H5ntvbLcQZYkoEmQ1B2hCUyQEOxkayUUJozAQF1lRRu/A7QL8pJd4wW0jzXOrS2s x/MlJyFsf8vEMQ4PaNnTs4TZL+31fXMuYI+jpYsTeAllSCQlNO8Y+hKbBZVr8H63 uSRiqlFwRG657mX9/A178GLwkpUjemtyNTzUULUM1CZAHOxtDbrW97Shte478XjK /rh+72VZfFBiOTclVuWGLl+5ruk8wziyPVSUVkuVAEYj/dApDU0oh+LkE6gl24nX +sB3YtGlqfiSluRqOGfl7oe+ZKS82Q== =heau -----END PGP SIGNATURE----- --Sig_/q.VFSiv/8ib1flUwyCmXJ+H-- From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 15 10:20:31 2020 Received: (at 38110) by debbugs.gnu.org; 15 Mar 2020 14:20:31 +0000 Received: from localhost ([127.0.0.1]:35334 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jDU7z-0005zE-4O for submit@debbugs.gnu.org; Sun, 15 Mar 2020 10:20:31 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:54221) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jDU7v-0005yu-J0 for 38110@debbugs.gnu.org; Sun, 15 Mar 2020 10:20:30 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 2B87322110; Sun, 15 Mar 2020 10:20:22 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Sun, 15 Mar 2020 10:20:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=It+6gEaFMgHXv70ey2mK/tN+iP gRV5n0Ig9O5RCkQvU=; b=JARdhK4ILAkqqHfhWzeCYvXIrRaCMMiyaUqAWoaDsk Uie5u6ShFrIUPwgvV+GKErdz2oSyggkeueQ3bFbtNSG60cp0ftv8F9F5DCb+SpKJ 2J8gXC/kwr6oPrQPgJg/+0lNIXu6qmM7IgEVcHwFv7my2Z/JkGNWIs0ISVH8WH0B UTpIU2rHCz6ON89oz87B4OTkbmTr+qK6hjF6Qb0FqvSHz3aEj4t2mqku0gGzcXTi bBy8G1fXejJ5TysZo/5JwXH0CwsX/epOdktZ4ecR23FMPjSz8DkkSr1ZOF1/tkC6 cr1/XhzGNdQ7th+RPV42U2z130EUQPMWPbtJqKMY1zeg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=It+6gE aFMgHXv70ey2mK/tN+iPgRV5n0Ig9O5RCkQvU=; b=3d8U6NnbTZoDtzwYcXfoQV BYc+XNycETilR0KG7pvthpM9IEd3/eMzoCZk7jNqPKNffgA42NBKUmbjEOsjpFON lpEnY4U4J+8TcRaBAEO9X+JWSpTVN1hKJnGum/GQvQurBYC2DDGoGnLhbbaeit4s KwotKJsFxayxjdWCRKCwjxKr8Qi8biZfsgI+GK1LzkG82cILrG9caZccFrS/ryUc 9Kazt9YayjZQQoYZctSp8AFa3YG0121wKBLrgBIelDa38wVpbxDr8tG6geDlDpWl 4FpXuiIoobmreTycykSoX9CJPbEkUAMLfiJ2PabDR1XIXACiKhykzDh62cAODPwg == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudeftddgudektdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvffujghffgffkfggtgesghdtreertdertdenucfhrhhomhepofgrrhhi uhhsuceurghkkhgvuceomhgsrghkkhgvsehfrghsthhmrghilhdrtghomheqnecuffhomh grihhnpehgnhhurdhorhhgnecukfhppeekgedrvddtvddrieekrdejheenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmsggrkhhkvgesfhgrsh htmhgrihhlrdgtohhm X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id 903FD3280059; Sun, 15 Mar 2020 10:20:21 -0400 (EDT) From: Marius Bakke To: Danny Milosavljevic , 38110@debbugs.gnu.org Subject: Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. In-Reply-To: <20191108024659.10138-3-dannym@scratchpost.org> References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> <20191108024659.10138-3-dannym@scratchpost.org> User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Sun, 15 Mar 2020 15:20:19 +0100 Message-ID: <87pnddlmxo.fsf@devup.no> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain Hello Danny, Danny Milosavljevic writes: > * gnu/packages/patches/rustc-1.29.0-src.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add it. > * gnu/packages/rust.scm (rust-1.19): Delete variable. > (rust-1.20): Delete variable. > (rust-1.21): Delete variable. > (rust-1.22): Delete variable. > (rust-1.23): Delete variable. > (rust-1.24): Delete variable. > (rust-1.25): Delete variable. > (rust-1.26): Delete variable. > (rust-1.27): Delete variable. > (rust-1.28): Delete variable. > (rust-1.29): Bootstrap from mrustc. > [source]: Add patch. > (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. > (mrustc): Update rustc-version to 1.29.0. I know there was a problem with this patch, but can you rebase it on the current 'core-updates' branch? I'd rather try to fix this than , but the patch does not apply any longer. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5uOaMACgkQoqBt8qM6 VPo4SQf/Um4aHWMlw5lJhvcCqJvcubyg4G1tDtTmiaZQG0yikEN0qjjUv4jblz3k yYoajlWXuU2hOUzMTGbeI3H6hrmsWHH0fwkCfJrw5H2kJT8d2AA9TwyeCffUn7wf kmRw9+excmto4dCTA5x8tKewmCPbPWrlScnATNzlbAfE3bftm3LPIYrNgnlrepkk FJ0GT/2HxYz0iaPFIjbGzXlZJg61+wOqIgRgqQv1H2ll0KMaEK0N0Qtgp0KnOsfr zyqpKlCV4qx0otBc49umlbyOB6fnYe0IDpKsXuL9yeH7JwzKON9NUPIW/BusQ4xi PgXz6SxZcz/fZBLM/ZNWsaCbXY+0WQ== =q9p6 -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 15 15:23:32 2020 Received: (at 38110) by debbugs.gnu.org; 15 Mar 2020 19:23:32 +0000 Received: from localhost ([127.0.0.1]:35625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jDYr3-0005lZ-6q for submit@debbugs.gnu.org; Sun, 15 Mar 2020 15:23:32 -0400 Received: from dd26836.kasserver.com ([85.13.145.193]:55418) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jDYqy-0005lM-62 for 38110@debbugs.gnu.org; Sun, 15 Mar 2020 15:23:19 -0400 Received: from dayas.fritz.box (unknown [185.17.13.127]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 875193363431; Sun, 15 Mar 2020 20:23:14 +0100 (CET) From: Danny Milosavljevic To: 38110@debbugs.gnu.org Subject: [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Date: Sun, 15 Mar 2020 20:23:11 +0100 Message-Id: <20200315192311.6505-1-dannym@scratchpost.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Tags: patch Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * gnu/packages/patches/rustc-1.29.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/rust.scm (rust-1.19): Delete variable. (rust-1.20): Delete variable. (rust-1.21): Delete variable. (rust-1.22): Delete variable. (rust-1.23): Delete variable. (rust-1.24): Delete variable. (rust-1.25): Delete variable. (rust-1.26): Delete variable. (rust-1.27): Delete variable. (rust-1.28): Delete variable. (rust-1.29): Bootstrap from mrustc. [source]: Add patch. (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. (mrustc): Update rustc-version to 1.29.0. --- gnu/local.mk | 1 + gnu/packages/patches/rustc-1.29.0-src.patch | 86 ++++ gnu/packages/rust.scm | 494 +++++--------------- 3 files changed, 192 insertions(+), 389 deletions(-) create mode 100644 gnu/packages/patches/rustc-1.29.0-src.patch diff --git a/gnu/local.mk b/gnu/local.mk index 21a149c469..e39974b0a0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1392,6 +1392,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-1.19-mrustc.patch \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ + %D%/packages/patches/rustc-1.29.0-src.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rust-reproducible-builds.patch \ %D%/packages/patches/rust-openssl-sys-no-vendor.patch \ diff --git a/gnu/packages/patches/rustc-1.29.0-src.patch b/gnu/packages/patches/rustc-1.29.0-src.patch new file mode 100644 index 0000000000..feeb7e71cf --- /dev/null +++ b/gnu/packages/patches/rustc-1.29.0-src.patch @@ -0,0 +1,86 @@ +From mrustc 0.9. +# Add mrustc slice length intrinsics +--- rustc-1.29.0-src/src/libcore/intrinsics.rs ++++ rustc-1.29.0-src/src/libcore/intrinsics.rs +@@ -678,5 +678,9 @@ + pub fn min_align_of_val(_: &T) -> usize; + ++ /// Obtain the length of a slice pointer ++ #[cfg(rust_compiler="mrustc")] ++ pub fn mrustc_slice_len(pointer: *const [T]) -> usize; ++ + /// Gets a static string slice containing the name of a type. + pub fn type_name() -> &'static str; + +--- rustc-1.29.0-src/src/libcore/slice/mod.rs ++++ rustc-1.29.0-src/src/libcore/slice/mod.rs +@@ -413,5 +413,7 @@ + pub const fn len(&self) -> usize { +- unsafe { +- Repr { rust: self }.raw.len +- } ++ #[cfg(not(rust_compiler="mrustc"))] ++ const fn len_inner(s: &[T]) -> usize { unsafe { Repr { rust: s }.raw.len } }; ++ #[cfg(rust_compiler="mrustc")] ++ const fn len_inner(s: &[T]) -> usize { unsafe { ::intrinsics::mrustc_slice_len(s) } } ++ len_inner(self) + } +# Static-link rustc_codegen_llvm because mrustc doesn't have dylib support +--- rustc-1.29.0-src/src/librustc_driver/Cargo.toml ++++ rustc-1.29.0-src/src/librustc_driver/Cargo.toml +@@ -39,1 +39,2 @@ + syntax_pos = { path = "../libsyntax_pos" } ++rustc_codegen_llvm = { path = "../librustc_codegen_llvm" } +--- rustc-1.29.0-src/src/librustc_driver/lib.rs ++++ rustc-1.29.0-src/src/librustc_driver/lib.rs +@@ -63,2 +63,3 @@ + extern crate syntax_pos; ++extern crate rustc_codegen_llvm; + +@@ -296,3 +296,7 @@ + } + ++ if backend_name == "llvm" { ++ return rustc_codegen_llvm::__rustc_codegen_backend; ++ } ++ + let target = session::config::host_triple(); +# No workspace support in minicargo, patch cargo's Cargo.toml +--- rustc-1.29.0-src/src/tools/cargo/Cargo.toml ++++ rustc-1.29.0-src/src/tools/cargo/Cargo.toml +@@ -60,5 +60,5 @@ + # A noop dependency that changes in the Rust repository, it's a bit of a hack. + # See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust` + # for more information. +-rustc-workspace-hack = "1.0.0" ++rustc-workspace-hack = { path = "../rustc-workspace-hack" } + +# mrustc can't represent a 24 byte version of this enum (no way of storing the +# tag in padding) +--- rustc-1.29.0-src/src/librustc/ty/context.rs ++++ rustc-1.29.0-src/src/librustc/ty/context.rs +@@ -805,5 +805,5 @@ + // Ensure our type representation does not grow +- #[cfg(target_pointer_width = "64")] +- assert!(mem::size_of::() <= 24); +- #[cfg(target_pointer_width = "64")] +- assert!(mem::size_of::() <= 32); ++ //#[cfg(target_pointer_width = "64")] ++ //assert!(mem::size_of::() <= 24); ++ //#[cfg(target_pointer_width = "64")] ++ //assert!(mem::size_of::() <= 32); + +--- rustc-1.29.0-src/src/stdsimd/stdsimd/arch/detect/os/x86.rs ++++ rustc-1.29.0-src/src/stdsimd/stdsimd/arch/detect/os/x86.rs +@@ -14,5 +14,11 @@ + /// Performs run-time feature detection. + #[inline] ++#[cfg(not(rust_compiler="mrustc"))] + pub fn check_for(x: Feature) -> bool { + cache::test(x as u32, detect_features) + } ++#[inline] ++#[cfg(rust_compiler="mrustc")] ++pub fn check_for(x: Feature) -> bool { ++ false ++} diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 76afdefabe..f949d0e254 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -88,7 +88,7 @@ (package-native-inputs base-rust)))))) (define-public mrustc - (let ((rustc-version "1.19.0")) + (let ((rustc-version "1.29.0")) (package (name "mrustc") (version "0.9") @@ -109,7 +109,7 @@ `(("bison" ,bison) ("flex" ,flex) ;; Required for the libstd sources. - ("rustc" ,(package-source rust-1.19)))) + ("rustc" ,(package-source rust-1.29)))) (arguments `(#:test-target "test" #:make-flags @@ -189,19 +189,21 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat))))) -(define rust-1.19 +(define rust-1.29 (package (name "rust") - (version "1.19.0") + (version "1.29.0") (source (origin (method url-fetch) - (uri (rust-uri "1.19.0")) - (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (uri (rust-uri "1.29.0")) + (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9sx4")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (map search-patch '("rust-1.19-mrustc.patch"))))) - (outputs '("out" "cargo")) + (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch" + "rustc-1.29.0-src.patch"))))) + (outputs '("out" "cargo" "doc")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) (arguments @@ -212,6 +214,7 @@ safety and thread safety guarantees.") (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) ;; Disable test for cross compilation support. +(write "X") (setenv "CFG_DISABLE_CROSS_TESTS" "1") (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) @@ -219,24 +222,6 @@ safety and thread safety guarantees.") ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) - (add-after 'unpack 'patch-cargo-tomls - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "src/librustc_errors/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -term = \"0.4.4\" -")) - (substitute* "src/librustc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -getopts = { path = \"../libgetopts\" } -")) - (substitute* "src/librustdoc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -test = { path = \"../libtest\" } -")) - #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -255,27 +240,29 @@ test = { path = \"../libtest\" } #[ignore] fn test_process_mask")) #t))) + (add-after 'patch-tests 'patch-cargo-index-update + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" + ;; This test wants to update the crate index. + (("fn no_index_update") "#[ignore]\nfn no_index_update")) + #t)) (add-after 'patch-tests 'patch-aarch64-test (lambda* _ - (substitute* "src/librustc_back/dynamic_lib.rs" + (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)) - (add-after 'patch-tests 'use-readelf-for-tests - (lambda* _ - ;; 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 ")) + ;; This test fails on aarch64 with llvm@6.0: + ;; https://github.com/rust-lang/rust/issues/49807 + ;; other possible solution: + ;; https://github.com/rust-lang/rust/pull/47688 + (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") #t)) (add-after 'patch-tests 'remove-unsupported-tests (lambda* _ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; - (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ @@ -287,7 +274,10 @@ test = { path = \"../libtest\" } #t)) ;; This phase is overridden by newer versions. (replace 'configure - (const #t)) + (lambda* (#:key inputs outputs #:allow-other-keys) + (setenv "CXX" "g++") + (setenv "HOST_CXX" "g++") + #t)) ;; This phase is overridden by newer versions. (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) @@ -297,10 +287,15 @@ test = { path = \"../libtest\" } (setenv "CFG_RELEASE" "") (setenv "CFG_RELEASE_CHANNEL" "stable") (setenv "CFG_LIBDIR_RELATIVE" "lib") - (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + (setenv "CFG_VERSION" "1.29.0-stable-mrustc") (setenv "MRUSTC_TARGET_VER" ,(version-major+minor version)) ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. - (mkdir-p "output") + ;; Crate::load_extern_crate ignores the search path, so make + ;; the situation easier for it. + (copy-recursively (string-append rustc-bootstrap "/lib/mrust") + "output") + ;(mkdir-p "output") + ;; mrustc 0.9 doesn't check the search paths for crates anymore. (copy-recursively (string-append rustc-bootstrap "/lib/mrust") "output") @@ -318,7 +313,7 @@ test = { path = \"../libtest\" } (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/tools/cargo" "--vendor-dir" "src/vendor" "--output-dir" "output/cargo-build" - "-L" "output/" + ;"-L" "output/" "-L" (string-append rustc-bootstrap "/lib/mrust") "-j" "1") ;; Now use the newly-built rustc to build the libraries. @@ -403,7 +398,7 @@ test = { path = \"../libtest\" } ("which" ,which))) (inputs `(("jemalloc" ,jemalloc-4.5.0) - ("llvm" ,llvm-3.9.1) + ("llvm" ,llvm-6) ("openssl" ,openssl-1.0) ("libssh2" ,libssh2) ; For "cargo" ("libcurl" ,curl))) ; For "cargo" @@ -429,10 +424,10 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define-public rust-1.20 +(define-public rust-1.30 (let ((base-rust - (rust-bootstrapped-package rust-1.19 "1.20.0" - "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) + (rust-bootstrapped-package rust-1.29 "1.30.1" + "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) (package (inherit base-rust) (source @@ -441,20 +436,45 @@ safety and thread safety guarantees.") (snippet '(begin (delete-file-recursively "src/jemalloc") (delete-file-recursively "src/llvm") + (delete-file-recursively "src/llvm-emscripten") + (delete-file-recursively "src/tools/clang") + (delete-file-recursively "src/tools/lldb") #t)) (patches '()))) (outputs '("out" "doc" "cargo")) - ;; Since rust-1.19 is local, it's quite probable that Hydra - ;; will build rust-1.19 only as a dependency of rust-1.20. + ;; Since rust-2.19 is local, it's quite probable that Hydra + ;; will build rust-1.29 only as a dependency of rust-1.20. ;; But then Hydra will use the wrong properties, the ones here, - ;; for rust-1.19. Therefore, we copied the properties of - ;; rust-1.19 here. + ;; for rust-1.29. Therefore, we copied the properties of + ;; rust-1.29 here. (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) + (inputs + ;; Use LLVM 6.0 + (alist-replace "llvm" (list llvm-6) + (package-inputs base-rust))) (arguments - (substitute-keyword-arguments (package-arguments rust-1.19) + (substitute-keyword-arguments (package-arguments rust-1.29) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'remove-flaky-test + (lambda _ + ;; See . + (when (file-exists? "src/test/run-make/issue-26092") + (delete-file-recursively "src/test/run-make/issue-26092")) + #t)) + (add-after 'configure 'enable-codegen-tests + ;; Codegen tests should pass with llvm 6, so enable them. + (lambda* _ + (substitute* "config.toml" + (("codegen-tests = false") "")) + #t)) + ;; The test has been moved elsewhere. + (add-after 'patch-tests 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" @@ -476,12 +496,29 @@ safety and thread safety guarantees.") (("fn finds_author_git") "#[ignore]\nfn finds_author_git") (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) #t)) - (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test - ;; https://github.com/rust-lang/rust/issues/47863 - (lambda _ - (substitute* "src/test/run-pass/out-of-stack.rs" - (("// ignore-android") "// ignore-test\n// ignore-android")) - #t)) + (add-after 'patch-cargo-tests 'patch-cargo-env-shebang + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "src/tools/cargo/tests/testsuite/fix.rs" + ;; Cargo has a test which explicitly sets a + ;; RUSTC_WRAPPER environment variable which points + ;; to /usr/bin/env. Since it's not a shebang, it + ;; needs to be manually patched + (("\"/usr/bin/env\"") + (string-append "\"" coreutils "/bin/env\""))) + #t))) + (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/package.rs" + ;; These tests largely check that cargo outputs warning/error + ;; messages as expected. It seems that cargo outputs an + ;; absolute path to something in the store instead of the + ;; expected relative path (e.g. `[..]`) so we'll ignore + ;; these for now + (("fn include") "#[ignore]\nfn include") + (("fn exclude") "#[ignore]\nfn exclude")) + #t)) + (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -533,16 +570,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" "/tmp/cc") (setenv "PATH" (string-append "/tmp:" (getenv "PATH"))) #t)) - (add-after 'provide-cc 'configure-archiver - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/build_helper/lib.rs" - ;; Make sure "ar" is always used as the archiver. - (("\"musl\"") "\"\"") - ;; Then substitute "ar" by our name. - (("\"ar\"") (string-append "\"" - (assoc-ref inputs "binutils") - "/bin/ar\""))) - #t)) (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ @@ -559,11 +586,14 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ - ;; Disable parallel execution to prevent EAGAIN errors when - ;; running tests. - (invoke "./x.py" "-j1" "test" "-vv") - (invoke "./x.py" "-j1" "test" "src/tools/cargo") - #t)) + ;; Enable parallel execution. + (let ((parallel-job-spec + (string-append "-j" (number->string + (min 4 + (parallel-job-count)))))) + (invoke "./x.py" parallel-job-spec "test" "-vv") + (invoke "./x.py" parallel-job-spec "test" + "src/tools/cargo")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") @@ -601,320 +631,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) #t)))))))))) -(define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" - "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'remove-ar - (lambda* (#:key inputs #:allow-other-keys) - ;; Remove because toml complains about "unknown field". - (substitute* "config.toml" - (("^ar =.*") "\n")) - #t))))))))) - -(define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" - "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'remove-flaky-test - (lambda _ - ;; See . - (when (file-exists? "src/test/run-make/issue-26092") - (delete-file-recursively "src/test/run-make/issue-26092")) - #t))))))))) - -(define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" - "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-archiver) - (delete 'remove-ar) - (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))))))))) - -(define-public rust-1.24 - (let ((base-rust - (rust-bootstrapped-package rust-1.23 "1.24.1" - "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'use-readelf-for-tests) - (replace 'patch-aarch64-test - (lambda* _ - (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))))))))) - -;;; Rust 1.25 release support work with llvm 6--but build with llvm 6 is -;;; not determenistic due to . -;;; Keep using llvm 3.9.1 until builds become determenistic -(define-public rust-1.25 - (let ((base-rust - (rust-bootstrapped-package rust-1.24 "1.25.0" - "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - #t)) - (patches (map search-patch - '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (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")) - #t)) - (replace 'patch-aarch64-test - (lambda _ - (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")) - ;; This test fails on aarch64 with llvm@6.0: - ;; https://github.com/rust-lang/rust/issues/49807 - ;; other possible solution: - ;; https://github.com/rust-lang/rust/pull/47688 - (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") - #t)) - (delete 'ignore-glibc-2.27-incompatible-test)))))))) - -(define-public rust-1.26 - (let ((base-rust - (rust-bootstrapped-package rust-1.25 "1.26.2" - "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch - '("rust-coresimd-doctest.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - ;; binaryen was replaced with LLD project from LLVM - (delete 'dont-build-native) - (replace 'check - (lambda* _ - ;; Enable parallel execution. - (let ((parallel-job-spec - (string-append "-j" (number->string - (min 4 - (parallel-job-count)))))) - (invoke "./x.py" parallel-job-spec "test" "-vv") - (invoke "./x.py" parallel-job-spec "test" - "src/tools/cargo")))) - (replace 'remove-unsupported-tests - (lambda* _ - ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. - ;; - (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") - #t)) - (replace 'patch-cargo-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/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/testsuite/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/testsuite/test.rs" - (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) - - ;; Avoid dependency on "git". - (substitute* "src/tools/cargo/tests/testsuite/new.rs" - (("fn author_prefers_cargo") "#[ignore]\nfn author_prefers_cargo") - (("fn finds_author_git") "#[ignore]\nfn finds_author_git") - (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) - #t)) - (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel - (lambda* _ - ;; This test failed to work on "nightly" channel builds - ;; https://github.com/rust-lang/cargo/issues/5648 - (substitute* "src/tools/cargo/tests/testsuite/resolve.rs" - (("fn test_resolving_minimum_version_with_transitive_deps") - "#[ignore]\nfn test_resolving_minimum_version_with_transitive_deps")) - #t)) - (replace 'patch-cargo-index-update - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" - ;; This test wants to update the crate index. - (("fn no_index_update") "#[ignore]\nfn no_index_update")) - #t))))))))) - -(define-public rust-1.27 - (let ((base-rust - (rust-bootstrapped-package rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (native-inputs - ;; FIXME: Rust 1.27 and some later versions require GDB 8.2 specifically. - ;; See . - (alist-replace "gdb" (list gdb-8.2) - (package-native-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'install 'mkdir-prefix-paths - (lambda* (#:key outputs #:allow-other-keys) - ;; As result of https://github.com/rust-lang/rust/issues/36989 - ;; `prefix' directory should exist before `install' call - (mkdir-p (assoc-ref outputs "out")) - (mkdir-p (assoc-ref outputs "cargo")) - #t)) - (add-after 'patch-cargo-tests 'disable-thinlto-test - (lambda* _ - ;; thinlto required llvm 6.0 for work - (substitute* "src/tools/cargo/tests/testsuite/path.rs" - (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works")) - #t))))))))) - -(define-public rust-1.28 - (let ((base-rust - (rust-bootstrapped-package rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (inputs - ;; Use LLVM 6.0 - (alist-replace "llvm" (list llvm-6) - (package-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'enable-codegen-tests - ;; Codegen tests should pass with llvm 6, so enable them. - (lambda* _ - (substitute* "config.toml" - (("codegen-tests = false") "")) - #t)) - (add-after 'patch-tests 'disable-amd64-avx-test - ;; That test would fail on x86_64 machines without avx. - (lambda* _ - (substitute* "src/test/run-pass/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t)) - ;; The thinlto test should pass with llvm 6. - (delete 'disable-thinlto-test)))))))) - -(define-public rust-1.29 - (let ((base-rust - (rust-bootstrapped-package rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))))))) - -(define-public rust-1.30 - (let ((base-rust - (rust-bootstrapped-package rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - (delete-file-recursively "src/tools/clang") - (delete-file-recursively "src/tools/lldb") - #t)))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'patch-cargo-tests 'patch-cargo-env-shebang - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) - (substitute* "src/tools/cargo/tests/testsuite/fix.rs" - ;; Cargo has a test which explicitly sets a - ;; RUSTC_WRAPPER environment variable which points - ;; to /usr/bin/env. Since it's not a shebang, it - ;; needs to be manually patched - (("\"/usr/bin/env\"") - (string-append "\"" coreutils "/bin/env\""))) - #t))) - (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/package.rs" - ;; These tests largely check that cargo outputs warning/error - ;; messages as expected. It seems that cargo outputs an - ;; absolute path to something in the store instead of the - ;; expected relative path (e.g. `[..]`) so we'll ignore - ;; these for now - (("fn include") "#[ignore]\nfn include") - (("fn exclude") "#[ignore]\nfn exclude")) - #t)) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/run-pass/issues/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t))))))))) - (define-public rust-1.31 (let ((base-rust (rust-bootstrapped-package rust-1.30 "1.31.1" @@ -940,10 +656,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" ((" Command::new\\(\"echo\"\\)") (string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n"))) #t))) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/issues/issue-44056.rs" + ;; The test has been moved elsewhere. + (replace 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" (("only-x86_64") "ignore-test")) #t)) (add-after 'patch-tests 'patch-process-docs-rev-cmd From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 15 15:23:32 2020 Received: (at 38110) by debbugs.gnu.org; 15 Mar 2020 19:23:32 +0000 Received: from localhost ([127.0.0.1]:35628 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jDYrE-0005lv-48 for submit@debbugs.gnu.org; Sun, 15 Mar 2020 15:23:32 -0400 Received: from dd26836.kasserver.com ([85.13.145.193]:55426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jDYr7-0005le-Pf for 38110@debbugs.gnu.org; Sun, 15 Mar 2020 15:23:26 -0400 Received: from localhost (unknown [185.17.13.127]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 19C323363431; Sun, 15 Mar 2020 20:23:25 +0100 (CET) Date: Sun, 15 Mar 2020 20:23:21 +0100 From: Danny Milosavljevic To: Marius Bakke Subject: Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Message-ID: <20200315202321.194826f7@scratchpost.org> In-Reply-To: <87pnddlmxo.fsf@devup.no> References: <20191107223000.20242-1-dannym@scratchpost.org> <20191108024659.10138-1-dannym@scratchpost.org> <20191108024659.10138-3-dannym@scratchpost.org> <87pnddlmxo.fsf@devup.no> X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/ugX7g82BBU.8JC1fcf0B3oX"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --Sig_/ugX7g82BBU.8JC1fcf0B3oX Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Marius, I've attached the new v3 for core-updates to this bug report now. Meanwhile, the bug in mrustc https://github.com/thepowersgang/mrustc/issues= /140 apparently has not been fixed yet. It probably manifests itself because of: > It seems newer toolchains no longer resolve symbols when the library prec= edes > the referencing object file. > This has always been the case for static libraries, as far as I'm aware, = but > now seems to also be the case for shared libs. --Sig_/ugX7g82BBU.8JC1fcf0B3oX Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl5ugKkACgkQ5xo1VCww uqVbXQgAnkhwmERYLYvS8jmV8jOLqHo3GuS4uHcGveGo8A15dAhv/KDduggedJvy VTzGIDBisCaIWC5sJ0Bh18rxpp4YDXmmGx48X7Ww7RYjVBzbxj30SC20lyAT5Caw ZAWTDe9LhtWmLe0Y/4TAU0ycaPWkgaIn8U/UeSjfsSEaUGPqvwOuR2RbxqiJ60ve AC2B98d7AyJkNYtBZYsWOs+si0YGY/79CTh5TvRsMVN1HJZYmFI3oylKxnzwj4RG pV9lpyXNqvV0LRQFtIz46UqT2xsF9ZYiozne5kcypsCoIMGsWAUkZVPuMjMpBo01 BATaj5PqGmk3oKR6U6PdplSQVNvVRA== =NlzX -----END PGP SIGNATURE----- --Sig_/ugX7g82BBU.8JC1fcf0B3oX-- From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 19 19:58:45 2020 Received: (at 38110) by debbugs.gnu.org; 19 Mar 2020 23:58:45 +0000 Received: from localhost ([127.0.0.1]:43780 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jF53l-0001qH-Bc for submit@debbugs.gnu.org; Thu, 19 Mar 2020 19:58:45 -0400 Received: from pat.zlotemysli.pl ([37.59.186.212]:53702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jF53j-0001q9-Ty for 38110@debbugs.gnu.org; Thu, 19 Mar 2020 19:58:44 -0400 Received: (qmail 9834 invoked by uid 1009); 20 Mar 2020 00:58:42 +0100 Received: from 188.123.215.55 (kuba@kadziolka.net@188.123.215.55) by pat (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/25755. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.020069 secs); 19 Mar 2020 23:58:42 -0000 Received: from unknown (HELO gravity) (kuba@kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 20 Mar 2020 00:58:42 +0100 Date: Fri, 20 Mar 2020 00:58:40 +0100 From: Jakub =?utf-8?B?S8SFZHppb8WCa2E=?= To: Danny Milosavljevic Subject: Re: [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Message-ID: <20200319235840.ganzrh2t4z55iiyc@gravity> References: <20200315192311.6505-1-dannym@scratchpost.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="2l7qbblzfww3p6w6" Content-Disposition: inline In-Reply-To: <20200315192311.6505-1-dannym@scratchpost.org> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --2l7qbblzfww3p6w6 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Mar 15, 2020 at 08:23:11PM +0100, Danny Milosavljevic wrote: > + ;; Since rust-2.19 is local, it's quite probable that Hydra ^^^^ Typo? I think this should be rust-1.29. Kind regards, Jakub K=C4=85dzio=C5=82ka --2l7qbblzfww3p6w6 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl50BzAACgkQ4xWnWEYT FWRCXw/+LERjCeF1PUa4ctRaQkAgGTe9YJAvQ6ABn1se8jLlPaPJOuEd4uayYaZk h9cs8dwBAOuJLzDWuKgNwi0Uz5nV6pDDYZYi16QoKT7w4uMzcIS2OvbgA+t+PWbQ 9Apbh5ZoFL/8XQ6Zm9Rn/yeqT3JLLiEuitedvJPOCPI8+ZG0cA/uzs9HjXTVTTfL BQxS0xwiVDC2VacbMaUgbO/QUTBOK8vXsVSmeRTJ2yVTYaI8JI2X9OwewksDhJq5 CKyxqwN2Hn8BuvYcA2agkSF9008XDEQLz/UixBEHGKs00J0+rjE4Mb0dbWJpFFm1 tlPqI0K9/jYM1rVeZdxuEg/BCGH/U8d8oNSC2Z3a2x7Wz/I26ESRrpZfAfPe5mSq q0qu7aqtC/JUJ2+MiyvSxvrjx6ipX6L80U3db0sYh9i0Z5PMNZivEYO9QXfRvL88 esJUHJpYoLWmGQl89KlB3p9GSPJTuqnxQn51jwOU/V6IcUpCVzqq8EHFanFLGCql KnrLKwX+RdT9vpmmgZ4SREFLEOMwe3PEvAdx96IBjN1ZieSVbe39bLsuGDzx0lgS UiQVMVmAg9y8M6nFibtTxaJR3yC3Ug4WYoallnYdQ2+rUJQhpBuEm4VlPB26f3RW 8sqLf5YB7N0RfP3jaxkmsVEX+GO50Hsicm9/CgyghlGKU9/qbmE= =7zHJ -----END PGP SIGNATURE----- --2l7qbblzfww3p6w6-- From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 20 12:12:13 2020 Received: (at 38110) by debbugs.gnu.org; 20 Mar 2020 16:12:13 +0000 Received: from localhost ([127.0.0.1]:45413 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFKFl-0006Ew-Fw for submit@debbugs.gnu.org; Fri, 20 Mar 2020 12:12:12 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:59087) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFKFf-0006EM-OK for 38110@debbugs.gnu.org; Fri, 20 Mar 2020 12:12:07 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 53FD35C0111; Fri, 20 Mar 2020 12:11:58 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Fri, 20 Mar 2020 12:11:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=KsryX2GrMSk0F6DhojvC3sGBqW Hlg/WoNTHPISXSk4w=; b=CMyZmheeFeN8RrHe92IJ58UmDEFbl119g7kSDohqaM v9hEdbH0XqwYrWqFVVJOFh4IElEpYRWF5xkdx6fCAstqFcT0VHGYANZjzwGrtvbi ukX21xUhBOpzPgyyEGpYp61+XojoFV7kErXgJ/nQqRJX14sTn9n8Yre9iO43s6s7 iswjp0ak0+GQiwS/l89CmXvcZdSM1zIokz/Xx+I43kE7Mspd1L/ytOOzE/BX2iDh jbwgQrItUwHHjC9JoavSL9TeoVo3qrX04cxcZzVsClM0CnHR+2SNY3utLExVRHM1 o/Atumh+uAwtE8tps52uy62m3rFOhDpNS3s+6GyEv3dw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=KsryX2 GrMSk0F6DhojvC3sGBqWHlg/WoNTHPISXSk4w=; b=W7TSVoLy/bOP/USIV+GVPj 7DQgLuremS7fbIkqqTuVeDDSbId3ycXfYm5O2spuya2yF35QqI2MkkbxHtGvW9zg IBvsZ32FRXbYK9c4HUShH4G/NvsYOdFOcdLbIc+YzSGJD6ei6gp9+yKDebUnISc9 WIUhx8o8DHG/+azJMynHKgHiy5A+kv9B+mOQHM6bW18hMG+ge00XxvSbUKI8Jj2S TmBYqO/zvoeA66Gnodl2bB5b0bgCLv+NR/XdnzL7Cr9/oi9sO1EYEdMTm0ty+RjE jYTTkoPHEhSe9WzGLXnNezZ0z9jjEWf38jxcyQj7uAchUWnVJHL7Sg+jPWDtxPKw == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudeguddgkeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufgjfhgffffkgggtsehgtderredtredtnecuhfhrohhmpeforghrihhu shcuuegrkhhkvgcuoehmsggrkhhkvgesfhgrshhtmhgrihhlrdgtohhmqeenucfkphepke egrddvtddvrdeikedrjeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm rghilhhfrhhomhepmhgsrghkkhgvsehfrghsthhmrghilhdrtghomh X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id 7777D3280063; Fri, 20 Mar 2020 12:11:57 -0400 (EDT) From: Marius Bakke To: Danny Milosavljevic , 38110@debbugs.gnu.org Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. In-Reply-To: <20200315192311.6505-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Fri, 20 Mar 2020 17:11:55 +0100 Message-ID: <877dzf9fas.fsf@devup.no> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Danny Milosavljevic writes: > * gnu/packages/patches/rustc-1.29.0-src.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add it. > * gnu/packages/rust.scm (rust-1.19): Delete variable. > (rust-1.20): Delete variable. > (rust-1.21): Delete variable. > (rust-1.22): Delete variable. > (rust-1.23): Delete variable. > (rust-1.24): Delete variable. > (rust-1.25): Delete variable. > (rust-1.26): Delete variable. > (rust-1.27): Delete variable. > (rust-1.28): Delete variable. > (rust-1.29): Bootstrap from mrustc. > [source]: Add patch. > (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. > (mrustc): Update rustc-version to 1.29.0. Thanks a lot for this work Danny! I was able to get one step further by hacking the mrustc compiler to force "group linking" with --start-group and --end-group, based on a suggestion in #mrustc. It makes the compiler about 10x slower, but I suppose that's okay for a one-time job. Now the build fails when trying to use the built rustc binary, and I'm struggling to figure out how to proceed. I think we are pretty close! I've attached my changes as a diff here. Some of the changes are purely cosmetic, feel free to pick-and-choose what you want/need. Without further ado... --=-=-= Content-Type: text/x-patch Content-Disposition: inline 2 files changed, 26 insertions(+), 5 deletions(-) gnu/packages/patches/mrustc-group-link.patch | 22 ++++++++++++++++++++++ gnu/packages/rust.scm | 9 ++++----- new file gnu/packages/patches/mrustc-group-link.patch @@ -0,0 +1,22 @@ +Surround the libraries with --start-group and --end-group to work +around . + +diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp +--- a/src/trans/codegen_c.cpp ++++ b/src/trans/codegen_c.cpp +@@ -960,6 +960,7 @@ namespace { + { + args.push_back("-L"); args.push_back(path); + } ++ args.push_back("-Wl,--start-group"); + for(const auto& lib : m_crate.m_ext_libs) { + ASSERT_BUG(Span(), lib.name != "", ""); + args.push_back("-l"); args.push_back(lib.name.c_str()); +@@ -975,6 +976,7 @@ namespace { + { + args.push_back("-l"); args.push_back(path.c_str()); + } ++ args.push_back("-Wl,--end-group"); + for( const auto& a : Target_GetCurSpec().m_backend_c.m_linker_opts ) + { + args.push_back( a.c_str() ); modified gnu/packages/rust.scm @@ -98,6 +98,7 @@ (url "https://github.com/thepowersgang/mrustc.git") (commit (string-append "v" version)))) (file-name (git-file-name name version)) + (patches (search-patches "mrustc-group-link.patch")) (sha256 (base32 "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))) @@ -128,10 +129,8 @@ (add-after 'patch-date 'unpack-target-compiler (lambda* (#:key inputs outputs #:allow-other-keys) (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir ,(string-append "rustc-" rustc-version "-src")) - (invoke "patch" "-p0" ,(string-append "../rustc-" rustc-version + (invoke "patch" "-p1" ,(string-append "rustc-" rustc-version "-src.patch")) - (chdir "..") (setenv "RUSTC_VERSION" ,rustc-version) (setenv "MRUSTC_TARGET_VER" ,(version-major+minor rustc-version)) @@ -274,7 +273,7 @@ safety and thread safety guarantees.") #t)) ;; This phase is overridden by newer versions. (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda _ (setenv "CXX" "g++") (setenv "HOST_CXX" "g++") #t)) @@ -326,7 +325,7 @@ safety and thread safety guarantees.") (write name) (newline) (apply invoke - "output/rustc-build/rustc" + "output/rustc-build/rustc_binary" "-C" (string-append "linker=" (getenv "CC")) ;; Required for libterm. [back] --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5060sACgkQoqBt8qM6 VPoKSgf/cr9A0OUZowldxQYe1x8ZtadA5iQ50s2ziR3KFQ9u+mAEQTj/YuwDZoX5 NA5Qz/jX+pTj9aNppt63Xx7jA2fGWS8pWAcRISnPcnayIxvv/Txu9TKccim98RB/ HB90XnUZPOoF2dPXpCgMgc+BW+UZIHMTVvFHt/pYlztaJ4jWci2HEymGxlYXTAnk U2DKzieulevLtG7R9JIfrSNyuB5Q/SPHSksfhJesGuNXMZ1KvIeU4Mb9O3MuD2T4 ONt+alvwqXPewrzItt5sFFJuY91em3LSdA7//MDze61MWDAuAvltNuhZ8IvO3jBm /iPCuShWTRdInkuArseQzeVoatMNJw== =TM9d -----END PGP SIGNATURE----- --==-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 20 12:18:36 2020 Received: (at 38110) by debbugs.gnu.org; 20 Mar 2020 16:18:36 +0000 Received: from localhost ([127.0.0.1]:45422 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFKM0-0008Qa-Ff for submit@debbugs.gnu.org; Fri, 20 Mar 2020 12:18:36 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:52147) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFKLy-0008QO-Vr for 38110@debbugs.gnu.org; Fri, 20 Mar 2020 12:18:35 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id B111E5C0164; Fri, 20 Mar 2020 12:18:29 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Fri, 20 Mar 2020 12:18:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=5mCu1q+SCgYO5sssvGUZ5Xd/OO yP0Xd7prneSm6kLV0=; b=ZsDn945TT1RnNaCnfvF5pw3E/XSQW35e1zQD+u+0V4 yXlkSNVFXxO4tu6PdlIrglIubOmn8aVe2zTUmpLtcauQCrYbyRTcggCHhqCENx96 6jT1FS7fcSmp9XQ6En6hW53s9VPy+jAIYvSEX/anshJuJjxEng+5jZG211QCicHQ rectnrgsaePtCf23/JVGcsw9tOJ/6ZSOSM01MOClnteslMTizPMbTaQiv+vXfjnR ZwYBLAtpQN9vmCt4zijbTXUQ6MhKRLvIaE1kHfDp39qpLr3AI1nmXlrspBu7dMbB PxFMbZMlw9JWBG4i9LrDOTmtGUDbC8+/79tgTJUP5MQw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=5mCu1q +SCgYO5sssvGUZ5Xd/OOyP0Xd7prneSm6kLV0=; b=e09R97IDONmOpkskCzV6jZ KWpX7vKppp4QtVlKsxf9fJoIFFRQoi0Eo/XjMt/B4+NstZEgcJEyFuJ2ASTkP07A kXORKeqraqJQxDcQXFPhsYL9GJnlerG01ata/xHf2djrBbyFDihYjbiYTfTPZm7r tZu/p2nA7PMGwIGts+FvOnc/vZF7GDZ0wS356k/LaxuOxRkZLO5tRqQMV40H8MW0 Tnp/X4bCQRbqxVC9RW6dbEuxJP/l3fANd25Nuq9jtIjzHRq0J3DzFvymiV2+W0dy ZrJ0vDowWsFoJpH3wIcFeqV3H/0eHt3myCfb+HQhobJswGtu3Ccv0Dg+imqOWuug == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudeguddgkeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufgjfhgffffkgggtsehgtderredtredtnecuhfhrohhmpeforghrihhu shcuuegrkhhkvgcuoehmsggrkhhkvgesfhgrshhtmhgrihhlrdgtohhmqeenucfkphepke egrddvtddvrdeikedrjeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm rghilhhfrhhomhepmhgsrghkkhgvsehfrghsthhmrghilhdrtghomh X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id D4F5E3280059; Fri, 20 Mar 2020 12:18:28 -0400 (EDT) From: Marius Bakke To: Danny Milosavljevic , 38110@debbugs.gnu.org Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. In-Reply-To: <20200315192311.6505-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Fri, 20 Mar 2020 17:18:27 +0100 Message-ID: <874kuj9ezw.fsf@devup.no> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain I forgot to mention another change ... Danny Milosavljevic writes: > + ;; Crate::load_extern_crate ignores the search path, so make > + ;; the situation easier for it. > + (copy-recursively (string-append rustc-bootstrap "/lib/mrust") > + "output") This hunk is exactly identical to the next expression some lines below, I removed it from the original patch to avoid a build failure. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl507NMACgkQoqBt8qM6 VPoF9ggAl8DaOiEYm7UFoXMSJFeOPBaOtGco5QQ0z0rXxHD0meWItRKm2OL9lRFK VcCMown4/0bzocdzZAN+EMUUj3IjSAiuQgvJke+7TdbqV3eVEI5pKKx0FyUtDEm2 GlEUtJMZ362F/VzCLS4imtzyV5/e705JJRagZan9bbSfe9hukWmmzeB2VYcBw9Zb y9oRkkaBMlFIrSSW+bOXCviMw4jfgoCCGjyK3DHaDIXC/5tIDBARNPQzDakOcdXJ YPjoY7Byoo7p44534z4xDgra7hy8KHMd4q+HEzpCKxPBI54iPjaZHD1v4AjWnn+8 ZN1O3zG5hNycGNJfaqoIz2eWfVLQqQ== =s7se -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 23 17:24:08 2020 Received: (at 38110) by debbugs.gnu.org; 23 Mar 2020 21:24:08 +0000 Received: from localhost ([127.0.0.1]:53638 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGUYK-0007lt-7o for submit@debbugs.gnu.org; Mon, 23 Mar 2020 17:24:08 -0400 Received: from dd26836.kasserver.com ([85.13.145.193]:42574) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGUYJ-0007ll-7K for 38110@debbugs.gnu.org; Mon, 23 Mar 2020 17:24:07 -0400 Received: from localhost (unknown [185.17.13.127]) by dd26836.kasserver.com (Postfix) with ESMTPSA id BDBA73367D6C; Mon, 23 Mar 2020 22:24:05 +0100 (CET) Date: Mon, 23 Mar 2020 22:24:03 +0100 From: Danny Milosavljevic To: Marius Bakke Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Message-ID: <20200323222403.36a6ce1f@scratchpost.org> In-Reply-To: <877dzf9fas.fsf@devup.no> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> <877dzf9fas.fsf@devup.no> X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/.d2.FvhyjDK2x4FQQfteSG0"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --Sig_/.d2.FvhyjDK2x4FQQfteSG0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Marius, it's good to hear that we have some further progress. I've tried it myself but I can't build it on my laptop with 8 GiB of RAM, n= ot even after adding 4 GiB of swap (on an SSD... urgh). So if the "group linking" caused this massive increase of memory consumptio= n, that's probably not good. Isn't it enough to automatically prepend "-lgit2" when "-lssh2" appears or something? See https://github.com/thepowersgang/mrustc/issues/140 I have an account on bayfront and it doesn't work there either (copied the entire working directory over from my laptop): Building rust, I get a texinfo build failure: [...] + exec ./ginfo --init-file ./t/Infokey-config -f file-menu info: "./t/Infokey-config", line 2: unknown action `xxx-not-recognized' info: "./t/Infokey-config", line 3: cannot bind key sequence to menu-digit + kill -s WINCH 16225 [...] + rm -f t/resize-in-completions.sh.out + rm -f t/resize-in-completions.sh.pipein t/resize-in-completions.sh.pipeout + exit 1 FAIL t/resize-in-completions.sh (exit status: 1) command "make" "check" "-j" "6" failed with status 2 (it does the same even after guix gc, so it's reproducible) --Sig_/.d2.FvhyjDK2x4FQQfteSG0 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl55KPMACgkQ5xo1VCww uqVAJAf+MEZg7pqSSwETzBIbWGULvCxMkYyZz6BQEpR2yXLc3AQPwGlaBTrAa9LY 8nBuyYWcOefphnN3wkcc4FlzFgRtCj6JUebLohFIzKu7XXsxECsSBzO4La0vujpS B3DefBN9bCskowJexScKfOKkJqS53QVitF8gJKvLpTmpi2xqTjJyo/ohKXX0dnGH h1/0XsY8p0+VqNtxR9bcjpr81KqRtmoeLzYMCCO5cS0Nqke0Vgpcccgn6YMMp1SC /IHXsFwEdnlYTAIyktHLOFC286JeyLCYUvMe44GhM6KrA/PhKocFwIL7Kkheng8p 7cPZ4ueQYEqqK6q1h5YF5J2514wKZQ== =fO1w -----END PGP SIGNATURE----- --Sig_/.d2.FvhyjDK2x4FQQfteSG0-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 23 18:16:18 2020 Received: (at 38110) by debbugs.gnu.org; 23 Mar 2020 22:16:18 +0000 Received: from localhost ([127.0.0.1]:53651 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGVMo-0000hY-HO for submit@debbugs.gnu.org; Mon, 23 Mar 2020 18:16:18 -0400 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:57155) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGVMn-0000hK-3I for 38110@debbugs.gnu.org; Mon, 23 Mar 2020 18:16:17 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 09E565C0174; Mon, 23 Mar 2020 18:16:11 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Mon, 23 Mar 2020 18:16:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=ncg8vXdbFjrww591shKz5tbkgQ 0GMP9xHXvCf1FMlgk=; b=yw6nas1qsih5/+JAKnMDQes8mOHMe3a8IrOjCBxrXX +ajMONQ839i0UMMQmXyw898dbefRNLXLJCXJVJHlxPYRYIaBTUQUrefBIGhNgwAa QdM0Sst5Vlg0uYVj43vRFtBYfdb8y4T5ApDblKw1c+cssTE7q7XFQzrdxXObDQvS DPbo1RhokTTvioDXSs3WNeO4D1eUO/ntEWHz+3CE03HD++R9I6NmHZMKGZJCh7tV Rv5vUK5ugCSs+Fa0TNAZ2Bw2t0wEriNZB0ZHTOjieIoaFGw9cx11gup8Ntyn/Ler gcE2yWY24gWB+NjQgmS2K1vp+6FLqLCcoRGBydfJvXUA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=ncg8vX dbFjrww591shKz5tbkgQ0GMP9xHXvCf1FMlgk=; b=vdW3ynNO1yoMq3S92+UYPi mXvtQYsQLKxdJiqHFY5MV4CKkmDD51KmRKOsz2OUo4V0IpmGLoeGwNVB7MKR4Pp7 tW0PfIrFyVFm0WYOLDZoWo2/Xxo2Lku3E2/zSYLqQPgSJPXDoQWQVJPw0DT4wVej 2fcHefWOOqCRfmt01cXAkzJLSus6kDWOjd/kjyFOHgKRvDaux9+97Ph4ZZTKahua LgDT3QcFrMYJzj3L1bxf7TAIkyejyXmFh5c3E3n3hOkCMOM56q5WWXPUlhxBwpAx OPvKglzFnvV/e+i10B0hI+5ghfX6UbGB8G8z5gTJm5CcdjEp9ge5jOtfKMhlmzCQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudegkedgudehkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvffujghffgffkfggtgesghdtreertdertdenucfhrhhomhepofgrrhhi uhhsuceurghkkhgvuceomhgsrghkkhgvsehfrghsthhmrghilhdrtghomheqnecuffhomh grihhnpehgihhthhhusgdrtghomhenucfkphepkeegrddvtddvrdeikedrjeehnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgsrghkkhgvse hfrghsthhmrghilhdrtghomh X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id 861AF3280059; Mon, 23 Mar 2020 18:16:10 -0400 (EDT) From: Marius Bakke To: Danny Milosavljevic Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. In-Reply-To: <20200323222403.36a6ce1f@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> <877dzf9fas.fsf@devup.no> <20200323222403.36a6ce1f@scratchpost.org> User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Mon, 23 Mar 2020 23:16:07 +0100 Message-ID: <87o8sm3efs.fsf@devup.no> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain Danny Milosavljevic writes: > Hi Marius, > > it's good to hear that we have some further progress. > > I've tried it myself but I can't build it on my laptop with 8 GiB of RAM, not > even after adding 4 GiB of swap (on an SSD... urgh). > > So if the "group linking" caused this massive increase of memory consumption, > that's probably not good. > > Isn't it enough to automatically prepend "-lgit2" when "-lssh2" appears > or something? That would be a much better hack yes. :-) > See https://github.com/thepowersgang/mrustc/issues/140 > > I have an account on bayfront and it doesn't work there either (copied the > entire working directory over from my laptop): > > Building rust, I get a texinfo build failure: > [...] > + exec ./ginfo --init-file ./t/Infokey-config -f file-menu > info: "./t/Infokey-config", line 2: unknown action `xxx-not-recognized' > info: "./t/Infokey-config", line 3: cannot bind key sequence to menu-digit > + kill -s WINCH 16225 > [...] > + rm -f t/resize-in-completions.sh.out > + rm -f t/resize-in-completions.sh.pipein t/resize-in-completions.sh.pipeout > + exit 1 > FAIL t/resize-in-completions.sh (exit status: 1) > command "make" "check" "-j" "6" failed with status 2 > > (it does the same even after guix gc, so it's reproducible) How are you building Rust? I've only used the Guix package definition and did not get as far as actually running the test suite. Do you have an updated build script? --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl55NSgACgkQoqBt8qM6 VPrA2gf+PvnPgsjBR5clQx8qn7BoNngpURvJ6Yy4zI7msU0iNC7b9M4skS+h2UBi OwkHCtYRGAwYbjqTpsjIUzJnxED3Ux879IGugHMRZPLNnQG03ITlsIP81X1vHeim y7GbMUXS1PmUShV4avzOrw7w6VfZQ8zn+9rYa7PzC60EQbe+rLQwBtFrDu2LGZ5R 3Bqtp6aDGULeejVoEQGmAyUncZmDVA5V+yMSZOkWp5RLzCct1nYi+7bSEInnwejK wjvoQZPpj/MIEV2ia3jUaFcCQFk+fbN3Sr16N9ptjZI9LtfCq+agEJcbMAIkylvZ PGcj7gJQKW5IK4cK7kDWZdOJPMorsw== =LL0S -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 24 07:57:31 2020 Received: (at 38110) by debbugs.gnu.org; 24 Mar 2020 11:57:31 +0000 Received: from localhost ([127.0.0.1]:54012 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGiBO-00019V-Cj for submit@debbugs.gnu.org; Tue, 24 Mar 2020 07:57:31 -0400 Received: from dd26836.kasserver.com ([85.13.145.193]:59898) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGiBL-00019K-Ci for 38110@debbugs.gnu.org; Tue, 24 Mar 2020 07:57:21 -0400 Received: from localhost (unknown [185.17.13.127]) by dd26836.kasserver.com (Postfix) with ESMTPSA id 4094C3365225; Tue, 24 Mar 2020 12:57:17 +0100 (CET) Date: Tue, 24 Mar 2020 12:57:16 +0100 From: Danny Milosavljevic To: Marius Bakke Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Message-ID: <20200324125716.756eb1f2@scratchpost.org> In-Reply-To: <87o8sm3efs.fsf@devup.no> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> <877dzf9fas.fsf@devup.no> <20200323222403.36a6ce1f@scratchpost.org> <87o8sm3efs.fsf@devup.no> X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/CAxEekpmg6e.y5Kv57vK3B8"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --Sig_/CAxEekpmg6e.y5Kv57vK3B8 Content-Type: multipart/mixed; boundary="MP_/sUAqtJYFMMgXGphhsF/Opme" --MP_/sUAqtJYFMMgXGphhsF/Opme Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi Marius, On Mon, 23 Mar 2020 23:16:07 +0100 Marius Bakke wrote: > > Building rust, I get a texinfo build failure: > How are you building Rust? I've only used the Guix package definition > and did not get as far as actually running the test suite. Do you have > an updated build script? It's failing in texinfo, not in rust. Also, on my laptop, it's not failing in texinfo. So I guess it has something to do with bayfront or the machines it offloads to. Attached gnu/packages/rust.scm , but it's the same we already have. What I mean is that I cannot see any way for me to test it myself right now. What error message do you get when trying to use the rust compiler? --MP_/sUAqtJYFMMgXGphhsF/Opme Content-Type: text/x-scheme Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename=rust.scm ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2016 David Craven ;;; Copyright =C2=A9 2016 Eric Le Bihan ;;; Copyright =C2=A9 2016 ng0 ;;; Copyright =C2=A9 2017 Ben Woodcroft ;;; Copyright =C2=A9 2017, 2018 Nikolai Merinov ;;; Copyright =C2=A9 2017, 2019 Efraim Flashner ;;; Copyright =C2=A9 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright =C2=A9 2018 Danny Milosavljevic ;;; Copyright =C2=A9 2019 Ivan Petkov ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages rust) #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages bootstrap) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages elf) #:use-module (gnu packages flex) #:use-module (gnu packages gcc) #:use-module (gnu packages gdb) #:use-module (gnu packages jemalloc) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages ssh) #:use-module (gnu packages tls) #:use-module (gnu packages) #:use-module (guix build-system cargo) #: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)) #:use-module (guix utils) #:use-module (ice-9 match) #:use-module (srfi srfi-26)) (define %cargo-reference-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") (define* (nix-system->gnu-triplet-for-rust #:optional (system (%current-system))) (match system ("x86_64-linux" "x86_64-unknown-linux-gnu") ("i686-linux" "i686-unknown-linux-gnu") ("armhf-linux" "armv7-unknown-linux-gnueabihf") ("aarch64-linux" "aarch64-unknown-linux-gnu") ("mips64el-linux" "mips64el-unknown-linux-gnuabi64") (_ (nix-system->gnu-triplet system)))) (define* (rust-uri version #:key (dist "static")) (string-append "https://" dist ".rust-lang.org/dist/" "rustc-" version "-src.tar.gz")) (define* (rust-bootstrapped-package base-rust version checksum) "Bootstrap rust VERSION with source checksum CHECKSUM using BASE-RUST." (package (inherit base-rust) (version version) (source (origin (inherit (package-source base-rust)) (uri (rust-uri version)) (sha256 (base32 checksum)))) (native-inputs (alist-replace "cargo-bootstrap" (list base-rust "cargo") (alist-replace "rustc-bootstrap" (list base-rust) (package-native-inputs base-rust)))))) (define-public mrustc (let ((rustc-version "1.29.0")) (package (name "mrustc") (version "0.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/thepowersgang/mrustc.git") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (patches (search-patches "mrustc-group-link.patch")) (sha256 (base32 "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))) (outputs '("out" "cargo")) (build-system gnu-build-system) (inputs `(("zlib" ,zlib))) (native-inputs `(("bison" ,bison) ("flex" ,flex) ;; Required for the libstd sources. ("rustc" ,(package-source rust-1.29)))) (arguments `(#:test-target "test" #:make-flags (list ,(string-append "RUSTC_TARGET=3D" (or (%current-target-system) (nix-system->gnu-triplet-for-rust)))) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-date (lambda _ (substitute* "Makefile" (("shell date") "shell date -d @1")) (substitute* "run_rustc/Makefile" (("[$]Vtime ") "$V ")) #t)) (add-after 'patch-date 'unpack-target-compiler (lambda* (#:key inputs outputs #:allow-other-keys) (invoke "tar" "xf" (assoc-ref inputs "rustc")) (invoke "patch" "-p1" ,(string-append "rustc-" rustc-version "-src.patch")) (setenv "RUSTC_VERSION" ,rustc-version) (setenv "MRUSTC_TARGET_VER" ,(version-major+minor rustc-version)) (setenv "OUTDIR_SUF" "") #t)) (replace 'configure (lambda _ (setenv "CC" "gcc") (setenv "CXX" "g++") #t)) (add-after 'build 'build-minicargo (lambda* (#:key make-flags #:allow-other-keys) ;; TODO: minicargo.mk: RUSTC_VERSION=3D$(RUSTC_VERSION) RUST= C_CHANNEL=3D$(RUSTC_SRC_TY) OUTDIR_SUF=3D$(OUTDIR_SUF) (apply invoke "make" "-f" "minicargo.mk" "LIBS" make-flags) (apply invoke "make" "-C" "tools/minicargo" make-flags))) ;(add-after 'check 'check-locally ; (lambda* (#:key make-flags #:allow-other-keys) ; ;; The enum test wouldn't work otherwise. ; ;; See . ; (setenv "MRUSTC_TARGET_VER" ,(version-major+minor rustc-ver= sion)) ; (apply invoke "make" "local_tests" make-flags))) (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")) (run_rustc (string-append out "/share/mrustc/run_rustc"))) ;; These files are not reproducible. (for-each delete-file (find-files "output" "\\.txt$")) ;(delete-file-recursively "output/local_tests") (mkdir-p (dirname lib/rust)) (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) (mkdir-p run_rustc) (copy-file "run_rustc/Makefile" (string-append run_rustc "/Makefile")) #t)))))) (synopsis "Compiler for the Rust programming language") (description "Rust is a systems programming language that provides me= mory safety and thread safety guarantees.") (home-page "https://github.com/thepowersgang/mrustc") ;; Dual licensed. (license (list license:asl2.0 license:expat))))) ;; TODO: Delete src/llvm-emscripten (define rust-1.29 (package (name "rust") (version "1.29.0") (source (origin (method url-fetch) (uri (rust-uri "1.29.0")) (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9s= x4")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-li= nes.patch" "rust-reproducible-builds.patch" "rustc-1.29.0-src.patch"))))) (outputs '("out" "cargo" "doc")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) (arguments `(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksum= s' #:modules ((guix build utils) (ice-9 match) (guix build gnu-build-sy= stem)) #:phases (modify-phases %standard-phases (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) ;; Disable test for cross compilation support. (write "X") (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)) (add-after 'unpack '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")) #t))) (add-after 'patch-tests 'patch-cargo-index-update (lambda* _ (substitute* "src/tools/cargo/tests/testsuite/generate_lockfil= e.rs" ;; This test wants to update the crate index. (("fn no_index_update") "#[ignore]\nfn no_index_update")) #t)) (add-after 'patch-tests 'patch-aarch64-test (lambda* _ (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_cosi= ne")) ;; This test fails on aarch64 with llvm@6.0: ;; https://github.com/rust-lang/rust/issues/49807 ;; other possible solution: ;; https://github.com/rust-lang/rust/pull/47688 (delete-file "src/test/debuginfo/by-value-self-argument-in-tra= it-impl.rs") #t)) (add-after 'patch-tests 'remove-unsupported-tests (lambda* _ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PAT= H. ;; (delete-file-recursively "src/test/run-make-fulldeps/linker-ou= tput-non-utf8") #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ (use-modules (guix build cargo-utils)) (substitute* "src/Cargo.lock" (("(\"checksum .* =3D )\".*\"" all name) (string-append name "\"" ,%cargo-reference-hash "\""))) (generate-all-checksums "src/vendor") #t)) ;; This phase is overridden by newer versions. (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (setenv "CXX" "g++") (setenv "HOST_CXX" "g++") #t)) ;; This phase is overridden by newer versions. (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) (setenv "CFG_COMPILER_HOST_TRIPLE" ,(nix-system->gnu-triplet (%current-system))) (setenv "CFG_RELEASE" "") (setenv "CFG_RELEASE_CHANNEL" "stable") (setenv "CFG_LIBDIR_RELATIVE" "lib") (setenv "CFG_VERSION" "1.29.0-stable-mrustc") (setenv "MRUSTC_TARGET_VER" ,(version-major+minor version)) ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. ;; Crate::load_extern_crate ignores the search path, so make ;; the situation easier for it. ;; Also, mrustc 0.9 doesn't check the search paths for crates ;; anymore. (copy-recursively (string-append rustc-bootstrap "/lib/mrust= ") "output") (invoke (string-append rustc-bootstrap "/tools/bin/minicargo= ") "src/rustc" "--vendor-dir" "src/vendor" "--output-dir" "output/rustc-build" "-L" (string-append rustc-bootstrap "/lib/mrust") "-j" "1") (setenv "CFG_COMPILER_HOST_TRIPLE" #f) (setenv "CFG_RELEASE" #f) (setenv "CFG_RELEASE_CHANNEL" #f) (setenv "CFG_VERSION" #f) (setenv "CFG_PREFIX" #f) (setenv "CFG_LIBDIR_RELATIVE" #f) (invoke (string-append rustc-bootstrap "/tools/bin/minicargo= ") "src/tools/cargo" "--vendor-dir" "src/vendor" "--output-dir" "output/cargo-build" ;"-L" "output/" "-L" (string-append rustc-bootstrap "/lib/mrust") "-j" "1") ;; Now use the newly-built rustc to build the libraries. ;; One day that could be replaced by: ;; (invoke "output/cargo-build/cargo" "build" ;; "--manifest-path" "src/bootstrap/Cargo.toml" ;; "--verbose") ; "--locked" "--frozen" ;; but right now, Cargo has problems with libstd's circular ;; dependencies. (mkdir-p "output/target-libs") (for-each (match-lambda ((name . flags) (write name) (newline) (apply invoke "output/rustc-build/rustc" "-C" (string-append "linker=3D" (getenv "CC")) ;; Required for libterm. "-Z" "force-unstable-if-unmarked" "-L" "output/target-libs" (string-append "src/" name "/lib.rs") "-o" (string-append "output/target-libs/" (car (string-split name #= \/)) ".rlib") flags))) '(("libcore") ("libstd_unicode") ("liballoc") ("libcollections") ("librand") ("liblibc/src" "--cfg" "stdbuild") ("libunwind" "-l" "gcc_s") ("libcompiler_builtins") ("liballoc_system") ("libpanic_unwind") ;; Uses "cc" to link. ("libstd" "-l" "dl" "-l" "rt" "-l" "pthread") ("libarena") ;; Test dependencies: ("libgetopts") ("libterm") ("libtest"))) #t))) ;; This phase is overridden by newer versions. (replace 'check (const #t)) ;; This phase is overridden by newer versions. (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (target-system ,(or (%current-target-system) (nix-system->gnu-triplet (%current-system)))) (out-libs (string-append out "/lib/rustlib/" target-system "/lib"))) ;(setenv "CFG_PREFIX" out) (mkdir-p out-libs) (copy-recursively "output/target-libs" out-libs) (install-file "output/rustc-build/rustc" (string-append out "/bin")) (install-file "output/rustc-build/rustdoc" (string-append out "/bin")) (install-file "output/cargo-build/cargo" (string-append (assoc-ref outputs "cargo") "/bin"))) #t))))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ; For the tests ("cmake" ,cmake-minimal) ("flex" ,flex) ; For the tests ("gdb" ,gdb) ; For the tests ("procps" ,procps) ; For the tests ("python-2" ,python-2) ("rustc-bootstrap" ,mrustc) ("cargo-bootstrap" ,mrustc "cargo") ("pkg-config" ,pkg-config) ; For "cargo" ("which" ,which))) (inputs `(("jemalloc" ,jemalloc-4.5.0) ("llvm" ,llvm-6) ("openssl" ,openssl-1.0) ("libssh2" ,libssh2) ; For "cargo" ("libcurl" ,curl))) ; For "cargo" ;; rustc invokes gcc, so we need to set its search paths accordingly. ;; Note: duplicate its value here to cope with circular dependencies am= ong ;; modules (see ). (native-search-paths (list (search-path-specification (variable "C_INCLUDE_PATH") (files '("include"))) (search-path-specification (variable "CPLUS_INCLUDE_PATH") (files '("include/c++" "include"))) (search-path-specification (variable "LIBRARY_PATH") (files '("lib" "lib64"))))) (synopsis "Compiler for the Rust progamming language") (description "Rust is a systems programming language that provides memo= ry safety and thread safety guarantees.") (home-page "https://www.rust-lang.org") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) (define-public rust-1.30 (let ((base-rust (rust-bootstrapped-package rust-1.29 "1.30.1" "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) (package (inherit base-rust) (source (origin (inherit (package-source base-rust)) (snippet '(begin (delete-file-recursively "src/jemalloc") (delete-file-recursively "src/llvm") (delete-file-recursively "src/llvm-emscripten") (delete-file-recursively "src/tools/clang") (delete-file-recursively "src/tools/lldb") #t)) (patches '()))) (outputs '("out" "doc" "cargo")) ;; Since rust-1.29 is local, it's quite probable that Hydra ;; will build rust-1.29 only as a dependency of rust-1.30. ;; But then Hydra will use the wrong properties, the ones here, ;; for rust-1.29. Therefore, we copied the properties of ;; rust-1.29 here. (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) (inputs ;; Use LLVM 6.0 (alist-replace "llvm" (list llvm-6) (package-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments rust-1.29) ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'remove-flaky-test (lambda _ ;; See . (when (file-exists? "src/test/run-make/issue-26092") (delete-file-recursively "src/test/run-make/issue-26092"= )) #t)) (add-after 'configure 'enable-codegen-tests ;; Codegen tests should pass with llvm 6, so enable them. (lambda* _ (substitute* "config.toml" (("codegen-tests =3D false") "")) #t)) ;; The test has been moved elsewhere. (add-after 'patch-tests 'disable-amd64-avx-test (lambda _ (substitute* "src/test/ui/issues/issue-44056.rs" (("only-x86_64") "ignore-test")) #t)) (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")) ;; 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")) ;; These tests pull in a dependency on "git", which changes ;; too frequently take part in the Rust toolchain. (substitute* "src/tools/cargo/tests/new.rs" (("fn author_prefers_cargo") "#[ignore]\nfn author_prefe= rs_cargo") (("fn finds_author_git") "#[ignore]\nfn finds_author_git= ") (("fn finds_local_author_git") "#[ignore]\nfn finds_loca= l_author_git")) #t)) (add-after 'patch-cargo-tests 'patch-cargo-env-shebang (lambda* (#:key inputs #:allow-other-keys) (let ((coreutils (assoc-ref inputs "coreutils"))) (substitute* "src/tools/cargo/tests/testsuite/fix.rs" ;; Cargo has a test which explicitly sets a ;; RUSTC_WRAPPER environment variable which points ;; to /usr/bin/env. Since it's not a shebang, it ;; needs to be manually patched (("\"/usr/bin/env\"") (string-append "\"" coreutils "/bin/env\""))) #t))) (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests (lambda* _ (substitute* "src/tools/cargo/tests/testsuite/package.rs" ;; These tests largely check that cargo outputs warning/= error ;; messages as expected. It seems that cargo outputs an ;; absolute path to something in the store instead of the ;; expected relative path (e.g. `[..]`) so we'll ignore ;; these for now (("fn include") "#[ignore]\nfn include") (("fn exclude") "#[ignore]\nfn exclude")) #t)) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (doc (assoc-ref outputs "doc")) (gcc (assoc-ref inputs "gcc")) (gdb (assoc-ref inputs "gdb")) (binutils (assoc-ref inputs "binutils")) (python (assoc-ref inputs "python-2")) (rustc (assoc-ref inputs "rustc-bootstrap")) (cargo (assoc-ref inputs "cargo-bootstrap")) (llvm (assoc-ref inputs "llvm")) (jemalloc (assoc-ref inputs "jemalloc"))) (call-with-output-file "config.toml" (lambda (port) (display (string-append " [llvm] [build] cargo =3D \"" cargo "/bin/cargo" "\" rustc =3D \"" rustc "/bin/rustc" "\" docs =3D true python =3D \"" python "/bin/python2" "\" gdb =3D \"" gdb "/bin/gdb" "\" vendor =3D true submodules =3D false [install] prefix =3D \"" out "\" docdir =3D \"" doc "/share/doc/rust" "\" sysconfdir =3D \"etc\" [rust] default-linker =3D \"" gcc "/bin/gcc" "\" channel =3D \"stable\" rpath =3D true " ;; There are 2 failed codegen tests: ;; codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs ;; These tests require a patched LLVM "codegen-tests =3D false [target." ,(nix-system->gnu-triplet-for-rust) "] llvm-config =3D \"" llvm "/bin/llvm-config" "\" cc =3D \"" gcc "/bin/gcc" "\" cxx =3D \"" gcc "/bin/g++" "\" ar =3D \"" binutils "/bin/ar" "\" jemalloc =3D \"" jemalloc "/lib/libjemalloc_pic.a" "\" [dist] ") port))) #t))) (add-after 'configure 'provide-cc (lambda* (#:key inputs #:allow-other-keys) (symlink (string-append (assoc-ref inputs "gcc") "/bin/gcc= ") "/tmp/cc") (setenv "PATH" (string-append "/tmp:" (getenv "PATH"))) #t)) (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ (for-each (lambda (filename) ;; Rust 1.20.0 treats timestamp 0 as "file doesn't exis= t". ;; Therefore, use timestamp 1. (utime filename 1 1 1 1)) (find-files "." #:directories? #t)) #t)) (replace 'build (lambda* _ (invoke "./x.py" "build") (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ ;; Enable parallel execution. (let ((parallel-job-spec (string-append "-j" (number->string (min 4 (parallel-job-count)))))) (invoke "./x.py" parallel-job-spec "test" "-vv") (invoke "./x.py" parallel-job-spec "test" "src/tools/cargo")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") (substitute* "config.toml" ;; replace prefix to specific output (("prefix =3D \"[^\"]*\"") (string-append "prefix =3D \"" (assoc-ref outputs "carg= o") "\""))) (invoke "./x.py" "install" "cargo"))) (add-after 'install 'delete-install-logs (lambda* (#:key outputs #:allow-other-keys) (define (delete-manifest-file out-path file) (delete-file (string-append out-path "/lib/rustlib/" fil= e))) (let ((out (assoc-ref outputs "out")) (cargo-out (assoc-ref outputs "cargo"))) (for-each (lambda (file) (delete-manifest-file out file)) '("install.log" "manifest-rust-docs" "manifest-rust-std-x86_64-unknown-linux-gnu" "manifest-rustc")) (for-each (lambda (file) (delete-manifest-file cargo-out file)) '("install.log" "manifest-cargo")) #t))) (add-after 'install 'wrap-rustc (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (libc (assoc-ref inputs "libc")) (ld-wrapper (assoc-ref inputs "ld-wrapper"))) ;; Let gcc find ld and libc startup files. (wrap-program (string-append out "/bin/rustc") `("PATH" ":" prefix (,(string-append ld-wrapper "/bin"= ))) `("LIBRARY_PATH" ":" suffix (,(string-append libc "/li= b")))) #t)))))))))) (define-public rust-1.31 (let ((base-rust (rust-bootstrapped-package rust-1.30 "1.31.1" "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli"))) (package (inherit base-rust) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases (add-after 'patch-tests 'patch-command-exec-tests (lambda* (#:key inputs #:allow-other-keys) (let ((coreutils (assoc-ref inputs "coreutils"))) (substitute* "src/test/run-pass/command-exec.rs" ;; This test suite includes some tests that the stdlib= 's ;; `Command` execution properly handles situations whe= re ;; the environment or PATH variable are empty, but this ;; fails since we don't have `echo` available in the u= sual ;; Linux directories. ;; NB: the leading space is so we don't fail a tidy ch= eck ;; for trailing whitespace, and the newlines are to en= sure ;; we don't exceed the 100 chars tidy check as well ((" Command::new\\(\"echo\"\\)") (string-append "\nCommand::new(\"" coreutils "/bin/ec= ho\")\n"))) #t))) ;; The test has been moved elsewhere. (replace 'disable-amd64-avx-test (lambda _ (substitute* "src/test/ui/issues/issue-44056.rs" (("only-x86_64") "ignore-test")) #t)) (add-after 'patch-tests 'patch-process-docs-rev-cmd (lambda* _ ;; Disable some doc tests which depend on the "rev" command ;; https://github.com/rust-lang/rust/pull/58746 (substitute* "src/libstd/process.rs" (("```rust") "```rust,no_run")) #t))))))))) (define-public rust-1.32 (let ((base-rust (rust-bootstrapped-package rust-1.31 "1.32.0" "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac"))) (package (inherit base-rust) (source (origin (inherit (package-source base-rust)) (snippet '(begin (delete-file-recursively "src/llvm") (delete-file-recursively "src/llvm-emscripten") (delete-file-recursively "src/tools/clang") (delete-file-recursively "src/tools/lldb") (delete-file-recursively "vendor/jemalloc-sys/je= malloc") #t)) (patches (map search-patch '("rust-reproducible-builds.patch"))) ;; the vendor directory has moved to the root of ;; the tarball, so we have to strip an extra prefix (patch-flags '("-p2")))) (inputs ;; Downgrade to LLVM 6, all LTO tests appear to fail with LLVM 7.0.1 (alist-replace "llvm" (list llvm-6) (package-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases ;; Cargo.lock and the vendor/ directory have been moved to the ;; root of the rust tarball (replace 'patch-cargo-checksums (lambda* _ (use-modules (guix build cargo-utils)) (substitute* "Cargo.lock" (("(\"checksum .* =3D )\".*\"" all name) (string-append name "\"" ,%cargo-reference-hash "\""))) (generate-all-checksums "vendor") #t)) (add-after 'enable-codegen-tests 'override-jemalloc (lambda* (#:key inputs #:allow-other-keys) ;; The compiler is no longer directly built against jemall= oc, ;; but rather via the jemalloc-sys crate (which vendors the ;; jemalloc source). To use jemalloc we must enable linkin= g to ;; it (otherwise it would use the system allocator), and s= et ;; an environment variable pointing to the compiled jemall= oc. (substitute* "config.toml" (("^jemalloc =3D.*$") "") (("[[]rust[]]") "\n[rust]\njemalloc=3Dtrue\n")) (setenv "JEMALLOC_OVERRIDE" (string-append (assoc-ref inpu= ts "jemalloc") "/lib/libjemall= oc_pic.a")) #t)) ;; Remove no longer relevant steps (delete 'remove-flaky-test) (delete 'patch-aarch64-test)))))))) (define-public rust-1.33 (let ((base-rust (rust-bootstrapped-package rust-1.32 "1.33.0" "152x91mg7bz4ygligwjb05fgm1blwy2i70s2j03zc9jiwvbsh0as"))) (package (inherit base-rust) (source (origin (inherit (package-source base-rust)) (patches '()) (patch-flags '("-p1")))) (inputs ;; Upgrade to jemalloc@5.1.0 (alist-replace "jemalloc" (list jemalloc) (package-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases (delete 'ignore-cargo-package-tests) (add-after 'configure 'configure-test-threads ;; Several rustc and cargo tests will fail if run on one core ;; https://github.com/rust-lang/rust/issues/59122 ;; https://github.com/rust-lang/cargo/issues/6746 ;; https://github.com/rust-lang/rust/issues/58907 (lambda* (#:key inputs #:allow-other-keys) (setenv "RUST_TEST_THREADS" "2") #t))))))))) (define-public rust-1.34 (let ((base-rust (rust-bootstrapped-package rust-1.33 "1.34.1" "19s09k7y5j6g3y4d2rk6kg9pvq6ml94c49w6b72dmq8p9lk8bixh"))) (package (inherit base-rust) (source (origin (inherit (package-source base-rust)) (snippet '(begin (delete-file-recursively "src/llvm-emscripten") (delete-file-recursively "src/llvm-project") (delete-file-recursively "vendor/jemalloc-sys/jemallo= c") #t))))))) (define-public rust-1.35 (let ((base-rust (rust-bootstrapped-package rust-1.34 "1.35.0" "0bbizy6b7002v1rdhrxrf5gijclbyizdhkglhp81ib3bf5x66kas"))) (package (inherit base-rust) (inputs (alist-replace "llvm" (list llvm-8) (package-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases ;; The tidy test includes a pass which ensures large binaries ;; don't accidentally get checked into the rust git repo. ;; Unfortunately the test assumes that git is always available, ;; so we'll comment out the invocation of this pass. (add-after 'configure 'disable-tidy-bins-check (lambda* _ (substitute* "src/tools/tidy/src/main.rs" (("bins::check") "//bins::check")) #t))))))))) (define-public rust-1.36 (let ((base-rust (rust-bootstrapped-package rust-1.35 "1.36.0" "06xv2p6zq03lidr0yaf029ii8wnjjqa894nkmrm6s0rx47by9i04"))) (package (inherit base-rust) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases (delete 'patch-process-docs-rev-cmd)))))))) (define-public rust (let ((base-rust (rust-bootstrapped-package rust-1.36 "1.37.0" "1hrqprybhkhs6d9b5pjskfnc5z9v2l2gync7nb39qjb5s0h703hj"))) (package (inherit base-rust) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases (add-before 'configure 'configure-cargo-home (lambda _ (let ((cargo-home (string-append (getcwd) "/.cargo"))) (mkdir-p cargo-home) (setenv "CARGO_HOME" cargo-home) #t)))))))))) --MP_/sUAqtJYFMMgXGphhsF/Opme-- --Sig_/CAxEekpmg6e.y5Kv57vK3B8 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl559ZwACgkQ5xo1VCww uqVlEgf/VRRzFVB4oOLE9uTGzGXA2oDvJQ9DqTLuAdGL1U6tz6FLPHJ/vWAdQJFz mcplecOE+b64oMkW0TPi9bFJChR6V37eQhC7HTTNBI7ka2U+JoR5iDxpuqUf6o/u ZLWXsEouDwDEjiwwH46YACh6VskBL2vfAuu/1y4nVVT5N6NxeyqnBkv6Ir2usHlJ MwS0l0YzsNSF6Kb1riAnvuk/QKiZjJqvBP2uEhP+8B6YYrqFBtmJH8RA2anvXq1T QWpHKtH0VwGNjCRguu91EBGFgi2g3HRpdCgYGXjmKmwTEn3A6G0V+CaMHsmnpD4h /PBAj28L18RBw3SKVBBwr3/prbCyxg== =mquH -----END PGP SIGNATURE----- --Sig_/CAxEekpmg6e.y5Kv57vK3B8-- From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 24 10:45:44 2020 Received: (at 38110) by debbugs.gnu.org; 24 Mar 2020 14:45:44 +0000 Received: from localhost ([127.0.0.1]:55435 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGkoJ-0005wr-RJ for submit@debbugs.gnu.org; Tue, 24 Mar 2020 10:45:44 -0400 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:35485) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGkoH-0005wa-S2 for 38110@debbugs.gnu.org; Tue, 24 Mar 2020 10:45:42 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 8E2F5901; Tue, 24 Mar 2020 10:45:35 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 24 Mar 2020 10:45:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=876EvGMztttFJssEVXkwc8sonW 5tgZrEkxEh5Cupyyk=; b=ayQCFU3e8AUPSkDV9yqfB3+HUZlpxLbcL0KTzTcFex CQ1ejR1gOzUKrO/u22aueIRaXVs0aEoiydF8Y6d0qcypGifkyHwO6sFflm0XxvTj JRdlaGY/+7YcoZBFCtK9kM3b4qUlRRaWkBzFwzexgQ8XFD7V3h2v9zj1qluSGZ7m cjTnC7axmcmACnGWnb2TTdZhwo2n0FvZxcZf6SDReFlee9c1lR8bByO9L35cV0Kl 3jLwP6zDa/F3WsxnUkfoEMtRiMwxHAfLDOlNSAYxkBNW1GQy+EcFiYN6ZfgRfC1V XLEgM98jXuK4lkpYP9UY+hHVF+pIuVwfE8RMIBdXZA2A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=876EvG MztttFJssEVXkwc8sonW5tgZrEkxEh5Cupyyk=; b=0X609ZU2UX8vT4+klP9EqQ Lel0Bf6/TA1ju559KwmJPOI5r/tHr3rIkYIFDIEp3VNP8DhcysIKVJ93b0bQpElH mcaJa+rFlC9EURPqqoLA2NSkDvZDB1bmSpaMH0qbuhu/rC7A4KMv/D7mlFz2aT2E JOjCoj0uM9TIkNaepJh/vZwWkgKysLKxcMgZNvvDgEXkUBcLY+i7wWQwEhF9N557 Y31a38ac/MLO3rTMCNVehsxdS3GfV7M0d9ZDNArI35eyx9ao1qhbKTzm3o9WK7Ls yh9f3z9I9KbO5Ww+BfcsI3nWmkf9to/Ewf1B6mxel7tBGmFwthkTcdiogBPRYE1Q == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudehuddgfeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufgjfhgffffkgggtsehgtderredtredtnecuhfhrohhmpeforghrihhu shcuuegrkhhkvgcuoehmsggrkhhkvgesfhgrshhtmhgrihhlrdgtohhmqeenucffohhmrg hinhepghhnuhdrohhrghenucfkphepkeegrddvtddvrdeikedrjeehnecuvehluhhsthgv rhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgsrghkkhgvsehfrghsth hmrghilhdrtghomh X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id 99FCD3280064; Tue, 24 Mar 2020 10:45:34 -0400 (EDT) From: Marius Bakke To: Danny Milosavljevic Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. In-Reply-To: <20200324125716.756eb1f2@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> <877dzf9fas.fsf@devup.no> <20200323222403.36a6ce1f@scratchpost.org> <87o8sm3efs.fsf@devup.no> <20200324125716.756eb1f2@scratchpost.org> User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Tue, 24 Mar 2020 15:45:32 +0100 Message-ID: <87o8sl24mr.fsf@devup.no> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38110 Cc: 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain Danny Milosavljevic writes: > Hi Marius, > > On Mon, 23 Mar 2020 23:16:07 +0100 > Marius Bakke wrote: > >> > Building rust, I get a texinfo build failure: > >> How are you building Rust? I've only used the Guix package definition >> and did not get as far as actually running the test suite. Do you have >> an updated build script? > > It's failing in texinfo, not in rust. Oh right, sorry for the confusion. > Also, on my laptop, it's not failing in texinfo. So I guess it has > something to do with bayfront or the machines it offloads to. I haven't seen this in the countless times I've built core-updates over the last few months, nor on Berlin. I suspect it has to do with parallelism; can you see if #:parallel-tests? #f makes a difference? You should be able to grab a Texinfo substitute from ci.guix.gnu.org though. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl56HQwACgkQoqBt8qM6 VPoSrQgAsftWhVugmFh2f3cOjQ8EhnnwuIpV4aCKEyj66Q8DvvePoClZMYCp/r3E Xb6cBLxnaSltd6CMrAOuB3/vEI/ojnyBm2Xc65t2Lf72iXuh1508I7x8IEnBD+wU b9EQlAPYEOZ4r08mHYgctBEdcEFZJPFwufI4mCMwhYXtcpwbEztkbty6d6i/Ui8x F6IW7BrwaTwzth3MjogaUf0Sg9D+EBv+gbXOd2nWAHYzMwISD5R8Koe77pt/v48F 5E4zrR02vh/KETPOU2elKSgvcFwo+DDgKX4jga9mUNf6HHR4dkNJA5unZ5EwuUQs WJrIAZOZHuWPfDC747SI8wfM2irjSA== =Dd/C -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 10 16:56:15 2020 Received: (at 38110) by debbugs.gnu.org; 10 Dec 2020 21:56:15 +0000 Received: from localhost ([127.0.0.1]:39509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1knTuu-0004Pw-0w for submit@debbugs.gnu.org; Thu, 10 Dec 2020 16:56:15 -0500 Received: from mail-qv1-f68.google.com ([209.85.219.68]:34789) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1knTuo-0004PO-Vc for 38110@debbugs.gnu.org; Thu, 10 Dec 2020 16:56:02 -0500 Received: by mail-qv1-f68.google.com with SMTP id 4so3250391qvh.1 for <38110@debbugs.gnu.org>; Thu, 10 Dec 2020 13:55:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=XZ5MCm/6iTWAvVqmc7A5W2ejEO9h+2gNQavxvHlVNnc=; b=YPNxg4XnCuSX2P5GDrigK1vGgm3qigSy4rVAkM+XDWFxOpZWWjHWJBUVI1nSgrfzgr cUxT45kZCXtVbB0IZW6CZCIOSKe67eeC5hRq2k9eNkF5gXzpfqN7olKYQ69LbDkxJzch 0jL1NygY4tWz4k9Zo96ZASs+WFZhi7aCNns0VrpwDpEMAhpD5QIO6oTj5u2ZygUBAAME 5t9EaWEGKPScEzgCxMbYMUGrE6GCFo/I0M3oxs1aO7ahZlkZUDskt/p2TEdsSIc5pUjo gu8gwvA8y4Jd1E9DikS2pv32HnL3z8cAsCtb6GCZfU1XBzQ2H7qNZmjNXvqCnFAZFDhI uqKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=XZ5MCm/6iTWAvVqmc7A5W2ejEO9h+2gNQavxvHlVNnc=; b=DEdAmG8H7/8F36vo7FOm2XeGlI/2eTU4M3XTXCteept6FXizwxgIOr5KTYt16VldOG UBRKC4K8PvNybDBEck+NBcF9CcHcVHXZWakBqG9nkXiA5JPUu47iATdQZzFDlLAZgrBq 2d8Ssje6GflSVOAE7a1RHlmK8/yYxqvNpcCsqjRxB5zTGQlnLG926OW3i9Vnd7bBPNy+ Sya5pFi+CZIX3eE4QabYXWnKtemHFg6RcBVwNTb/3P80NObP2sdnu5p9kGS3TbdjDdWr MNpSU1ppBLXcgBDWmqsqyc3e3RZAdgQaBBIqQdYceiL2berUUFM3b5utOGd7ynfmziOq 4HiQ== X-Gm-Message-State: AOAM533wGIgHwKUEzKffvMOkFPEuvgHkuLDxA8Ra7ueTezqMdB7pI9wN cSqjzpprQEIkJxPY8RCiy3jzcfAP6XXiLg== X-Google-Smtp-Source: ABdhPJxLUrtAJz63HInM6Wiay2lpeniPg2uJrspT6lW9F7NT+zCsmkNW9O6+OvnRoqRCJoYFOYodCg== X-Received: by 2002:a0c:f046:: with SMTP id b6mr11997186qvl.14.1607637353152; Thu, 10 Dec 2020 13:55:53 -0800 (PST) Received: from hurd (dsl-150-179.b2b2c.ca. [66.158.150.179]) by smtp.gmail.com with ESMTPSA id j96sm4644023qtb.24.2020.12.10.13.55.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 13:55:52 -0800 (PST) From: Maxim Cournoyer To: Marius Bakke Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> <877dzf9fas.fsf@devup.no> <20200323222403.36a6ce1f@scratchpost.org> <87o8sm3efs.fsf@devup.no> <20200324125716.756eb1f2@scratchpost.org> <87o8sl24mr.fsf@devup.no> Date: Thu, 10 Dec 2020 16:55:51 -0500 In-Reply-To: <87o8sl24mr.fsf@devup.no> (Marius Bakke's message of "Tue, 24 Mar 2020 15:45:32 +0100") Message-ID: <87pn3h5nrs.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38110 Cc: Danny Milosavljevic , 38110@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Hello Marius, Marius Bakke writes: > Danny Milosavljevic writes: > >> Hi Marius, >> >> On Mon, 23 Mar 2020 23:16:07 +0100 >> Marius Bakke wrote: >> >>> > Building rust, I get a texinfo build failure: >> >>> How are you building Rust? I've only used the Guix package definition >>> and did not get as far as actually running the test suite. Do you have >>> an updated build script? >> >> It's failing in texinfo, not in rust. > > Oh right, sorry for the confusion. > >> Also, on my laptop, it's not failing in texinfo. So I guess it has >> something to do with bayfront or the machines it offloads to. > > I haven't seen this in the countless times I've built core-updates over > the last few months, nor on Berlin. I suspect it has to do with > parallelism; can you see if #:parallel-tests? #f makes a difference? > > You should be able to grab a Texinfo substitute from ci.guix.gnu.org > though. I don't recall how close or how far it was from actually building, but attached is a modified version of Danny's patch I was working on, that applies to current core-updates: --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-gnu-rust-Bootstrap-rust-1.29.0-by-mrustc-0.9.patch >From 745ed53938b6e19268e0fc2cb07b7bc2131c151e Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Tue, 18 Aug 2020 14:59:03 -0400 Subject: [PATCH] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. * gnu/packages/patches/mrustc-group-link.patch: New file. * gnu/packages/patches/rustc-1.29.0-src.patch: New file. * gnu/local.mk (dist_patch_DATA): Register new files. * gnu/packages/rust.scm (mrustc): Update rustc-version to 1.29.0 and apply patch. (rust-1.19): Delete variable. (rust-1.20, rust-1.21 rust-1.22, rust-1.23, rust-1.24): Likewise. (rust-1.25, rust-1.26, rust-1.27, rust-1.28): Delete variable. (rust-1.29): Bootstrap from mrustc and apply patch. (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. --- gnu/local.mk | 2 + gnu/packages/patches/mrustc-group-link.patch | 22 + gnu/packages/patches/rustc-1.29.0-src.patch | 86 +++ gnu/packages/rust.scm | 582 +++++-------------- 4 files changed, 242 insertions(+), 450 deletions(-) create mode 100644 gnu/packages/patches/mrustc-group-link.patch create mode 100644 gnu/packages/patches/rustc-1.29.0-src.patch diff --git a/gnu/local.mk b/gnu/local.mk index 9979e9172e..1d6d801e8d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1361,6 +1361,7 @@ dist_patch_DATA = \ %D%/packages/patches/mozjs38-tracelogger.patch \ %D%/packages/patches/mozjs38-version-detection.patch \ %D%/packages/patches/mrrescue-support-love-11.patch \ + %D%/packages/patches/mrustc-group-link.patch \ %D%/packages/patches/mtools-mformat-uninitialized.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ %D%/packages/patches/mumps-shared-libseq.patch \ @@ -1588,6 +1589,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ %D%/packages/patches/rust-1.45-linker-locale.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ + %D%/packages/patches/rustc-1.29.0-src.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \ %D%/packages/patches/rust-nettle-sys-disable-vendor.patch \ diff --git a/gnu/packages/patches/mrustc-group-link.patch b/gnu/packages/patches/mrustc-group-link.patch new file mode 100644 index 0000000000..fec0dfbe69 --- /dev/null +++ b/gnu/packages/patches/mrustc-group-link.patch @@ -0,0 +1,22 @@ +Surround the libraries with --start-group and --end-group to work +around . + +diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp +--- a/src/trans/codegen_c.cpp ++++ b/src/trans/codegen_c.cpp +@@ -960,6 +960,7 @@ namespace { + { + args.push_back("-L"); args.push_back(path); + } ++ args.push_back("-Wl,--start-group"); + for(const auto& lib : m_crate.m_ext_libs) { + ASSERT_BUG(Span(), lib.name != "", ""); + args.push_back("-l"); args.push_back(lib.name.c_str()); +@@ -975,6 +976,7 @@ namespace { + { + args.push_back("-l"); args.push_back(path.c_str()); + } ++ args.push_back("-Wl,--end-group"); + for( const auto& a : Target_GetCurSpec().m_backend_c.m_linker_opts ) + { + args.push_back( a.c_str() ); diff --git a/gnu/packages/patches/rustc-1.29.0-src.patch b/gnu/packages/patches/rustc-1.29.0-src.patch new file mode 100644 index 0000000000..0af626b615 --- /dev/null +++ b/gnu/packages/patches/rustc-1.29.0-src.patch @@ -0,0 +1,86 @@ +From mrustc 0.9. +# Add mrustc slice length intrinsics +--- rustc-1.29.0-src/src/libcore/intrinsics.rs ++++ rustc-1.29.0-src/src/libcore/intrinsics.rs +@@ -678,5 +678,9 @@ + pub fn min_align_of_val(_: &T) -> usize; + ++ /// Obtain the length of a slice pointer ++ #[cfg(rust_compiler="mrustc")] ++ pub fn mrustc_slice_len(pointer: *const [T]) -> usize; ++ + /// Gets a static string slice containing the name of a type. + pub fn type_name() -> &'static str; + +--- rustc-1.29.0-src/src/libcore/slice/mod.rs ++++ rustc-1.29.0-src/src/libcore/slice/mod.rs +@@ -413,5 +413,7 @@ + pub const fn len(&self) -> usize { +- unsafe { +- Repr { rust: self }.raw.len +- } ++ #[cfg(not(rust_compiler="mrustc"))] ++ const fn len_inner(s: &[T]) -> usize { unsafe { Repr { rust: s }.raw.len } }; ++ #[cfg(rust_compiler="mrustc")] ++ const fn len_inner(s: &[T]) -> usize { unsafe { ::intrinsics::mrustc_slice_len(s) } } ++ len_inner(self) + } +# Static-link rustc_codegen_llvm because mrustc doesn't have dylib support +--- rustc-1.29.0-src/src/librustc_driver/Cargo.toml ++++ rustc-1.29.0-src/src/librustc_driver/Cargo.toml +@@ -39,1 +39,2 @@ + syntax_pos = { path = "../libsyntax_pos" } ++rustc_codegen_llvm = { path = "../librustc_codegen_llvm" } +--- rustc-1.29.0-src/src/librustc_driver/lib.rs ++++ rustc-1.29.0-src/src/librustc_driver/lib.rs +@@ -63,2 +63,3 @@ + extern crate syntax_pos; ++extern crate rustc_codegen_llvm; + +@@ -296,3 +296,7 @@ + } + ++ if backend_name == "llvm" { ++ return rustc_codegen_llvm::__rustc_codegen_backend; ++ } ++ + let target = session::config::host_triple(); +# No workspace support in minicargo, patch cargo's Cargo.toml +--- rustc-1.29.0-src/src/tools/cargo/Cargo.toml ++++ rustc-1.29.0-src/src/tools/cargo/Cargo.toml +@@ -60,5 +60,5 @@ + # A noop dependency that changes in the Rust repository, it's a bit of a hack. + # See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust` + # for more information. +-rustc-workspace-hack = "1.0.0" ++rustc-workspace-hack = { path = "../rustc-workspace-hack" } + +# mrustc can't represent a 24 byte version of this enum (no way of storing the +# tag in padding) +--- rustc-1.29.0-src/src/librustc/ty/context.rs ++++ rustc-1.29.0-src/src/librustc/ty/context.rs +@@ -805,5 +805,5 @@ + // Ensure our type representation does not grow +- #[cfg(target_pointer_width = "64")] +- assert!(mem::size_of::() <= 24); +- #[cfg(target_pointer_width = "64")] +- assert!(mem::size_of::() <= 32); ++ //#[cfg(target_pointer_width = "64")] ++ //assert!(mem::size_of::() <= 24); ++ //#[cfg(target_pointer_width = "64")] ++ //assert!(mem::size_of::() <= 32); + +--- rustc-1.29.0-src/src/stdsimd/stdsimd/arch/detect/os/x86.rs ++++ rustc-1.29.0-src/src/stdsimd/stdsimd/arch/detect/os/x86.rs +@@ -14,5 +14,11 @@ + /// Performs run-time feature detection. + #[inline] ++#[cfg(not(rust_compiler="mrustc"))] + pub fn check_for(x: Feature) -> bool { + cache::test(x as u32, detect_features) + } ++#[inline] ++#[cfg(rust_compiler="mrustc")] ++pub fn check_for(x: Feature) -> bool { ++ false ++} diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 35a96b5754..dd6db6da97 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -116,7 +116,7 @@ (package-native-inputs base-rust)))))) (define-public mrustc - (let ((rustc-version "1.19.0")) + (let ((rustc-version "1.29.0")) (package (name "mrustc") (version "0.9") @@ -126,6 +126,7 @@ (url "https://github.com/thepowersgang/mrustc") (commit (string-append "v" version)))) (file-name (git-file-name name version)) + (patches (search-patches "mrustc-group-link.patch")) (sha256 (base32 "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))) @@ -137,7 +138,7 @@ `(("bison" ,bison) ("flex" ,flex) ;; Required for the libstd sources. - ("rustc" ,(package-source rust-1.19)))) + ("rustc" ,(package-source rust-1.29)))) (arguments `(#:test-target "test" #:make-flags @@ -156,21 +157,17 @@ (add-after 'patch-date 'unpack-target-compiler (lambda* (#:key inputs outputs #:allow-other-keys) (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir ,(string-append "rustc-" rustc-version "-src")) - (invoke "patch" "-p0" ,(string-append "../rustc-" rustc-version + (invoke "patch" "-p1" ,(string-append "rustc-" rustc-version "-src.patch")) - (chdir "..") (setenv "RUSTC_VERSION" ,rustc-version) (setenv "MRUSTC_TARGET_VER" ,(version-major+minor rustc-version)) (setenv "OUTDIR_SUF" "") #t)) (replace 'configure - (lambda* (#:key inputs #:allow-other-keys) - (setenv "CC" (string-append (assoc-ref inputs "gcc") - "/bin/gcc")) - (setenv "CXX" (string-append (assoc-ref inputs "gcc") - "/bin/g++")) + (lambda _ + (setenv "CC" "gcc") + (setenv "CXX" "g++") #t)) (add-after 'build 'build-minicargo (lambda* (#:key make-flags #:allow-other-keys) @@ -217,21 +214,24 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat))))) -(define rust-1.19 +(define rust-1.29 (package (name "rust") - (version "1.19.0") + (version "1.29.0") (source (origin (method url-fetch) - (uri (rust-uri "1.19.0")) - (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (uri (rust-uri "1.29.0")) + (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9sx4")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (search-patches "rust-1.19-mrustc.patch")))) - (outputs '("out" "cargo")) + (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch" + "rustc-1.29.0-src.patch"))))) + (outputs '("out" "cargo" "doc")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) + (build-system gnu-build-system) (arguments `(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums' #:modules ((guix build utils) (ice-9 match) (guix build gnu-build-system)) @@ -244,27 +244,9 @@ safety and thread safety guarantees.") (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 + ;; The Guix LLVM package installs only shared libraries. (setenv "LLVM_LINK_SHARED" "1") #t)) - (add-after 'unpack 'patch-cargo-tomls - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "src/librustc_errors/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -term = \"0.4.4\" -")) - (substitute* "src/librustc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -getopts = { path = \"../libgetopts\" } -")) - (substitute* "src/librustdoc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -test = { path = \"../libtest\" } -")) - #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -283,27 +265,29 @@ test = { path = \"../libtest\" } #[ignore] fn test_process_mask")) #t))) + (add-after 'patch-tests 'patch-cargo-index-update + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" + ;; This test wants to update the crate index. + (("fn no_index_update") "#[ignore]\nfn no_index_update")) + #t)) (add-after 'patch-tests 'patch-aarch64-test (lambda* _ - (substitute* "src/librustc_back/dynamic_lib.rs" + (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)) - (add-after 'patch-tests 'use-readelf-for-tests - (lambda* _ - ;; 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 ")) + ;; This test fails on aarch64 with llvm@6.0: + ;; https://github.com/rust-lang/rust/issues/49807 + ;; other possible solution: + ;; https://github.com/rust-lang/rust/pull/47688 + (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") #t)) (add-after 'patch-tests 'remove-unsupported-tests (lambda* _ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; - (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ @@ -315,28 +299,36 @@ test = { path = \"../libtest\" } #t)) ;; This phase is overridden by newer versions. (replace 'configure - (const #t)) + (lambda _ + (setenv "CXX" "g++") + (setenv "HOST_CXX" "g++") + #t)) ;; This phase is overridden by newer versions. (replace 'build - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) + (lambda* (#:key inputs outputs parallel-build? #:allow-other-keys) + (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap")) + (job-count (if parallel-build? + (number->string (parallel-job-count)) + "1"))) (setenv "CFG_COMPILER_HOST_TRIPLE" ,(nix-system->gnu-triplet (%current-system))) (setenv "CFG_RELEASE" "") (setenv "CFG_RELEASE_CHANNEL" "stable") (setenv "CFG_LIBDIR_RELATIVE" "lib") - (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + (setenv "CFG_VERSION" "1.29.0-stable-mrustc") (setenv "MRUSTC_TARGET_VER" ,(version-major+minor version)) ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. - (mkdir-p "output") - ;; mrustc 0.9 doesn't check the search paths for crates anymore. + ;; Crate::load_extern_crate ignores the search path, so make + ;; the situation easier for it. + ;; Also, mrustc 0.9 doesn't check the search paths for crates + ;; anymore. (copy-recursively (string-append rustc-bootstrap "/lib/mrust") "output") (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/rustc" "--vendor-dir" "src/vendor" "--output-dir" "output/rustc-build" "-L" (string-append rustc-bootstrap "/lib/mrust") - "-j" "1") + "-j" job-count) (setenv "CFG_COMPILER_HOST_TRIPLE" #f) (setenv "CFG_RELEASE" #f) (setenv "CFG_RELEASE_CHANNEL" #f) @@ -346,9 +338,8 @@ test = { path = \"../libtest\" } (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/tools/cargo" "--vendor-dir" "src/vendor" "--output-dir" "output/cargo-build" - "-L" "output/" "-L" (string-append rustc-bootstrap "/lib/mrust") - "-j" "1") + "-j" job-count) ;; Now use the newly-built rustc to build the libraries. ;; One day that could be replaced by: ;; (invoke "output/cargo-build/cargo" "build" @@ -362,7 +353,7 @@ test = { path = \"../libtest\" } (write name) (newline) (apply invoke - "output/rustc-build/rustc" + "output/rustc-build/rustc_binary" "-C" (string-append "linker=" (getenv "CC")) ;; Required for libterm. @@ -387,9 +378,7 @@ test = { path = \"../libtest\" } ;; Uses "cc" to link. ("libstd" "-l" "dl" "-l" "rt" "-l" "pthread") ("libarena") - ;; Test dependencies: - ("libgetopts") ("libterm") ("libtest"))) @@ -417,7 +406,6 @@ test = { path = \"../libtest\" } (string-append (assoc-ref outputs "cargo") "/bin"))) #t))))) - (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ; For the tests ("cmake" ,cmake-minimal) @@ -433,36 +421,22 @@ test = { path = \"../libtest\" } ("which" ,which))) (inputs `(("jemalloc" ,jemalloc-4.5.0) - ("llvm" ,llvm-3.9.1) + ("llvm" ,llvm-6) ("openssl" ,openssl-1.0) ("libssh2" ,libssh2) ; For "cargo" ("libcurl" ,curl))) ; For "cargo" - - ;; rustc invokes gcc, so we need to set its search paths accordingly. - ;; Note: duplicate its value here to cope with circular dependencies among - ;; modules (see ). - (native-search-paths - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "CPLUS_INCLUDE_PATH") - (files '("include/c++" "include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib" "lib64"))))) - - (synopsis "Compiler for the Rust programming language") + (native-search-paths (package-native-search-paths gcc)) + (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://www.rust-lang.org") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define-public rust-1.20 +(define-public rust-1.30 (let ((base-rust - (rust-bootstrapped-package rust-1.19 "1.20.0" - "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) + (rust-bootstrapped-package rust-1.29 "1.30.1" + "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) (package (inherit base-rust) (source @@ -471,24 +445,45 @@ safety and thread safety guarantees.") (snippet '(begin (delete-file-recursively "src/jemalloc") (delete-file-recursively "src/llvm") + (delete-file-recursively "src/llvm-emscripten") + (delete-file-recursively "src/tools/clang") + (delete-file-recursively "src/tools/lldb") #t)) (patches '()))) - (native-inputs - `(;; The tests fail with newer versions of GNU Make. - ("make" ,gnu-make-4.2) - ,@(package-native-inputs base-rust))) (outputs '("out" "doc" "cargo")) - ;; Since rust-1.19 is local, it's quite probable that Hydra - ;; will build rust-1.19 only as a dependency of rust-1.20. + ;; Since rust-1.29 is local, it's quite probable that Hydra + ;; will build rust-1.29 only as a dependency of rust-1.30. ;; But then Hydra will use the wrong properties, the ones here, - ;; for rust-1.19. Therefore, we copied the properties of - ;; rust-1.19 here. + ;; for rust-1.29. Therefore, we copied the properties of + ;; rust-1.29 here. (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) + (inputs + ;; Use LLVM 6.0 + (alist-replace "llvm" (list llvm-6) + (package-inputs base-rust))) (arguments - (substitute-keyword-arguments (package-arguments rust-1.19) + (substitute-keyword-arguments (package-arguments rust-1.29) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'remove-flaky-test + (lambda _ + ;; See . + (when (file-exists? "src/test/run-make/issue-26092") + (delete-file-recursively "src/test/run-make/issue-26092")) + #t)) + (add-after 'configure 'enable-codegen-tests + ;; Codegen tests should pass with llvm 6, so enable them. + (lambda* _ + (substitute* "config.toml" + (("codegen-tests = false") "")) + #t)) + ;; The test has been moved elsewhere. + (add-after 'patch-tests 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" @@ -510,12 +505,29 @@ safety and thread safety guarantees.") (("fn finds_author_git") "#[ignore]\nfn finds_author_git") (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) #t)) - (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test - ;; https://github.com/rust-lang/rust/issues/47863 - (lambda _ - (substitute* "src/test/run-pass/out-of-stack.rs" - (("// ignore-android") "// ignore-test\n// ignore-android")) - #t)) + (add-after 'patch-cargo-tests 'patch-cargo-env-shebang + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "src/tools/cargo/tests/testsuite/fix.rs" + ;; Cargo has a test which explicitly sets a + ;; RUSTC_WRAPPER environment variable which points + ;; to /usr/bin/env. Since it's not a shebang, it + ;; needs to be manually patched + (("\"/usr/bin/env\"") + (string-append "\"" coreutils "/bin/env\""))) + #t))) + (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/package.rs" + ;; These tests largely check that cargo outputs warning/error + ;; messages as expected. It seems that cargo outputs an + ;; absolute path to something in the store instead of the + ;; expected relative path (e.g. `[..]`) so we'll ignore + ;; these for now + (("fn include") "#[ignore]\nfn include") + (("fn exclude") "#[ignore]\nfn exclude")) + #t)) + (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -567,16 +579,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" "/tmp/cc") (setenv "PATH" (string-append "/tmp:" (getenv "PATH"))) #t)) - (add-after 'provide-cc 'configure-archiver - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/build_helper/lib.rs" - ;; Make sure "ar" is always used as the archiver. - (("\"musl\"") "\"\"") - ;; Then substitute "ar" by our name. - (("\"ar\"") (string-append "\"" - (assoc-ref inputs "binutils") - "/bin/ar\""))) - #t)) (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ @@ -593,11 +595,14 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ - ;; Disable parallel execution to prevent EAGAIN errors when - ;; running tests. - (invoke "./x.py" "-j1" "test" "-vv") - (invoke "./x.py" "-j1" "test" "src/tools/cargo") - #t)) + ;; Enable parallel execution. + (let ((parallel-job-spec + (string-append "-j" (number->string + (min 4 + (parallel-job-count)))))) + (invoke "./x.py" parallel-job-spec "test" "-vv") + (invoke "./x.py" parallel-job-spec "test" + "src/tools/cargo")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") @@ -636,341 +641,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) #t)))))))))) -(define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" - "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'remove-ar - (lambda* (#:key inputs #:allow-other-keys) - ;; Remove because toml complains about "unknown field". - (substitute* "config.toml" - (("^ar =.*") "\n")) - #t))))))))) - -(define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" - "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'remove-flaky-test - (lambda _ - ;; See . - (when (file-exists? "src/test/run-make/issue-26092") - (delete-file-recursively "src/test/run-make/issue-26092")) - #t))))))))) - -(define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" - "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-archiver) - (delete 'remove-ar) - (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))))))))) - -(define-public rust-1.24 - (let ((base-rust - (rust-bootstrapped-package rust-1.23 "1.24.1" - "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'use-readelf-for-tests) - (replace 'patch-aarch64-test - (lambda* _ - (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))))))))) - -;;; Rust 1.25 release support work with llvm 6--but build with llvm 6 is -;;; not determenistic due to . -;;; Keep using llvm 3.9.1 until builds become determenistic -(define-public rust-1.25 - (let ((base-rust - (rust-bootstrapped-package rust-1.24 "1.25.0" - "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - #t)) - (patches (search-patches - "rust-1.25-accept-more-detailed-gdb-lines.patch")))) - (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")) - #t)) - (replace 'patch-aarch64-test - (lambda _ - (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")) - ;; This test fails on aarch64 with llvm@6.0: - ;; https://github.com/rust-lang/rust/issues/49807 - ;; other possible solution: - ;; https://github.com/rust-lang/rust/pull/47688 - (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs") - #t)) - (delete 'ignore-glibc-2.27-incompatible-test)))))))) - -(define-public rust-1.26 - (let ((base-rust - (rust-bootstrapped-package rust-1.25 "1.26.2" - "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (search-patches - "rust-coresimd-doctest.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch")))) - (inputs - (alist-replace "openssl" (list openssl) - (package-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - ;; binaryen was replaced with LLD project from LLVM - (delete 'dont-build-native) - (replace 'check - (lambda* _ - ;; Enable parallel execution. - (let ((parallel-job-spec - (string-append "-j" (number->string - (min 4 - (parallel-job-count)))))) - (invoke "./x.py" parallel-job-spec "test" "-vv") - (invoke "./x.py" parallel-job-spec "test" - "src/tools/cargo")))) - (replace 'remove-unsupported-tests - (lambda* _ - ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. - ;; - (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") - #t)) - (replace 'patch-cargo-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/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/testsuite/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/testsuite/test.rs" - (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) - - ;; Avoid dependency on "git". - (substitute* "src/tools/cargo/tests/testsuite/new.rs" - (("fn author_prefers_cargo") "#[ignore]\nfn author_prefers_cargo") - (("fn finds_author_git") "#[ignore]\nfn finds_author_git") - (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) - #t)) - (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel - (lambda* _ - ;; This test failed to work on "nightly" channel builds - ;; https://github.com/rust-lang/cargo/issues/5648 - (substitute* "src/tools/cargo/tests/testsuite/resolve.rs" - (("fn test_resolving_minimum_version_with_transitive_deps") - "#[ignore]\nfn test_resolving_minimum_version_with_transitive_deps")) - #t)) - (replace 'patch-cargo-index-update - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs" - ;; This test wants to update the crate index. - (("fn no_index_update") "#[ignore]\nfn no_index_update")) - #t))))))))) - -(define-public rust-1.27 - (let ((base-rust - (rust-bootstrapped-package rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (search-patches "rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'install 'mkdir-prefix-paths - (lambda* (#:key outputs #:allow-other-keys) - ;; As result of https://github.com/rust-lang/rust/issues/36989 - ;; `prefix' directory should exist before `install' call - (mkdir-p (assoc-ref outputs "out")) - (mkdir-p (assoc-ref outputs "cargo")) - #t)) - (add-after 'patch-cargo-tests 'disable-thinlto-test - (lambda* _ - ;; thinlto required llvm 6.0 for work - (substitute* "src/tools/cargo/tests/testsuite/path.rs" - (("fn thin_lto_works") "#[ignore]\nfn thin_lto_works")) - #t))))))))) - -(define-public rust-1.28 - (let ((base-rust - (rust-bootstrapped-package rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (search-patches "rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) - (inputs - ;; Use LLVM 6.0 - (alist-replace "llvm" (list llvm-6) - (package-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'enable-codegen-tests - ;; Codegen tests should pass with llvm 6, so enable them. - (lambda* _ - (substitute* "config.toml" - (("codegen-tests = false") "")) - #t)) - (add-after 'patch-tests 'disable-amd64-avx-test - ;; That test would fail on x86_64 machines without avx. - (lambda* _ - (substitute* "src/test/run-pass/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t)) - ;; This is no longer needed as of 1.28 - (delete 'disable-cargo-test-for-nightly-channel) - ;; The thinlto test should pass with llvm 6. - (delete 'disable-thinlto-test)))))))) - -(define-public rust-1.29 - (let ((base-rust - (rust-bootstrapped-package rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (search-patches "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))))) - -(define-public rust-1.30 - (let ((base-rust - (rust-bootstrapped-package rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - (delete-file-recursively "src/tools/clang") - (delete-file-recursively "src/tools/lldb") - #t)))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'patch-cargo-tests 'patch-cargo-env-shebang - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) - (substitute* "src/tools/cargo/tests/testsuite/fix.rs" - ;; Cargo has a test which explicitly sets a - ;; RUSTC_WRAPPER environment variable which points - ;; to /usr/bin/env. Since it's not a shebang, it - ;; needs to be manually patched - (("\"/usr/bin/env\"") - (string-append "\"" coreutils "/bin/env\""))) - #t))) - (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/package.rs" - ;; These tests largely check that cargo outputs warning/error - ;; messages as expected. It seems that cargo outputs an - ;; absolute path to something in the store instead of the - ;; expected relative path (e.g. `[..]`) so we'll ignore - ;; these for now - (("fn include") "#[ignore]\nfn include") - (("fn exclude") "#[ignore]\nfn exclude")) - #t)) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/run-pass/issues/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t))))))))) - -(define (patch-command-exec-tests-phase test-path) - "The command-exec.rs test moves around between releases. We need to apply -a Guix-specific patch to it for each release. This function generates the phase -that applies said patch, parametrized by the test-path. This is done this way -because the phase is more complex than the equivalents for other tests that -move around." - `(lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) - (substitute* ,test-path - ;; This test suite includes some tests that the stdlib's - ;; `Command` execution properly handles situations where - ;; the environment or PATH variable are empty, but this - ;; fails since we don't have `echo` available in the usual - ;; Linux directories. - ;; NB: the leading space is so we don't fail a tidy check - ;; for trailing whitespace, and the newlines are to ensure - ;; we don't exceed the 100 chars tidy check as well - ((" Command::new\\(\"echo\"\\)") - (string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n"))) - #t))) - (define-public rust-1.31 (let ((base-rust (rust-bootstrapped-package rust-1.30 "1.31.1" @@ -982,14 +652,26 @@ move around." ((#:phases phases) `(modify-phases ,phases (add-after 'patch-tests 'patch-command-exec-tests - ,(patch-command-exec-tests-phase - "src/test/run-pass/command-exec.rs")) - ;; The test has been moved elsewhere. + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "src/test/run-pass/command-exec.rs" + ;; This test suite includes some tests that the stdlib's + ;; `Command` execution properly handles situations where + ;; the environment or PATH variable are empty, but this + ;; fails since we don't have `echo` available in the usual + ;; Linux directories. + ;; NB: the leading space is so we don't fail a tidy check + ;; for trailing whitespace, and the newlines are to ensure + ;; we don't exceed the 100 chars tidy check as well + ((" Command::new\\(\"echo\"\\)") + (string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n"))) + #t))) + ;; The test has been moved elsewhere. (replace 'disable-amd64-avx-test (lambda _ (substitute* "src/test/ui/issues/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t)) + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-process-docs-rev-cmd (lambda* _ ;; Disable some doc tests which depend on the "rev" command @@ -1131,7 +813,7 @@ move around." `(modify-phases ,phases (delete 'patch-process-docs-rev-cmd)))))))) -(define-public rust-1.37 +(define-public rust (let ((base-rust (rust-bootstrapped-package rust-1.36 "1.37.0" "1hrqprybhkhs6d9b5pjskfnc5z9v2l2gync7nb39qjb5s0h703hj"))) -- 2.29.2 --=-=-= Content-Type: text/plain Perhaps it can be useful. Maxim --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 05 09:58:23 2021 Received: (at 38110-done) by debbugs.gnu.org; 5 Feb 2021 14:58:23 +0000 Received: from localhost ([127.0.0.1]:44469 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82Yx-0004BZ-Hc for submit@debbugs.gnu.org; Fri, 05 Feb 2021 09:58:23 -0500 Received: from mail-qt1-f178.google.com ([209.85.160.178]:42365) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l82Yv-0004BM-DL for 38110-done@debbugs.gnu.org; Fri, 05 Feb 2021 09:58:22 -0500 Received: by mail-qt1-f178.google.com with SMTP id e15so5118332qte.9 for <38110-done@debbugs.gnu.org>; Fri, 05 Feb 2021 06:58:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=TtbLUGRfZ8pDCsok5wb4+6uEJz7vZ0o7K9mz9W16IoM=; b=ExSwJeUwszcJgBoVqwyh2n+p4UaCkrEXADHGN3w+ml5X7SJbJeIDs+/2w0dwPhpWqo s6PVCHw43RcPfC44Dv/uXBvbEgMmEqD2mhvWFM827DN4Qyt3ZDNd30MVBeW9sAXXq6oY AEDQbBcdfOujvPX+M4JILHFHGFyUl4YELcu3rQvhCyS0tQFFQxvqUiqT+nkHOxZI8+MD +vVDmUu8CkWI7Mk4+5iCIemPikWuEMeXE9NhEjRS80XToK9NqBfNBRSNBLroz7c/bNXA lkinlpSpRc+DF6T5NA1pl5GdxejquAPV3e/EetCTL/Ai+dsT084b3GM4KQjOgkqVMSky /vLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=TtbLUGRfZ8pDCsok5wb4+6uEJz7vZ0o7K9mz9W16IoM=; b=MpF6XIkJXmFN6ZdyZuK+rgvIx0IyizPiKlMembz1BXSr7NyS53wgaOT7KI0IspS9wB m85+pmmDbL7bWOy4J7BF2eONYcPYJVWFvypfymxclqulN/Us6jal67T9UPiHSjpvVf4b KDiCc2nokkC3h1dLgBS+CZ48pH6bCK9AnR79okyFPIKOZEsrLaAz94kYkyIj1HVI/efW CURFLPUrEhgow802scT1JziapEj+JaXaXOa089t64i68/cbsCd/IK0bX27xW5LpF/dRq oPPLyDQCZdPuYQ5/jZt7m1Q/StJQ2jqqVKh3CGEOd+u1QchCBgH2tRPnzxmvXHqiZp1a 4Smw== X-Gm-Message-State: AOAM532DEFzy2aPtzWPEjoqRRBeonokHCNGjtd/zW0onJ3ratjCzqxD+ TNHpxUn1JmbayNkW1GKf5P9brcILXbs= X-Google-Smtp-Source: ABdhPJzQ7hMY8q9NREnlMYw036MEpLz426sFSLW/i1fMX63ize+JAKCCoHXbH/SU3wHT1fa2fMtKww== X-Received: by 2002:ac8:7217:: with SMTP id a23mr4638435qtp.175.1612537095454; Fri, 05 Feb 2021 06:58:15 -0800 (PST) Received: from hurd (dsl-205-151-56-157.b2b2c.ca. [205.151.56.157]) by smtp.gmail.com with ESMTPSA id c7sm8551815qtm.60.2021.02.05.06.58.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 06:58:14 -0800 (PST) From: Maxim Cournoyer To: Marius Bakke Subject: Re: bug#38110: [PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9. References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> <877dzf9fas.fsf@devup.no> <20200323222403.36a6ce1f@scratchpost.org> <87o8sm3efs.fsf@devup.no> <20200324125716.756eb1f2@scratchpost.org> <87o8sl24mr.fsf@devup.no> <87pn3h5nrs.fsf@gmail.com> Date: Fri, 05 Feb 2021 09:58:13 -0500 In-Reply-To: <87pn3h5nrs.fsf@gmail.com> (Maxim Cournoyer's message of "Thu, 10 Dec 2020 16:55:51 -0500") Message-ID: <87czxeo92y.fsf_-_@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38110-done Cc: Danny Milosavljevic , 38110-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, Maxim Cournoyer writes: > Hello Marius, > > Marius Bakke writes: > >> Danny Milosavljevic writes: >> >>> Hi Marius, >>> >>> On Mon, 23 Mar 2020 23:16:07 +0100 >>> Marius Bakke wrote: >>> >>>> > Building rust, I get a texinfo build failure: >>> >>>> How are you building Rust? I've only used the Guix package definition >>>> and did not get as far as actually running the test suite. Do you have >>>> an updated build script? >>> >>> It's failing in texinfo, not in rust. >> >> Oh right, sorry for the confusion. >> >>> Also, on my laptop, it's not failing in texinfo. So I guess it has >>> something to do with bayfront or the machines it offloads to. >> >> I haven't seen this in the countless times I've built core-updates over >> the last few months, nor on Berlin. I suspect it has to do with >> parallelism; can you see if #:parallel-tests? #f makes a difference? >> >> You should be able to grab a Texinfo substitute from ci.guix.gnu.org >> though. > > I don't recall how close or how far it was from actually building, but > attached is a modified version of Danny's patch I was working on, that > applies to current core-updates: > > > > Perhaps it can be useful. > > Maxim I ended up pushing a heavily modified version of the original patch from Danny, as commit df93fc21a4 on core-updates. Closing. Thank you! Maxim From unknown Fri Jun 20 07:15:00 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 06 Mar 2021 12:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator