[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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 40957@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 40957
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch