GNU bug report logs - #40957
[PATCH 1/?] gnu: rust: Add 1.40

Previous Next

Package: guix-patches;

Reported by: Jakub Kądziołka <kuba <at> kadziolka.net>

Date: Wed, 29 Apr 2020 09:41:02 UTC

Severity: normal

Tags: patch

Done: Jakub Kądziołka <kuba <at> kadziolka.net>

Bug is archived. No further changes may be made.

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

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

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


Report forwarded to guix-patches <at> gnu.org:
bug#40957; Package guix-patches. (Wed, 29 Apr 2020 09:41:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jakub Kądziołka <kuba <at> kadziolka.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 29 Apr 2020 09:41:02 GMT) Full text and rfc822 format available.

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

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: guix-patches <at> gnu.org
Subject: [PATCH 1/?] gnu: rust: Add 1.40
Date: Wed, 29 Apr 2020 11:40:21 +0200
* 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.

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





Information forwarded to guix-patches <at> gnu.org:
bug#40957; Package guix-patches. (Wed, 29 Apr 2020 16:03:02 GMT) Full text and rfc822 format available.

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

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: 40957 <at> debbugs.gnu.org
Subject: [PATCH 2/?] gnu: rust: Add 1.41
Date: Wed, 29 Apr 2020 18:02:18 +0200
---
 gnu/packages/rust.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

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





Information forwarded to guix-patches <at> gnu.org:
bug#40957; Package guix-patches. (Sat, 20 Jun 2020 20:45:02 GMT) Full text and rfc822 format available.

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

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: 40957 <at> debbugs.gnu.org
Subject: [PATCH v2 1/2] gnu: llvm-9: Backport patches to fix miscompilations.
Date: Sat, 20 Jun 2020 22:44:40 +0200
* 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

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 <at> gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg <at> gnu.org>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul <at> autistici.org>
+;;; Copyright © 2020 Jakub Kądziołka <kuba <at> 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 <at> 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 <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#40957; Package guix-patches. (Sat, 20 Jun 2020 20:46:01 GMT) Full text and rfc822 format available.

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

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: 40957 <at> debbugs.gnu.org
Subject: [PATCH v2 2/2] gnu: rust: Bootstrap up to rustc 1.44.
Date: Sat, 20 Jun 2020 22:44:54 +0200
* 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(+)

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 <at> tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a <at> scratchpost.org>
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov <at> gmail.com>
+;;; Copyright © 2020 Jakub Kądziołka <kuba <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#40957; Package guix-patches. (Wed, 01 Jul 2020 06:15:02 GMT) Full text and rfc822 format available.

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

From: John Soo <jsoo1 <at> asu.edu>
To: 40957 <at> debbugs.gnu.org
Subject: [PATCH 1/?] gnu: rust: Add 1.40
Date: Tue, 30 Jun 2020 23:14:09 -0700
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





Reply sent to Jakub Kądziołka <kuba <at> kadziolka.net>:
You have taken responsibility. (Thu, 02 Jul 2020 23:42:01 GMT) Full text and rfc822 format available.

Notification sent to Jakub Kądziołka <kuba <at> kadziolka.net>:
bug acknowledged by developer. (Thu, 02 Jul 2020 23:42:01 GMT) Full text and rfc822 format available.

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

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: John Soo <jsoo1 <at> asu.edu>
Cc: 40957-done <at> debbugs.gnu.org
Subject: Re: [PATCH 1/?] gnu: rust: Add 1.40
Date: Fri, 3 Jul 2020 01:41:32 +0200
[Message part 1 (text/plain, inline)]
On Tue, Jun 30, 2020 at 11:14:09PM -0700, John Soo wrote:
> 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
[signature.asc (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 31 Jul 2020 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 324 days ago.

Previous Next


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