[PATCH 1/?] gnu: rust: Add 1.40

  • Done
  • quality assurance status badge
Details
2 participants
  • John Soo
  • Jakub K?dzio?ka
Owner
unassigned
Submitted by
Jakub K?dzio?ka
Severity
normal
J
J
Jakub K?dzio?ka wrote on 29 Apr 2020 11:40
(address . guix-patches@gnu.org)
20200429094022.22294-1-kuba@kadziolka.net
* gnu/packages/rust.scm (rust-1.40): New variable.
---
gnu/packages/rust.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Debbugs note: I will send patches to add more versions to this bug
number as I get them to work.

Toggle diff (45 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 11522b933e..a82bfa5912 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1176,4 +1176,38 @@ move around."
(generate-all-checksums "vendor")
#t)))))))))
+(define-public rust-1.40
+ (let ((base-rust
+ (rust-bootstrapped-package rust-1.39 "1.40.0"
+ "1ba9llwhqm49w7sz3z0gqscj039m53ky9wxzhaj11z6yg1ah15yx")))
+ (package
+ (inherit base-rust)
+ (source
+ (origin
+ (inherit (package-source base-rust))
+ ;; llvm-emscripten is no longer bundled, as that codegen backend
+ ;; got removed.
+ (snippet '(begin
+ (delete-file-recursively "src/llvm-project")
+ (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
+ #t))))
+ (arguments
+ ;; Rust 1.40 does not ship rustc-internal libraries by default
+ ;; (see rustc-dev-split). This means that librustc_driver.so is no
+ ;; longer available in lib/rustlib/$target/lib, which is the directory
+ ;; included in the runpath of librustc_codegen_llvm-llvm.so.
+ ;; This is detected by our validate-runpath phase as an error, but it
+ ;; is harmless as the codegen backend is loaded by librustc_driver.so
+ ;; itself, which must at that point have been already loaded.
+ ;; As such, we skip validating the runpath for Rust 1.40.
+ ;; Rust 1.41 stopped putting the codegen backend in a separate library,
+ ;; which makes this workaround only necessary for this release.
+ (cons* #:validate-runpath? #f
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ ;; The test got removed in commit 000fe63b6fc57b09828930cacbab20c2ee6e6d15
+ ;; "Remove painful test that is not pulling its weight"
+ (delete 'remove-unsupported-tests)))))))))
+
(define-public rust rust-1.37)
--
2.26.2
J
J
Jakub K?dzio?ka wrote on 29 Apr 2020 18:02
[PATCH 2/?] gnu: rust: Add 1.41
(address . 40957@debbugs.gnu.org)
20200429160218.15270-1-kuba@kadziolka.net
---
gnu/packages/rust.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index a82bfa5912..78cfdfc97a 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1210,4 +1210,37 @@ move around."
;; "Remove painful test that is not pulling its weight"
(delete 'remove-unsupported-tests)))))))))
+(define-public rust-1.41
+ (let ((base-rust
+ (rust-bootstrapped-package rust-1.40 "1.41.1"
+ "0ws5x0fxv57fyllsa6025h3q6j9v3m8nb3syl4x0hgkddq0kvj9q")))
+ (package
+ (inherit base-rust)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:validate-runpath? _) #t)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ ;; The tests got moved.
+ (replace 'patch-command-exec-tests
+ ,(patch-command-exec-tests-phase
+ "src/test/ui/command/command-exec.rs"))
+ (replace 'patch-command-uid-gid-test
+ (lambda _
+ (substitute* "src/test/ui/command/command-uid-gid.rs"
+ (("/bin/sh") (which "sh"))
+ (("ignore-sgx") "ignore-sgx\n// ignore-tidy-linelength"))
+ #t))
+ ;; The test in question got fixed long ago, no need to chase it
+ ;; after renames.
+ (delete 'disable-cargo-test-for-nightly-channel)
+ ;; The patch-tests phase in rust-1.19 uses the fragile approach
+ ;; of inserting additional newlines instead of disabling the tidy
+ ;; check. Fixing this retroactively requires painful rebuilds.
+ (add-after 'patch-tests 'ignore-tidy-linelength
+ (lambda _
+ (let ((port (open-file "src/libstd/process.rs" "a")))
+ (display "// ignore-tidy-linelength\n" port))
+ #t)))))))))
+
(define-public rust rust-1.37)
--
2.26.2
J
J
Jakub K?dzio?ka wrote on 20 Jun 2020 22:44
[PATCH v2 1/2] gnu: llvm-9: Backport patches to fix miscompilations.
(address . 40957@debbugs.gnu.org)
20200620204440.4940-1-kuba@kadziolka.net
* gnu/packages/llvm.scm (llvm-9)[source]: Add new patches.
* gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch,
gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch: New files.
* gnu/local.mk (dist_patch_DATA): Register new patches.
---
gnu/local.mk | 2 +
gnu/packages/llvm.scm | 7 +-
.../llvm-9-fix-lpad-miscompilation.patch | 97 +++++++++++++++
.../llvm-9-fix-scev-miscompilation.patch | 113 ++++++++++++++++++
4 files changed, 218 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
create mode 100644 gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch

Toggle diff (262 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index fd3cc88af5..0b4a6c789f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1226,6 +1226,8 @@ dist_patch_DATA = \
%D%/packages/patches/lirc-localstatedir.patch \
%D%/packages/patches/lirc-reproducible-build.patch \
%D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch \
+ %D%/packages/patches/llvm-9-fix-lpad-miscompilation.patch \
+ %D%/packages/patches/llvm-9-fix-scev-miscompilation.patch \
%D%/packages/patches/lm-sensors-hwmon-attrs.patch \
%D%/packages/patches/lrcalc-includes.patch \
%D%/packages/patches/lrzip-CVE-2017-8842.patch \
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 11e4cfbe4c..7723ff5bc1 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -15,6 +15,7 @@
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -510,7 +511,11 @@ output), and Binutils.")
(uri (llvm-download-uri "llvm" version))
(sha256
(base32
- "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))))))
+ "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))
+ (patch-flags '("-p2"))
+ (patches (search-patches
+ "llvm-9-fix-scev-miscompilation.patch"
+ "llvm-9-fix-lpad-miscompilation.patch"))))))
(define-public clang-runtime-9
(clang-runtime-from-llvm
diff --git a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
new file mode 100644
index 0000000000..6cfe07e50a
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
@@ -0,0 +1,97 @@
+From 011fb5bf8b31316472fccb1a19c91912246df9b2 Mon Sep 17 00:00:00 2001
+From: Reid Kleckner <rnk@google.com>
+Date: Sat, 28 Mar 2020 11:03:14 -0700
+Subject: [PATCH] [CodeGen] Fix sinking local values in lpads with phis
+
+There was already a test case for landingpads to handle this case, but I
+had forgotten to consider PHI instructions preceding the EH_LABEL in the
+landingpad.
+
+PR45261
+---
+ llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 17 +++++++++-
+ llvm/test/CodeGen/X86/sink-local-value.ll | 36 ++++++++++++++++++++++
+ 2 files changed, 52 insertions(+), 1 deletion(-)
+
+diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+index 5ac3606dc662..2638b1e8a05c 100644
+--- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
++++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+@@ -225,6 +225,21 @@ static bool isRegUsedByPhiNodes(unsigned DefReg,
+ return false;
+ }
+
++static bool isTerminatingEHLabel(MachineBasicBlock *MBB, MachineInstr &MI) {
++ // Ignore non-EH labels.
++ if (!MI.isEHLabel())
++ return false;
++
++ // Any EH label outside a landing pad must be for an invoke. Consider it a
++ // terminator.
++ if (!MBB->isEHPad())
++ return true;
++
++ // If this is a landingpad, the first non-phi instruction will be an EH_LABEL.
++ // Don't consider that label to be a terminator.
++ return MI.getIterator() != MBB->getFirstNonPHI();
++}
++
+ /// Build a map of instruction orders. Return the first terminator and its
+ /// order. Consider EH_LABEL instructions to be terminators as well, since local
+ /// values for phis after invokes must be materialized before the call.
+@@ -233,7 +248,7 @@ void FastISel::InstOrderMap::initialize(
+ unsigned Order = 0;
+ for (MachineInstr &I : *MBB) {
+ if (!FirstTerminator &&
+- (I.isTerminator() || (I.isEHLabel() && &I != &MBB->front()))) {
++ (I.isTerminator() || isTerminatingEHLabel(MBB, I))) {
+ FirstTerminator = &I;
+ FirstTerminatorOrder = Order;
+ }
+diff --git a/llvm/test/CodeGen/X86/sink-local-value.ll b/llvm/test/CodeGen/X86/sink-local-value.ll
+index b0e511ac1189..f7d861ac9b6c 100644
+--- a/llvm/test/CodeGen/X86/sink-local-value.ll
++++ b/llvm/test/CodeGen/X86/sink-local-value.ll
+@@ -145,6 +145,42 @@ try.cont: ; preds = %entry, %lpad
+ ; CHECK: retl
+
+
++define i32 @lpad_phi() personality i32 (...)* @__gxx_personality_v0 {
++entry:
++ store i32 42, i32* @sink_across
++ invoke void @may_throw()
++ to label %try.cont unwind label %lpad
++
++lpad: ; preds = %entry
++ %p = phi i32 [ 11, %entry ] ; Trivial, but -O0 keeps it
++ %0 = landingpad { i8*, i32 }
++ catch i8* null
++ store i32 %p, i32* @sink_across
++ br label %try.cont
++
++try.cont: ; preds = %entry, %lpad
++ %r.0 = phi i32 [ 13, %entry ], [ 55, %lpad ]
++ ret i32 %r.0
++}
++
++; The constant materialization should be *after* the stores to sink_across, but
++; before any EH_LABEL.
++
++; CHECK-LABEL: lpad_phi:
++; CHECK: movl $42, sink_across
++; CHECK: movl $13, %{{[a-z]*}}
++; CHECK: .Ltmp{{.*}}:
++; CHECK: calll may_throw
++; CHECK: .Ltmp{{.*}}:
++; CHECK: jmp .LBB{{.*}}
++; CHECK: .LBB{{.*}}: # %lpad
++; CHECK-NEXT: .Ltmp{{.*}}:
++; CHECK: movl {{.*}}, sink_across
++; CHECK: movl $55, %{{[a-z]*}}
++; CHECK: .LBB{{.*}}: # %try.cont
++; CHECK: retl
++
++
+ ; Function Attrs: nounwind readnone speculatable
+ declare void @llvm.dbg.value(metadata, metadata, metadata) #0
+
diff --git a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
new file mode 100644
index 0000000000..3f16de5a2b
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
@@ -0,0 +1,113 @@
+Guix note: this got detected with the test suite of rustc 1.41.1, but
+the issue potentially affects all consumers of LLVM.
+
+From 58e8c793d0e43150a6452e971a32d7407a8a7401 Mon Sep 17 00:00:00 2001
+From: Tim Northover <tnorthover@apple.com>
+Date: Mon, 30 Sep 2019 07:46:52 +0000
+Subject: [PATCH] Revert "[SCEV] add no wrap flag for SCEVAddExpr."
+
+This reverts r366419 because the analysis performed is within the context of
+the loop and it's only valid to add wrapping flags to "global" expressions if
+they're always correct.
+
+llvm-svn: 373184
+---
+ llvm/lib/Analysis/ScalarEvolution.cpp | 2 +-
+ llvm/test/Analysis/ScalarEvolution/limit-depth.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/nsw.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/trip-count12.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/trip-count9.ll | 8 ++++----
+ 5 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
+index 354ae05bb841..c29fc5dbccfb 100644
+--- a/llvm/lib/Analysis/ScalarEvolution.cpp
++++ b/llvm/lib/Analysis/ScalarEvolution.cpp
+@@ -4992,7 +4992,7 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN,
+ // overflow.
+ if (auto *BEInst = dyn_cast<Instruction>(BEValueV))
+ if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L))
+- (void)getAddRecExpr(getAddExpr(StartVal, Accum, Flags), Accum, L, Flags);
++ (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);
+
+ return PHISCEV;
+ }
+diff --git a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+index db68a4f84c91..6fdf8c5df974 100644
+--- a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
++++ b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+@@ -46,7 +46,7 @@ define void @test_mul(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
+ define void @test_sext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
+ ; CHECK-LABEL: @test_sext
+ ; CHECK: %se2 = sext i64 %iv2.inc to i128
+-; CHECK-NEXT: --> {(1 + (sext i64 {(sext i32 (1 + %a)<nsw> to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
++; CHECK-NEXT: --> {(1 + (sext i64 {(sext i32 (1 + %a) to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
+ entry:
+ br label %loop
+
+diff --git a/llvm/test/Analysis/ScalarEvolution/nsw.ll b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+index 69427368625d..ca24f9d4a04b 100644
+--- a/llvm/test/Analysis/ScalarEvolution/nsw.ll
++++ b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+@@ -163,7 +163,7 @@ bb5: ; preds = %bb2
+ declare void @f(i32)
+
+ ; CHECK-LABEL: nswnowrap
+-; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (2 + %v)
++; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (1 + ((1 + %v)<nsw> smax %v))
+ define void @nswnowrap(i32 %v, i32* %buf) {
+ entry:
+ %add = add nsw i32 %v, 1
+diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+index 5e7d72d5e4f3..d0086ee2e6ac 100644
+--- a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
++++ b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+@@ -1,7 +1,7 @@
+ ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
+
+ ; CHECK: Determining loop execution counts for: @test
+-; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len)<nsw> /u 2)
++; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len) /u 2)
+ ; CHECK: Loop %for.body: max backedge-taken count is 1073741823
+
+ define zeroext i16 @test(i16* nocapture %p, i32 %len) nounwind readonly {
+diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+index c0a1d12fa00e..9a080b34743f 100644
+--- a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
++++ b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+@@ -179,7 +179,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @nsw_startx
+-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax %n))
++; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+ ; CHECK: Loop %loop: max backedge-taken count is -1
+ define void @nsw_startx(i4 %n, i4 %x) {
+ entry:
+@@ -195,7 +195,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @nsw_startx_step2
+-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax %n)) /u 2)
++; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
+ ; CHECK: Loop %loop: max backedge-taken count is 7
+ define void @nsw_startx_step2(i4 %n, i4 %x) {
+ entry:
+@@ -381,7 +381,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @even_nsw_startx
+-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax (2 * %n)))
++; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+ ; CHECK: Loop %loop: max backedge-taken count is -2
+ define void @even_nsw_startx(i4 %n, i4 %x) {
+ entry:
+@@ -398,7 +398,7 @@ exit:
+ }
+
+ ; CHECK: Determining loop execution counts for: @even_nsw_startx_step2
+-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax (2 * %n))) /u 2)
++; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+ ; CHECK: Loop %loop: max backedge-taken count is 7
+ define void @even_nsw_startx_step2(i4 %n, i4 %x) {
+ entry:
--
2.26.2
J
J
Jakub K?dzio?ka wrote on 20 Jun 2020 22:44
[PATCH v2 2/2] gnu: rust: Bootstrap up to rustc 1.44.
(address . 40957@debbugs.gnu.org)
20200620204454.5847-1-kuba@kadziolka.net
* gnu/packages/rust.scm (rust-1.40, rust-1.41, rust-1.42, rust-1.43,
rust-1.44): New variables.
---
gnu/packages/rust.scm | 100 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 100 insertions(+)

Toggle diff (138 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index d139657f39..1f85332583 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
+;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -797,6 +798,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(("fn finds_author_git") "#[ignore]\nfn finds_author_git")
(("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git"))
#t))
+ ;; TODO(rebuild-rust): Remove this phase in rust-1.28 when rebuilding.
(add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel
(lambda* _
;; This test failed to work on "nightly" channel builds
@@ -1143,12 +1145,16 @@ move around."
(setenv "CARGO_HOME" cargo-home)
#t))))))))))
+;; TODO(rebuild-rust): Switch to LLVM 9 in 1.38 instead of 1.40.
(define-public rust-1.38
(let ((base-rust
(rust-bootstrapped-package rust-1.37 "1.38.0"
"101dlpsfkq67p0hbwx4acqq6n90dj4bbprndizpgh1kigk566hk4")))
(package
(inherit base-rust)
+ #;(inputs
+ (alist-replace "llvm" (list llvm-9)
+ (package-inputs base-rust)))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
@@ -1183,4 +1189,98 @@ move around."
(generate-all-checksums "vendor")
#t)))))))))
+(define-public rust-1.40
+ (let ((base-rust
+ (rust-bootstrapped-package rust-1.39 "1.40.0"
+ "1ba9llwhqm49w7sz3z0gqscj039m53ky9wxzhaj11z6yg1ah15yx")))
+ (package
+ (inherit base-rust)
+ (inputs
+ (alist-replace "llvm" (list llvm-9)
+ (package-inputs base-rust)))
+ (source
+ (origin
+ (inherit (package-source base-rust))
+ ;; llvm-emscripten is no longer bundled, as that codegen backend
+ ;; got removed.
+ (snippet '(begin
+ (delete-file-recursively "src/llvm-project")
+ (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
+ #t))))
+ (arguments
+ ;; Rust 1.40 does not ship rustc-internal libraries by default
+ ;; (see rustc-dev-split). This means that librustc_driver.so is no
+ ;; longer available in lib/rustlib/$target/lib, which is the directory
+ ;; included in the runpath of librustc_codegen_llvm-llvm.so.
+ ;; This is detected by our validate-runpath phase as an error, but it
+ ;; is harmless as the codegen backend is loaded by librustc_driver.so
+ ;; itself, which must at that point have been already loaded.
+ ;; As such, we skip validating the runpath for Rust 1.40.
+ ;; Rust 1.41 stopped putting the codegen backend in a separate library,
+ ;; which makes this workaround only necessary for this release.
+ (cons* #:validate-runpath? #f
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ ;; We often need to patch tests with various Guix-specific paths.
+ ;; This often increases the line length and makes tidy, rustc's
+ ;; style checker, complain. We could insert additional newlines
+ ;; or add an "// ignore-tidy-linelength" comment, but as an
+ ;; ignore comment must be used, both approaches are fragile due
+ ;; to upstream formatting changes. As such, disable running the
+ ;; linter during tests, since it's intended for rustc developers
+ ;; anyway.
+ ;;
+ ;; TODO(rebuild-rust): This phase could be added earlier to
+ ;; simplify a significant amount of code, but it would require
+ ;; rebuilding the entire rusty universe.
+ (add-after 'patch-tests 'neuter-tidy
+ (lambda _
+ (substitute* "src/bootstrap/builder.rs"
+ (("^.*::Tidy,") ""))
+ #t))
+ ;; TODO(rebuild-rust): Adapt the find-files approach for
+ ;; earlier testsuite patches.
+ (replace 'patch-command-uid-gid-test
+ (lambda _
+ (match (find-files "src/test" "command-uid-gid\\.rs")
+ ((file)
+ (substitute* file
+ (("/bin/sh") (which "sh")))))
+ #t))
+ (replace 'patch-command-exec-tests
+ ,(patch-command-exec-tests-phase
+ '(match (find-files "src/test" "command-exec\\.rs")
+ ((file) file))))
+ ;; TODO(rebuild-rust): The test in question got fixed long ago.
+ (delete 'disable-cargo-test-for-nightly-channel)
+ ;; The test got removed in commit 000fe63b6fc57b09828930cacbab20c2ee6e6d15
+ ;; "Remove painful test that is not pulling its weight"
+ (delete 'remove-unsupported-tests)))))))))
+
+(define-public rust-1.41
+ (let ((base-rust
+ (rust-bootstrapped-package rust-1.40 "1.41.1"
+ "0ws5x0fxv57fyllsa6025h3q6j9v3m8nb3syl4x0hgkddq0kvj9q")))
+ (package
+ (inherit base-rust)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base-rust)
+ ((#:validate-runpath? _) #t))))))
+
+(define-public rust-1.42
+ (rust-bootstrapped-package rust-1.41 "1.42.0"
+ "0x9lxs82may6c0iln0b908cxyn1cv7h03n5cmbx3j1bas4qzks6j"))
+
+(define-public rust-1.43
+ (rust-bootstrapped-package rust-1.42 "1.43.0"
+ "18akhk0wz1my6y9vhardriy2ysc482z0fnjdcgs9gy59kmnarxkm"))
+
+(define-public rust-1.44
+ (rust-bootstrapped-package rust-1.43 "1.44.0"
+ "000iavc6m6aikyh6nvndz6qxm7x9a51pvg65cx0yhcz52wizcbdz"))
+
+;; NOTE: An update to LLVM 10 is coming in 1.45, make sure not to miss it.
+
+;; TODO(staging): Bump this variable to the latest packaged rust.
(define-public rust rust-1.39)
--
2.26.2
J
J
John Soo wrote on 1 Jul 2020 08:14
[PATCH 1/?] gnu: rust: Add 1.40
(address . 40957@debbugs.gnu.org)
E2290CCC-2E3B-4284-8D1F-B9FB5B5C25ED@asu.edu
Hello Jakub and Guix,

?I can provide some feedback n this patch set. I have been using rustc and cargo at 1.44 without issue for two weeks using these patches. I also set 1.44 as the default rust without breakages on x86.

Hope that helps and thanks for the patches!

- John
J
J
Jakub K?dzio?ka wrote on 3 Jul 2020 01:41
(name . John Soo)(address . jsoo1@asu.edu)(address . 40957-done@debbugs.gnu.org)
20200702234132.uyeaudazjqftm4o2@gravity
On Tue, Jun 30, 2020 at 11:14:09PM -0700, John Soo wrote:
Toggle quote (8 lines)
> Hello Jakub and Guix,
>
> ?I can provide some feedback n this patch set. I have been using rustc and cargo at 1.44 without issue for two weeks using these patches. I also set 1.44 as the default rust without breakages on x86.
>
> Hope that helps and thanks for the patches!
>
> - John

Thanks for your feedback! I have pushed the patches, with the difference
that rust-1.44 is 1.44.1 instead.

Regards,
Jakub K?dzio?ka
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl7+cKwACgkQ4xWnWEYT
FWRiEhAA22hCewmpJZkTkrWnnYVrbVoOaT9NotZi5tyWcqZjuRWjm2sk0rrNdGFK
shGaEj+OMFrVPMJ23yX7HHygcjf+U5F3mpIInu3/SsHZIpJrxivT++icDyJib4/k
zjS4EH5tH24gABO9iliEft9mob7DakUaHCcS3e//0T3eoHo4SodpUPNYbVSNhamQ
clTRIjftjKQxOzokaFist2EXPYcTgkAuAvk1sIap5w2IagXM5AuNDS7EJJ2aVNGA
8KNg287MVbGXpb4IQLv3hQPjSskujBy3SN5x0aA0X9XYCWjATecwJAS67xhM7+dr
CwU7BbTNPmYJuGuR2yUIGxSjlylpGy9aGFrWLm9DHEYzy2HS34YRM8uqqfUk5qrq
bfGx4KZUqOxoIAr5w7+HqI6Bg/100aqEj2nF0rNeCeHDIqMBmsh1RxgYMsnbnJWc
6LbNPr47sIGn9dlOdYj1u+UPm6T/L968zmKZ0ipHK7us3wlgnUpmeMMp0YsRDlUJ
BuPS6O+2PvGwdSn+k+FcbEp26tDsEEaH9l0OvG+NAme6QPoKw4+Ue7TdeeLlQBvS
DVcThhaer/SNDw2ENytjY9vR66IW2ftG469/NPgQsXgqwo4JkZi5Q3icsaTIpCA3
c+GyphC3Zf5vp3cjV8E4PLUN+I2wB22eKoeNhZD14KgF2JPajEw=
=r8Ip
-----END PGP SIGNATURE-----


Closed
?