From d57b578cc4f54ac596d06ff38e16052b704a43cb Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 9 Feb 2026 20:16:53 +0200 Subject: [PATCH] gnu: rust: Update to 1.93. * gnu/packages/rust.scm (rust): Update to 1.93. [arguments]: Remove phase enabling gdb to work. Adjust the phases skipping some tests. Adjust the 'build and 'install phases to not specify needing to build and install rust-analyzer-proc-macro-srv. Change-Id: Ib4c46b28445bc6cce7dadf6b882d77373c53f75c --- gnu/packages/rust.scm | 104 +++++++++++------------------------------- 1 file changed, 27 insertions(+), 77 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 0fd5b77fbe..da42eff255 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -1841,7 +1841,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) ;;; 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.90)) + (let ((base-rust rust-1.93)) (package (inherit base-rust) (properties (append @@ -1862,20 +1862,6 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) (cons '(srfi srfi-26) modules)) ((#:phases phases) `(modify-phases ,phases - (add-after 'unpack 'relax-gdb-auto-load-safe-path - ;; Allow GDB to load binaries from any location, otherwise the - ;; gdbinfo tests fail. This is only useful when testing with a - ;; GDB version newer than 8.2. - (lambda _ - (setenv "HOME" (getcwd)) - (with-output-to-file (string-append (getenv "HOME") "/.gdbinit") - (lambda _ - (format #t "set auto-load safe-path /~%"))) - ;; Do not launch gdb with '-nx' which causes it to not execute - ;; any init file. - (substitute* "src/tools/compiletest/src/runtest.rs" - (("\"-nx\".as_ref\\(\\), ") - "")))) (add-after 'unpack 'disable-tests-requiring-git (lambda _ (substitute* "src/tools/cargo/tests/testsuite/publish_lockfile.rs" @@ -1883,10 +1869,9 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) '("fn note_resolve_changes"))))) (add-after 'unpack 'disable-tests-using-cargo-publish (lambda _ - (with-directory-excursion "src/tools/cargo/tests/testsuite" - (substitute* "install.rs" - ,@(make-ignore-test-list - '("fn failed_install_retains_temp_directory")))))) + (substitute* "src/tools/cargo/tests/testsuite/install.rs" + ,@(make-ignore-test-list + '("fn failed_install_retains_temp_directory"))))) ,@(if (target-riscv64?) ;; Keep this phase separate so it can be adjusted without needing ;; to adjust the skipped tests on other architectures. @@ -1912,43 +1897,19 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) ,@(make-ignore-test-list '("fn test_missing_tests"))))))) `()) - (add-after 'unpack 'disable-miscellaneous-broken-tests + (add-after 'unpack 'skip-unupdated-clippy-tests + (lambda _ + (with-directory-excursion "src/tools/clippy/tests/ui" + (delete-file "cognitive_complexity.rs") + (delete-file "cognitive_complexity.stderr")))) + (add-after 'unpack 'disable-tests-requiring-network-access (lambda _ - (substitute* "src/tools/cargo/tests/testsuite/check_cfg.rs" - ;; These apparently get confused by the fact that - ;; we're building in a directory containing the - ;; string "rustc" - ,@(make-ignore-test-list - '("fn config_fingerprint" - "fn features_fingerprint"))) (substitute* "src/tools/cargo/tests/testsuite/git_auth.rs" - ;; This checks for a specific networking error message - ;; that's different from the one we see in the builder ,@(make-ignore-test-list - '("fn net_err_suggests_fetch_with_cli"))))) - (add-after 'unpack 'patch-command-exec-tests - ;; This test suite includes some tests that the stdlib's - ;; `Command` execution properly handles in situations where - ;; the environment or PATH variable are empty, but this fails - ;; since we don't have `echo` available at its usual FHS - ;; location. - (lambda _ - (substitute* "tests/ui/command/command-exec.rs" - (("Command::new\\(\"echo\"\\)") - (format #f "Command::new(~s)" (which "echo")))))) - (add-after 'unpack 'patch-command-uid-gid-test - (lambda _ - (substitute* "tests/ui/command/command-uid-gid.rs" - (("/bin/sh") (which "sh")) - (("/bin/ls") (which "ls"))))) - (add-after 'unpack 'skip-shebang-tests - ;; This test make sure that the parser behaves properly when a - ;; source file starts with a shebang. Unfortunately, the - ;; patch-shebangs phase changes the meaning of these edge-cases. - ;; We skip the test since it's drastically unlikely Guix's - ;; packaging will introduce a bug here. - (lambda _ - (delete-file "tests/ui/parser/shebang/sneaky-attrib.rs"))) + '("fn net_err_suggests_fetch_with_cli"))) + (substitute* "src/tools/cargo/tests/testsuite/package.rs" + ,@(make-ignore-test-list + '("fn publish_to_crates_io_warns"))))) (add-after 'unpack 'patch-process-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -2005,17 +1966,17 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) (replace 'patch-cargo-checksums (lambda _ (substitute* - (append '("Cargo.lock" - "src/bootstrap/Cargo.lock") - (find-files "compiler" "Cargo.lock") - (find-files "library" "Cargo.lock") - (find-files "src/doc" "Cargo.lock") - (remove - ;; Don't mess with the lock files in the Cargo - ;; testsuite; it messes up the tests. - (cut string-contains <> - "cargo/tests/testsuite") - (find-files "src/tools" "Cargo.lock"))) + (append '("Cargo.lock" + "src/bootstrap/Cargo.lock") + (find-files "compiler" "Cargo.lock") + (find-files "library" "Cargo.lock") + (find-files "src/doc" "Cargo.lock") + (remove + ;; Don't mess with the lock files in the Cargo + ;; testsuite; it messes up the tests. + (cut string-contains <> + "cargo/tests/testsuite") + (find-files "src/tools" "Cargo.lock"))) (("(checksum = )\".*\"" all name) (string-append name "\"" ,%cargo-reference-hash "\""))) (generate-all-checksums "vendor"))) @@ -2043,9 +2004,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) "src/tools/cargo" "src/tools/clippy" "src/tools/rust-analyzer" - "src/tools/rustfmt" - ;; Needed by rust-analyzer and editor plugins - "src/tools/rust-analyzer/crates/proc-macro-srv-cli")))) + "src/tools/rustfmt")))) (replace 'check ;; Phase overridden to also test more tools. (lambda* (#:key tests? parallel-build? #:allow-other-keys) @@ -2064,15 +2023,6 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) ;; Phase overridden to also install more tools. (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") - ;; This one doesn't have an install target so - ;; we need to install manually. - (install-file (string-append - "build/" - ,(platform-rust-target - (lookup-platform-by-system - (%current-system))) - "/stage1-tools-bin/rust-analyzer-proc-macro-srv") - (string-append (assoc-ref outputs "out") "/libexec")) (substitute* "config.toml" ;; Adjust the prefix to the 'cargo' output. (("prefix = \"[^\"]*\"") @@ -2120,7 +2070,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc")) (with-directory-excursion (string-append (assoc-ref outputs "rust-src") "/lib/rustlib/src/rust/src/tools/") - (substitute* (find-files "." "cargo-test-fixture\\.rs") + (substitute* (find-files "." "\\.rs$") (("#!.*/bin/cargo") (string-append "#!" (assoc-ref outputs "cargo") "/bin/cargo"))))))