Subject: [bug#58942] [PATCH core-updates] gnu: rust: Use rust-1.63.0

From: Matthew James Kraai <[email-masked]>
Date: Tue, 1 Nov 2022 03:24:44 -0700

* gnu/packages/rust.scm (rust-1.61, rust-1.62, rust-1.63): New variables.
  (rust): Base on rust-1.63, add disable-tests-requiring-mercurial phase, and
  ignore more process tests.
---
 gnu/packages/rust.scm | 42 ++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index d6e8795698..0f8b8cc54e 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -591,6 +591,32 @@ (define rust-1.60
    ;; * error: unknown codegen option: `symbol-mangling-version`
    rust-1.59 "1.60.0" "1drqr0a26x1rb2w3kj0i6abhgbs3jx5qqkrcwbwdlx7n3inq5ji0"))
 
+(define rust-1.61
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.59. e.g.:
+   ;; * error[E0522]: definition of an unknown language item: `panic_no_unwind`
+   ;; * error[E0093]: unrecognized intrinsic function: `const_deallocate`
+   ;; * error: unrecognized platform-specific intrinsic function: `simd_as`
+   rust-1.60 "1.61.0" "1vfs05hkf9ilk19b2vahqn8l6k17pl9nc1ky9kgspaascx8l62xd"))
+
+(define rust-1.62
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.60. e.g.:
+   ;; error: attributes starting with `rustc` are reserved for use by the `rustc` compiler
+   ;; error: expected `(`, found `{`
+   ;; error: expected one of: `*`, `+`, or `?`
+   rust-1.61 "1.62.1" "0gqkg34ic77dcvsz69qbdng6g3zfhl6hnhx7ha1mjkyrzipvxb3j"))
+
+(define rust-1.63
+  (rust-bootstrapped-package
+   ;; Verified that it *doesn't* build with 1.61. e.g.:
+   ;; error: attributes starting with `rustc` are reserved for use by the `rustc` compiler
+   ;; error: cannot find attribute `rustc_has_incoherent_inherent_impls` in this scope
+   ;; error[E0522]: definition of an unknown language item: `from_yeet`
+   ;; error[E0093]: unrecognized intrinsic function: `ptr_offset_from_unsigned`
+   ;; error: unrecognized platform-specific intrinsic function: `simd_arith_offset`
+   rust-1.62 "1.63.0" "1l4rrbzhxv88pnfq94nbyb9m6lfnjwixma3mwjkmvvs2aqlq158z"))
+
 ;;; Note: Only the latest versions of Rust are supported and tested.  The
 ;;; intermediate rusts are built for bootstrapping purposes and should not
 ;;; be relied upon.  This is to ease maintenance and reduce the time
@@ -599,7 +625,7 @@ (define rust-1.60
 ;;; Here we take the latest included Rust, make it public, and re-enable tests
 ;;; and extra components such as rustfmt.
 (define-public rust
-  (let ((base-rust rust-1.60))
+  (let ((base-rust rust-1.63))
     (package
       (inherit base-rust)
       (outputs (cons "rustfmt" (package-outputs base-rust)))
@@ -641,6 +667,14 @@ (define-public rust
                     "#[ignore]\nfn finds_author_git")
                    (("fn finds_local_author_git")
                     "#[ignore]\nfn finds_local_author_git"))))
+             (add-after 'unpack 'disable-tests-requiring-mercurial
+               (lambda _
+                 (substitute* "src/tools/cargo/tests/testsuite/init/mercurial_autodetect/mod.rs"
+                   (("fn mercurial_autodetect")
+                    "#[ignore]\nfn mercurial_autodetect"))
+                 (substitute* "src/tools/cargo/tests/testsuite/init/simple_hg_ignore_exists/mod.rs"
+                   (("fn simple_hg_ignore_exists")
+                    "#[ignore]\nfn simple_hg_ignore_exists"))))
              (add-after 'unpack 'patch-command-exec-tests
                ;; This test suite includes some tests that the stdlib's
                ;; `Command` execution properly handles in situations where
@@ -676,7 +710,11 @@ (define-public rust
                      (("fn test_process_mask")
                       "#[allow(unused_attributes)]
     #[ignore]
-    fn test_process_mask")))))
+    fn test_process_mask")
+                     (("fn test_process_group_no_posix_spawn")
+                      "#[ignore]\nfn test_process_group_no_posix_spawn")
+                     (("fn test_process_group_posix_spawn")
+                      "#[ignore]\nfn test_process_group_posix_spawn")))))
              (add-after 'unpack 'disable-interrupt-tests
                (lambda _
                  ;; This test hangs in the build container; disable it.
-- 
2.38.0