GNU bug report logs - #38110
[PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9.

Previous Next

Package: guix-patches;

Reported by: Danny Milosavljevic <dannym <at> scratchpost.org>

Date: Thu, 7 Nov 2019 22:29:02 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

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

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

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


Report forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 07 Nov 2019 22:29:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Danny Milosavljevic <dannym <at> scratchpost.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Thu, 07 Nov 2019 22:29:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: guix-patches <at> gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH 0/2] Bootstrap rust <at> 1.29.0 directly from mrustc <at> 0.9.
Date: Thu,  7 Nov 2019 23:27:56 +0100
Danny Milosavljevic (2):
  gnu: mrustc: Update to 0.9.
  gnu: rust: Bootstrap rust <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 07 Nov 2019 22:31:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH 1/2] gnu: mrustc: Update to 0.9.
Date: Thu,  7 Nov 2019 23:29:59 +0100
* 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 <dannym <at> scratchpost.org>
-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<uint64_t>(b) << ofs;
-+        v |= static_cast<uint64_t>(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




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 07 Nov 2019 22:31:03 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH 2/2] gnu: rust: Bootstrap rust <at> 1.29.0 from mrustc.
Date: Thu,  7 Nov 2019 23:30:00 +0100
* 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 <at> 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.
              ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
-             (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 <https://github.com/rust-lang/rust/issues/43402>.
+                 (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 <https://github.com/rust-lang/rust/issues/43402>.
-                 (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 <https://github.com/rust-lang/rust/issues/50556>.
-;;; 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 <at> 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.
-                 ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
-                 (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"




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 07 Nov 2019 23:18:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Subject: Re: [PATCH 1/2] gnu: mrustc: Update to 0.9.
Date: Fri, 8 Nov 2019 00:17:03 +0100
[Message part 1 (text/plain, inline)]
(It might make sense to only update mrustc and not update the rust it bootstraps in this patch)
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 07 Nov 2019 23:19:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Subject: Re: [PATCH 2/2] gnu: rust: Bootstrap rust <at> 1.29.0 from mrustc.
Date: Fri, 8 Nov 2019 00:18:24 +0100
[Message part 1 (text/plain, inline)]
(It might make sense to make it target 1.29.2--although mrustc upstream doesn't
do that)
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 08 Nov 2019 02:58:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH v2 0/2] Bootstrap rust <at> 1.29.0 directly from mrustc <at> 0.9.
Date: Fri,  8 Nov 2019 03:46:57 +0100
Danny Milosavljevic (2):
  gnu: mrustc: Update to 0.9.
  gnu: rust: Bootstrap rust <at> 1.29.0 by mrustc <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 08 Nov 2019 02:58:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH v2 1/2] gnu: mrustc: Update to 0.9.
Date: Fri,  8 Nov 2019 03:46:58 +0100
* 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 <dannym <at> scratchpost.org>
-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<uint64_t>(b) << ofs;
-+        v |= static_cast<uint64_t>(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




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 08 Nov 2019 02:58:03 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH v2 2/2] gnu: rust: Bootstrap rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Fri,  8 Nov 2019 03:46:59 +0100
* 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: ?Sized>(_: &T) -> usize;
+ 
++    /// Obtain the length of a slice pointer
++    #[cfg(rust_compiler="mrustc")]
++    pub fn mrustc_slice_len<T>(pointer: *const [T]) -> usize;
++
+     /// Gets a static string slice containing the name of a type.
+     pub fn type_name<T: ?Sized>() -> &'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<T>(s: &[T]) -> usize { unsafe { Repr { rust: s }.raw.len } };
++        #[cfg(rust_compiler="mrustc")]
++        const fn len_inner<T>(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::<ty::TypeVariants>() <= 24);
+-        #[cfg(target_pointer_width = "64")]
+-        assert!(mem::size_of::<ty::TyS>() <= 32);
++        //#[cfg(target_pointer_width = "64")]
++        //assert!(mem::size_of::<ty::TypeVariants>() <= 24);
++        //#[cfg(target_pointer_width = "64")]
++        //assert!(mem::size_of::<ty::TyS>() <= 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 <at> 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.
              ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
-             (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 <https://github.com/rust-lang/rust/issues/43402>.
+                 (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 <https://github.com/rust-lang/rust/issues/43402>.
-                 (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 <https://github.com/rust-lang/rust/issues/50556>.
-;;; 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 <at> 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.
-                 ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
-                 (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




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 08 Nov 2019 22:48:02 GMT) Full text and rfc822 format available.

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

From: Ludovic Courtès <ludo <at> gnu.org>
To: Danny Milosavljevic <dannym <at> scratchpost.org>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH v2 1/2] gnu: mrustc: Update to 0.9.
Date: Fri, 08 Nov 2019 23:47:08 +0100
Hi!

Danny Milosavljevic <dannym <at> scratchpost.org> 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 ‘master’ 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 ‘staging’ branch?

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 08 Nov 2019 22:51:02 GMT) Full text and rfc822 format available.

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

From: Ludovic Courtès <ludo <at> gnu.org>
To: Danny Milosavljevic <dannym <at> scratchpost.org>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust <at> 1.29.0 by
 mrustc <at> 0.9.
Date: Fri, 08 Nov 2019 23:50:02 +0100
Hi,

Danny Milosavljevic <dannym <at> scratchpost.org> 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
<https://lobste.rs/s/utgedg/mrustc_0_9_now_with_rust_1_29_0_support>
recently and felt a relief.  :-)

I wonder if there’d be any value in keeping a couple of old versions of
Rust.  Is that something useful to Rust developers?  If not, I’m happy
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 “-src”?) and add a link to the
upstream commit or upstream issue discussing this change?

Apart from that it looks great!

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Sun, 19 Jan 2020 22:20:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Subject: Re: [PATCH v2 0/2] Bootstrap rust <at> 1.29.0 directly from mrustc <at> 0.9.
Date: Sun, 19 Jan 2020 23:19:17 +0100
[Message part 1 (text/plain, inline)]
This version has a problem.
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Tue, 21 Jan 2020 00:16:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH v2 0/2] Bootstrap rust <at> 1.29.0 directly from
 mrustc <at> 0.9.
Date: Tue, 21 Jan 2020 01:15:18 +0100
[Message part 1 (text/plain, inline)]
https://github.com/thepowersgang/mrustc/issues/140
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Sun, 15 Mar 2020 14:21:02 GMT) Full text and rfc822 format available.

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

From: Marius Bakke <mbakke <at> fastmail.com>
To: Danny Milosavljevic <dannym <at> scratchpost.org>, 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust <at> 1.29.0 by
 mrustc <at> 0.9.
Date: Sun, 15 Mar 2020 15:20:19 +0100
[Message part 1 (text/plain, inline)]
Hello Danny,

Danny Milosavljevic <dannym <at> scratchpost.org> 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
<https://issues.guix.gnu.org/issue/39949>, but the patch does not apply
any longer.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Sun, 15 Mar 2020 19:24:01 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH core-updates v3] gnu: rust: Bootstrap rust <at> 1.29.0 by
 mrustc <at> 0.9.
Date: Sun, 15 Mar 2020 20:23:11 +0100
* 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: ?Sized>(_: &T) -> usize;
+ 
++    /// Obtain the length of a slice pointer
++    #[cfg(rust_compiler="mrustc")]
++    pub fn mrustc_slice_len<T>(pointer: *const [T]) -> usize;
++
+     /// Gets a static string slice containing the name of a type.
+     pub fn type_name<T: ?Sized>() -> &'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<T>(s: &[T]) -> usize { unsafe { Repr { rust: s }.raw.len } };
++        #[cfg(rust_compiler="mrustc")]
++        const fn len_inner<T>(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::<ty::TypeVariants>() <= 24);
+-        #[cfg(target_pointer_width = "64")]
+-        assert!(mem::size_of::<ty::TyS>() <= 32);
++        //#[cfg(target_pointer_width = "64")]
++        //assert!(mem::size_of::<ty::TypeVariants>() <= 24);
++        //#[cfg(target_pointer_width = "64")]
++        //assert!(mem::size_of::<ty::TyS>() <= 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 <at> 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.
              ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
-             (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 <https://github.com/rust-lang/rust/issues/43402>.
+                 (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 <https://github.com/rust-lang/rust/issues/43402>.
-                 (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 <https://github.com/rust-lang/rust/issues/50556>.
-;;; 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 <at> 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.
-                 ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
-                 (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 <https://bugs.gnu.org/37810>.
-       (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




Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Sun, 15 Mar 2020 19:24:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust <at> 1.29.0 by
 mrustc <at> 0.9.
Date: Sun, 15 Mar 2020 20:23:21 +0100
[Message part 1 (text/plain, inline)]
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 precedes
> 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.
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 19 Mar 2020 23:59:02 GMT) Full text and rfc822 format available.

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

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: Danny Milosavljevic <dannym <at> scratchpost.org>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [PATCH core-updates v3] gnu: rust: Bootstrap rust <at> 1.29.0 by
 mrustc <at> 0.9.
Date: Fri, 20 Mar 2020 00:58:40 +0100
[Message part 1 (text/plain, inline)]
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ądziołka
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 20 Mar 2020 16:13:01 GMT) Full text and rfc822 format available.

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

From: Marius Bakke <mbakke <at> fastmail.com>
To: Danny Milosavljevic <dannym <at> scratchpost.org>, 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Fri, 20 Mar 2020 17:11:55 +0100
[Message part 1 (text/plain, inline)]
Danny Milosavljevic <dannym <at> scratchpost.org> 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...

[Message part 2 (text/x-patch, 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 <https://github.com/thepowersgang/mrustc/issues/138>.
+
+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]
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Fri, 20 Mar 2020 16:19:01 GMT) Full text and rfc822 format available.

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

From: Marius Bakke <mbakke <at> fastmail.com>
To: Danny Milosavljevic <dannym <at> scratchpost.org>, 38110 <at> debbugs.gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Fri, 20 Mar 2020 17:18:27 +0100
[Message part 1 (text/plain, inline)]
I forgot to mention another change ...

Danny Milosavljevic <dannym <at> scratchpost.org> 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.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Mon, 23 Mar 2020 21:25:02 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Mon, 23 Mar 2020 22:24:03 +0100
[Message part 1 (text/plain, inline)]
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?

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)
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Mon, 23 Mar 2020 22:17:02 GMT) Full text and rfc822 format available.

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

From: Marius Bakke <mbakke <at> fastmail.com>
To: Danny Milosavljevic <dannym <at> scratchpost.org>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Mon, 23 Mar 2020 23:16:07 +0100
[Message part 1 (text/plain, inline)]
Danny Milosavljevic <dannym <at> scratchpost.org> 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?
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Tue, 24 Mar 2020 11:58:01 GMT) Full text and rfc822 format available.

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

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Tue, 24 Mar 2020 12:57:16 +0100
[Message part 1 (text/plain, inline)]
Hi Marius,

On Mon, 23 Mar 2020 23:16:07 +0100
Marius Bakke <mbakke <at> fastmail.com> 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?
[rust.scm (text/x-scheme, attachment)]
[Message part 3 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Tue, 24 Mar 2020 14:46:01 GMT) Full text and rfc822 format available.

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

From: Marius Bakke <mbakke <at> fastmail.com>
To: Danny Milosavljevic <dannym <at> scratchpost.org>
Cc: 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Tue, 24 Mar 2020 15:45:32 +0100
[Message part 1 (text/plain, inline)]
Danny Milosavljevic <dannym <at> scratchpost.org> writes:

> Hi Marius,
>
> On Mon, 23 Mar 2020 23:16:07 +0100
> Marius Bakke <mbakke <at> fastmail.com> 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.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#38110; Package guix-patches. (Thu, 10 Dec 2020 21:57:01 GMT) Full text and rfc822 format available.

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

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>, 38110 <at> debbugs.gnu.org
Subject: Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap
 rust <at> 1.29.0 by mrustc <at> 0.9.
Date: Thu, 10 Dec 2020 16:55:51 -0500
[Message part 1 (text/plain, inline)]
Hello Marius,

Marius Bakke <mbakke <at> fastmail.com> writes:

> Danny Milosavljevic <dannym <at> scratchpost.org> writes:
>
>> Hi Marius,
>>
>> On Mon, 23 Mar 2020 23:16:07 +0100
>> Marius Bakke <mbakke <at> fastmail.com> 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:

[0001-gnu-rust-Bootstrap-rust-1.29.0-by-mrustc-0.9.patch (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]
Perhaps it can be useful.

Maxim

Reply sent to Maxim Cournoyer <maxim.cournoyer <at> gmail.com>:
You have taken responsibility. (Fri, 05 Feb 2021 14:59:02 GMT) Full text and rfc822 format available.

Notification sent to Danny Milosavljevic <dannym <at> scratchpost.org>:
bug acknowledged by developer. (Fri, 05 Feb 2021 14:59:02 GMT) Full text and rfc822 format available.

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

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>, 38110-done <at> debbugs.gnu.org
Subject: Re: bug#38110: [PATCH 0/2] Bootstrap rust <at> 1.29.0 directly from
 mrustc <at> 0.9.
Date: Fri, 05 Feb 2021 09:58:13 -0500
Hello,

Maxim Cournoyer <maxim.cournoyer <at> gmail.com> writes:

> Hello Marius,
>
> Marius Bakke <mbakke <at> fastmail.com> writes:
>
>> Danny Milosavljevic <dannym <at> scratchpost.org> writes:
>>
>>> Hi Marius,
>>>
>>> On Mon, 23 Mar 2020 23:16:07 +0100
>>> Marius Bakke <mbakke <at> fastmail.com> 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




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 06 Mar 2021 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 41 days ago.

Previous Next


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