[PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9.

  • Done
  • quality assurance status badge
Details
5 participants
  • Danny Milosavljevic
  • Jakub K?dzio?ka
  • Ludovic Courtès
  • Maxim Cournoyer
  • Marius Bakke
Owner
unassigned
Submitted by
Danny Milosavljevic
Severity
normal
D
D
Danny Milosavljevic wrote on 7 Nov 2019 23:27
(address . guix-patches@gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191107222756.20064-1-dannym@scratchpost.org
Danny Milosavljevic (2):
gnu: mrustc: Update to 0.9.
gnu: rust: Bootstrap rust@1.29.0 from mrustc.

gnu/local.mk | 1 -
...ix-variable-length-integer-receiving.patch | 15 -
gnu/packages/rust.scm | 494 ++++--------------
3 files changed, 105 insertions(+), 405 deletions(-)
delete mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch
D
D
Danny Milosavljevic wrote on 7 Nov 2019 23:29
[PATCH 1/2] gnu: mrustc: Update to 0.9.
(address . 38110@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191107223000.20242-1-dannym@scratchpost.org
* 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

Toggle diff (92 lines)
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@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
D
D
Danny Milosavljevic wrote on 7 Nov 2019 23:30
[PATCH 2/2] gnu: rust: Bootstrap rust@1.29.0 from mrustc.
(address . 38110@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191107223000.20242-2-dannym@scratchpost.org
* 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(-)

Toggle diff (406 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index a752f9ece4..0102a97a80 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -178,18 +178,19 @@ safety and thread safety guarantees.")
;; Dual licensed.
(license (list license:asl2.0 license:expat)))))
-(define rust-1.19
+(define rust-1.29
(package
(name "rust")
- (version "1.19.0")
+ (version "1.29.0")
(source
(origin
(method url-fetch)
- (uri (rust-uri "1.19.0"))
- (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"))
+ (uri (rust-uri "1.29.0"))
+ (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9sx4"))
(modules '((guix build utils)))
(snippet '(begin (delete-file-recursively "src/llvm") #t))
- (patches (map search-patch '("rust-1.19-mrustc.patch")))))
+ (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+ "rust-reproducible-builds.patch")))))
(outputs '("out" "cargo"))
(properties '((timeout . 72000) ;20 hours
(max-silent-time . 18000))) ;5 hours (for armel)
@@ -201,6 +202,7 @@ safety and thread safety guarantees.")
(add-after 'unpack 'set-env
(lambda* (#:key inputs #:allow-other-keys)
;; Disable test for cross compilation support.
+;(write "X")
(setenv "CFG_DISABLE_CROSS_TESTS" "1")
(setenv "SHELL" (which "sh"))
(setenv "CONFIG_SHELL" (which "sh"))
@@ -208,24 +210,6 @@ safety and thread safety guarantees.")
;; guix llvm-3.9.1 package installs only shared libraries
(setenv "LLVM_LINK_SHARED" "1")
#t))
- (add-after 'unpack 'patch-cargo-tomls
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "src/librustc_errors/Cargo.toml"
- (("[[]dependencies[]]") "
-[dependencies]
-term = \"0.4.4\"
-"))
- (substitute* "src/librustc/Cargo.toml"
- (("[[]dependencies[]]") "
-[dependencies]
-getopts = { path = \"../libgetopts\" }
-"))
- (substitute* "src/librustdoc/Cargo.toml"
- (("[[]dependencies[]]") "
-[dependencies]
-test = { path = \"../libtest\" }
-"))
- #t))
(add-after 'unpack 'patch-tests
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
@@ -244,27 +228,29 @@ test = { path = \"../libtest\" }
#[ignore]
fn test_process_mask"))
#t)))
+ (add-after 'patch-tests 'patch-cargo-index-update
+ (lambda* _
+ (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs"
+ ;; This test wants to update the crate index.
+ (("fn no_index_update") "#[ignore]\nfn no_index_update"))
+ #t))
(add-after 'patch-tests 'patch-aarch64-test
(lambda* _
- (substitute* "src/librustc_back/dynamic_lib.rs"
+ (substitute* "src/librustc_metadata/dynamic_lib.rs"
;; This test is known to fail on aarch64 and powerpc64le:
;; https://github.com/rust-lang/rust/issues/45410
(("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
- #t))
- (add-after 'patch-tests 'use-readelf-for-tests
- (lambda* _
- ;; nm doesn't recognize the file format because of the
- ;; nonstandard sections used by the Rust compiler, but readelf
- ;; ignores them.
- (substitute* "src/test/run-make/atomic-lock-free/Makefile"
- (("\tnm ")
- "\treadelf -c "))
+ ;; This test fails on aarch64 with llvm@6.0:
+ ;; https://github.com/rust-lang/rust/issues/49807
+ ;; other possible solution:
+ ;; https://github.com/rust-lang/rust/pull/47688
+ (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs")
#t))
(add-after 'patch-tests 'remove-unsupported-tests
(lambda* _
;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
;; <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@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 re
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 8 Nov 2019 00:17
Re: [PATCH 1/2] gnu: mrustc: Update to 0.9.
(address . 38110@debbugs.gnu.org)
20191108001703.6bba1088@scratchpost.org
(It might make sense to only update mrustc and not update the rust it bootstraps in this patch)
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl3Epe8ACgkQ5xo1VCww
uqXsEwf+O2obVPlNlsIcdpQWkQv++dGs/J8LTejYnQaDCOWedGI33Y4cqGJDRToT
Jcd5EBefeDWa34fgRj+SSkrNipNedqdR2N8bDM7IqqkCjW+CROyc2wFqJ/okxa5D
StMJn1mswkdDrr8L2PzqKvndb2IvStaU8x89hzvh6x2BF9d825cZgEBIKLoES5nC
YhTh/Etf6U8ibkDuLAAmGBKT3FJ1GWmVvVWBTN2n3O6g8z5vs3DE2+wWFEfFfXak
VM6j+UnDDhyu51cvf05mICWWXh+1J/p1/dyEB74lzG3fPE5EXtnGCiisLMlW7m2S
yGvIDqVrnxigQ5jqhGONXc7YKnM9sg==
=DL2o
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 8 Nov 2019 00:18
Re: [PATCH 2/2] gnu: rust: Bootstrap rust@1.29.0 from mrustc.
(address . 38110@debbugs.gnu.org)
20191108001824.523f0e1d@scratchpost.org
(It might make sense to make it target 1.29.2--although mrustc upstream doesn't
do that)
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl3EpkAACgkQ5xo1VCww
uqWNXQf+ITZxPT7yspCh/xy4UQOhrR3vQzcKywL0C3cOUL4UdGyeVSk6sMXLuXXz
mfbNLUiAE4eNwZx+VulXAERRmzog2UgjoMXAZ24Ez4yk6y4Ii++CAAO196cKlrXR
iH7ggbVkvIi7p+pjb4filDK6qF53jH9CI+fR4ojmTQZocqF8IxmTibn1aE+M47D+
OJOyDGb3wCaMaTOiNqdfaYTDDS1PySCrhcVB7hMR3zsHI9aNHVCMc1FrDSBbDbSt
i/ISRI6/6Hh4j8457D6VZnI/MIamu6wLysHYgMT35DJFNQMckCBKCvcekzdxLfJ8
gzxa0NB1bekpVjFbEq1eLdOVd5/04g==
=6Djl
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 8 Nov 2019 03:46
[PATCH v2 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9.
(address . 38110@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191108024659.10138-1-dannym@scratchpost.org
Danny Milosavljevic (2):
gnu: mrustc: Update to 0.9.
gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.

gnu/local.mk | 1 -
...ix-variable-length-integer-receiving.patch | 15 -
gnu/packages/rust.scm | 495 ++++--------------
3 files changed, 106 insertions(+), 405 deletions(-)
delete mode 100644 gnu/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch
D
D
Danny Milosavljevic wrote on 8 Nov 2019 03:46
[PATCH v2 1/2] gnu: mrustc: Update to 0.9.
(address . 38110@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191108024659.10138-2-dannym@scratchpost.org
* 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

Toggle diff (77 lines)
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@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
D
D
Danny Milosavljevic wrote on 8 Nov 2019 03:46
[PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(address . 38110@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20191108024659.10138-3-dannym@scratchpost.org
* 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

Toggle diff (420 lines)
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@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
+
This message was truncated. Download the full message here.
L
L
Ludovic Courtès wrote on 8 Nov 2019 23:47
Re: [bug#38110] [PATCH v2 1/2] gnu: mrustc: Update to 0.9.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 38110@debbugs.gnu.org)
87o8xmc7f7.fsf@gnu.org
Hi!

Danny Milosavljevic <dannym@scratchpost.org> skribis:

Toggle quote (6 lines)
> * 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’.
L
L
Ludovic Courtès wrote on 8 Nov 2019 23:50
Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 38110@debbugs.gnu.org)
87d0e2c7ad.fsf@gnu.org
Hi,

Danny Milosavljevic <dannym@scratchpost.org> skribis:

Toggle quote (17 lines)
> * gnu/packages/patches/rustc-1.29.0-src.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/rust.scm (rust-1.19): Delete variable.
> (rust-1.20): Delete variable.
> (rust-1.21): Delete variable.
> (rust-1.22): Delete variable.
> (rust-1.23): Delete variable.
> (rust-1.24): Delete variable.
> (rust-1.25): Delete variable.
> (rust-1.26): Delete variable.
> (rust-1.27): Delete variable.
> (rust-1.28): Delete variable.
> (rust-1.29): Bootstrap from mrustc.
> [source]: Add patch.
> (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6.
> (mrustc): Update rustc-version to 1.29.0.

This is really, really cool! I stumbled upon
recently and felt a relief. :-)

I wonder if there’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!

Toggle quote (6 lines)
> --- /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’.
D
D
Danny Milosavljevic wrote on 19 Jan 2020 23:19
Re: [PATCH v2 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9.
(address . 38110@debbugs.gnu.org)
20200119231917.1c34d2d4@scratchpost.org
This version has a problem.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl4k1eUACgkQ5xo1VCww
uqXjvwf/Y5xHSunHsqIZZ6kIisSSunyfz9rLDfvNRNVFRXNn93BGP5NPTXip9vbn
puX4+LLo7nZOJ+ugUUtcWHHksR4vk3RQnXn5kvrc3cULCBSowt77sDk5P/64ye9R
mZo2IfhJ5FmKxT1UyNxtzax6VKm/P16Czn9H9TuhULv25gYljXNqxxb4tsAEbaqh
lzynDJ7GYsTqih0xlyRcpkYRqbjk+EBM/Gftxi7K9Usp0yuuMiOG/GRDH/AAi4p3
0W2p05y58P7lx9I+98xlR5x2KTG2uUU0Bdn9XIidymtfR4tJLfDO/zyRMmqzT6eA
dx/LHVNxWF49ws+/PCt2quDH9WXYZA==
=ZgLM
-----END PGP SIGNATURE-----


D
D
Danny Milosavljevic wrote on 21 Jan 2020 01:15
Re: [bug#38110] [PATCH v2 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9.
(address . 38110@debbugs.gnu.org)
20200121011518.25c65947@scratchpost.org
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl4mQpYACgkQ5xo1VCww
uqX8Bwf8C4QGlroCjwoXiGXXGV84oQUHKEVkuvQa8S3H87qgJi5tIfncVSRxQ2Gr
H5ntvbLcQZYkoEmQ1B2hCUyQEOxkayUUJozAQF1lRRu/A7QL8pJd4wW0jzXOrS2s
x/MlJyFsf8vEMQ4PaNnTs4TZL+31fXMuYI+jpYsTeAllSCQlNO8Y+hKbBZVr8H63
uSRiqlFwRG657mX9/A178GLwkpUjemtyNTzUULUM1CZAHOxtDbrW97Shte478XjK
/rh+72VZfFBiOTclVuWGLl+5ruk8wziyPVSUVkuVAEYj/dApDU0oh+LkE6gl24nX
+sB3YtGlqfiSluRqOGfl7oe+ZKS82Q==
=heau
-----END PGP SIGNATURE-----


M
M
Marius Bakke wrote on 15 Mar 2020 15:20
Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
87pnddlmxo.fsf@devup.no
Hello Danny,

Danny Milosavljevic <dannym@scratchpost.org> writes:

Toggle quote (17 lines)
> * 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.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5uOaMACgkQoqBt8qM6
VPo4SQf/Um4aHWMlw5lJhvcCqJvcubyg4G1tDtTmiaZQG0yikEN0qjjUv4jblz3k
yYoajlWXuU2hOUzMTGbeI3H6hrmsWHH0fwkCfJrw5H2kJT8d2AA9TwyeCffUn7wf
kmRw9+excmto4dCTA5x8tKewmCPbPWrlScnATNzlbAfE3bftm3LPIYrNgnlrepkk
FJ0GT/2HxYz0iaPFIjbGzXlZJg61+wOqIgRgqQv1H2ll0KMaEK0N0Qtgp0KnOsfr
zyqpKlCV4qx0otBc49umlbyOB6fnYe0IDpKsXuL9yeH7JwzKON9NUPIW/BusQ4xi
PgXz6SxZcz/fZBLM/ZNWsaCbXY+0WQ==
=q9p6
-----END PGP SIGNATURE-----

D
D
Danny Milosavljevic wrote on 15 Mar 2020 20:23
[PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(address . 38110@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20200315192311.6505-1-dannym@scratchpost.org
* 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

Toggle diff (420 lines)
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@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-packa
This message was truncated. Download the full message here.
D
D
Danny Milosavljevic wrote on 15 Mar 2020 20:23
Re: [bug#38110] [PATCH v2 2/2] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 38110@debbugs.gnu.org)
20200315202321.194826f7@scratchpost.org
Hi Marius,

I've attached the new v3 for core-updates to this bug report now.

apparently has not been fixed yet. It probably manifests itself because of:

Toggle quote (4 lines)
> 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.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl5ugKkACgkQ5xo1VCww
uqVbXQgAnkhwmERYLYvS8jmV8jOLqHo3GuS4uHcGveGo8A15dAhv/KDduggedJvy
VTzGIDBisCaIWC5sJ0Bh18rxpp4YDXmmGx48X7Ww7RYjVBzbxj30SC20lyAT5Caw
ZAWTDe9LhtWmLe0Y/4TAU0ycaPWkgaIn8U/UeSjfsSEaUGPqvwOuR2RbxqiJ60ve
AC2B98d7AyJkNYtBZYsWOs+si0YGY/79CTh5TvRsMVN1HJZYmFI3oylKxnzwj4RG
pV9lpyXNqvV0LRQFtIz46UqT2xsF9ZYiozne5kcypsCoIMGsWAUkZVPuMjMpBo01
BATaj5PqGmk3oKR6U6PdplSQVNvVRA==
=NlzX
-----END PGP SIGNATURE-----


J
J
Jakub K?dzio?ka wrote on 20 Mar 2020 00:58
Re: [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 38110@debbugs.gnu.org)
20200319235840.ganzrh2t4z55iiyc@gravity
On Sun, Mar 15, 2020 at 08:23:11PM +0100, Danny Milosavljevic wrote:
Toggle quote (1 lines)
> + ;; 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
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl50BzAACgkQ4xWnWEYT
FWRCXw/+LERjCeF1PUa4ctRaQkAgGTe9YJAvQ6ABn1se8jLlPaPJOuEd4uayYaZk
h9cs8dwBAOuJLzDWuKgNwi0Uz5nV6pDDYZYi16QoKT7w4uMzcIS2OvbgA+t+PWbQ
9Apbh5ZoFL/8XQ6Zm9Rn/yeqT3JLLiEuitedvJPOCPI8+ZG0cA/uzs9HjXTVTTfL
BQxS0xwiVDC2VacbMaUgbO/QUTBOK8vXsVSmeRTJ2yVTYaI8JI2X9OwewksDhJq5
CKyxqwN2Hn8BuvYcA2agkSF9008XDEQLz/UixBEHGKs00J0+rjE4Mb0dbWJpFFm1
tlPqI0K9/jYM1rVeZdxuEg/BCGH/U8d8oNSC2Z3a2x7Wz/I26ESRrpZfAfPe5mSq
q0qu7aqtC/JUJ2+MiyvSxvrjx6ipX6L80U3db0sYh9i0Z5PMNZivEYO9QXfRvL88
esJUHJpYoLWmGQl89KlB3p9GSPJTuqnxQn51jwOU/V6IcUpCVzqq8EHFanFLGCql
KnrLKwX+RdT9vpmmgZ4SREFLEOMwe3PEvAdx96IBjN1ZieSVbe39bLsuGDzx0lgS
UiQVMVmAg9y8M6nFibtTxaJR3yC3Ug4WYoallnYdQ2+rUJQhpBuEm4VlPB26f3RW
8sqLf5YB7N0RfP3jaxkmsVEX+GO50Hsicm9/CgyghlGKU9/qbmE=
=7zHJ
-----END PGP SIGNATURE-----


M
M
Marius Bakke wrote on 20 Mar 2020 17:11
Re: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9.
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
877dzf9fas.fsf@devup.no
Danny Milosavljevic <dannym@scratchpost.org> writes:

Toggle quote (17 lines)
> * 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...
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
+
+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 @@
(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]
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5060sACgkQoqBt8qM6
VPoKSgf/cr9A0OUZowldxQYe1x8ZtadA5iQ50s2ziR3KFQ9u+mAEQTj/YuwDZoX5
NA5Qz/jX+pTj9aNppt63Xx7jA2fGWS8pWAcRISnPcnayIxvv/Txu9TKccim98RB/
HB90XnUZPOoF2dPXpCgMgc+BW+UZIHMTVvFHt/pYlztaJ4jWci2HEymGxlYXTAnk
U2DKzieulevLtG7R9JIfrSNyuB5Q/SPHSksfhJesGuNXMZ1KvIeU4Mb9O3MuD2T4
ONt+alvwqXPewrzItt5sFFJuY91em3LSdA7//MDze61MWDAuAvltNuhZ8IvO3jBm
/iPCuShWTRdInkuArseQzeVoatMNJw==
=TM9d
-----END PGP SIGNATURE-----

M
M
Marius Bakke wrote on 20 Mar 2020 17:18
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
874kuj9ezw.fsf@devup.no
I forgot to mention another change ...

Danny Milosavljevic <dannym@scratchpost.org> writes:
Toggle quote (5 lines)
> + ;; 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.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl507NMACgkQoqBt8qM6
VPoF9ggAl8DaOiEYm7UFoXMSJFeOPBaOtGco5QQ0z0rXxHD0meWItRKm2OL9lRFK
VcCMown4/0bzocdzZAN+EMUUj3IjSAiuQgvJke+7TdbqV3eVEI5pKKx0FyUtDEm2
GlEUtJMZ362F/VzCLS4imtzyV5/e705JJRagZan9bbSfe9hukWmmzeB2VYcBw9Zb
y9oRkkaBMlFIrSSW+bOXCviMw4jfgoCCGjyK3DHaDIXC/5tIDBARNPQzDakOcdXJ
YPjoY7Byoo7p44534z4xDgra7hy8KHMd4q+HEzpCKxPBI54iPjaZHD1v4AjWnn+8
ZN1O3zG5hNycGNJfaqoIz2eWfVLQqQ==
=s7se
-----END PGP SIGNATURE-----

D
D
Danny Milosavljevic wrote on 23 Mar 2020 22:24
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 38110@debbugs.gnu.org)
20200323222403.36a6ce1f@scratchpost.org
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?


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)
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl55KPMACgkQ5xo1VCww
uqVAJAf+MEZg7pqSSwETzBIbWGULvCxMkYyZz6BQEpR2yXLc3AQPwGlaBTrAa9LY
8nBuyYWcOefphnN3wkcc4FlzFgRtCj6JUebLohFIzKu7XXsxECsSBzO4La0vujpS
B3DefBN9bCskowJexScKfOKkJqS53QVitF8gJKvLpTmpi2xqTjJyo/ohKXX0dnGH
h1/0XsY8p0+VqNtxR9bcjpr81KqRtmoeLzYMCCO5cS0Nqke0Vgpcccgn6YMMp1SC
/IHXsFwEdnlYTAIyktHLOFC286JeyLCYUvMe44GhM6KrA/PhKocFwIL7Kkheng8p
7cPZ4ueQYEqqK6q1h5YF5J2514wKZQ==
=fO1w
-----END PGP SIGNATURE-----


M
M
Marius Bakke wrote on 23 Mar 2020 23:16
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 38110@debbugs.gnu.org)
87o8sm3efs.fsf@devup.no
Danny Milosavljevic <dannym@scratchpost.org> writes:

Toggle quote (13 lines)
> 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. :-)

Toggle quote (20 lines)
>
> 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?
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl55NSgACgkQoqBt8qM6
VPrA2gf+PvnPgsjBR5clQx8qn7BoNngpURvJ6Yy4zI7msU0iNC7b9M4skS+h2UBi
OwkHCtYRGAwYbjqTpsjIUzJnxED3Ux879IGugHMRZPLNnQG03ITlsIP81X1vHeim
y7GbMUXS1PmUShV4avzOrw7w6VfZQ8zn+9rYa7PzC60EQbe+rLQwBtFrDu2LGZ5R
3Bqtp6aDGULeejVoEQGmAyUncZmDVA5V+yMSZOkWp5RLzCct1nYi+7bSEInnwejK
wjvoQZPpj/MIEV2ia3jUaFcCQFk+fbN3Sr16N9ptjZI9LtfCq+agEJcbMAIkylvZ
PGcj7gJQKW5IK4cK7kDWZdOJPMorsw==
=LL0S
-----END PGP SIGNATURE-----

D
D
Danny Milosavljevic wrote on 24 Mar 2020 12:57
(name . Marius Bakke)(address . mbakke@fastmail.com)(address . 38110@debbugs.gnu.org)
20200324125716.756eb1f2@scratchpost.org
Hi Marius,

On Mon, 23 Mar 2020 23:16:07 +0100
Marius Bakke <mbakke@fastmail.com> wrote:

Toggle quote (6 lines)
> > 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?
Attachment: rust.scm
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl559ZwACgkQ5xo1VCww
uqVlEgf/VRRzFVB4oOLE9uTGzGXA2oDvJQ9DqTLuAdGL1U6tz6FLPHJ/vWAdQJFz
mcplecOE+b64oMkW0TPi9bFJChR6V37eQhC7HTTNBI7ka2U+JoR5iDxpuqUf6o/u
ZLWXsEouDwDEjiwwH46YACh6VskBL2vfAuu/1y4nVVT5N6NxeyqnBkv6Ir2usHlJ
MwS0l0YzsNSF6Kb1riAnvuk/QKiZjJqvBP2uEhP+8B6YYrqFBtmJH8RA2anvXq1T
QWpHKtH0VwGNjCRguu91EBGFgi2g3HRpdCgYGXjmKmwTEn3A6G0V+CaMHsmnpD4h
/PBAj28L18RBw3SKVBBwr3/prbCyxg==
=mquH
-----END PGP SIGNATURE-----


M
M
Marius Bakke wrote on 24 Mar 2020 15:45
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)(address . 38110@debbugs.gnu.org)
87o8sl24mr.fsf@devup.no
Danny Milosavljevic <dannym@scratchpost.org> writes:

Toggle quote (13 lines)
> Hi Marius,
>
> On Mon, 23 Mar 2020 23:16:07 +0100
> Marius Bakke <mbakke@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.

Toggle quote (3 lines)
> 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.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl56HQwACgkQoqBt8qM6
VPoSrQgAsftWhVugmFh2f3cOjQ8EhnnwuIpV4aCKEyj66Q8DvvePoClZMYCp/r3E
Xb6cBLxnaSltd6CMrAOuB3/vEI/ojnyBm2Xc65t2Lf72iXuh1508I7x8IEnBD+wU
b9EQlAPYEOZ4r08mHYgctBEdcEFZJPFwufI4mCMwhYXtcpwbEztkbty6d6i/Ui8x
F6IW7BrwaTwzth3MjogaUf0Sg9D+EBv+gbXOd2nWAHYzMwISD5R8Koe77pt/v48F
5E4zrR02vh/KETPOU2elKSgvcFwo+DDgKX4jga9mUNf6HHR4dkNJA5unZ5EwuUQs
WJrIAZOZHuWPfDC747SI8wfM2irjSA==
=Dd/C
-----END PGP SIGNATURE-----

M
M
Maxim Cournoyer wrote on 10 Dec 2020 22:55
(name . Marius Bakke)(address . mbakke@fastmail.com)
87pn3h5nrs.fsf@gmail.com
Hello Marius,

Marius Bakke <mbakke@fastmail.com> writes:

Toggle quote (27 lines)
> Danny Milosavljevic <dannym@scratchpost.org> writes:
>
>> Hi Marius,
>>
>> On Mon, 23 Mar 2020 23:16:07 +0100
>> Marius Bakke <mbakke@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
M
M
Maxim Cournoyer wrote on 5 Feb 2021 15:58
Re: bug#38110: [PATCH 0/2] Bootstrap rust@1.29.0 directly from mrustc@0.9.
(name . Marius Bakke)(address . mbakke@fastmail.com)
87czxeo92y.fsf_-_@gmail.com
Hello,

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

Toggle quote (41 lines)
> Hello Marius,
>
> Marius Bakke <mbakke@fastmail.com> writes:
>
>> Danny Milosavljevic <dannym@scratchpost.org> writes:
>>
>>> Hi Marius,
>>>
>>> On Mon, 23 Mar 2020 23:16:07 +0100
>>> Marius Bakke <mbakke@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
Closed
?