X-Loop: help-debbugs@HIDDEN Subject: bug#66284: (no subject) Resent-From: brennan@HIDDEN Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: help-debbugs@HIDDEN Resent-Date: Sat, 30 Sep 2023 21:29:02 +0000 Resent-Message-ID: <handler.66284.B.169610932611802 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 66284 X-GNU-PR-Package: debbugs.gnu.org X-GNU-PR-Keywords: Received: via spool by submit <at> debbugs.gnu.org id=B.169610932611802 (code B ref -1); Sat, 30 Sep 2023 21:29:02 +0000 Received: (at submit) by debbugs.gnu.org; 30 Sep 2023 21:28:46 +0000 Received: from localhost ([127.0.0.1]:59871 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1qmhVz-00034E-6w for submit <at> debbugs.gnu.org; Sat, 30 Sep 2023 17:28:46 -0400 Received: from lists.gnu.org ([2001:470:142::17]:43884) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <brennan@HIDDEN>) id 1qmhVu-00033v-Fc for submit <at> debbugs.gnu.org; Sat, 30 Sep 2023 17:28:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <brennan@HIDDEN>) id 1qmhVX-00063M-8q for guix-patches@HIDDEN; Sat, 30 Sep 2023 17:28:15 -0400 Received: from smtp.umanwizard.com ([54.203.248.109]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <brennan@HIDDEN>) id 1qmhVT-0007jv-AA for guix-patches@HIDDEN; Sat, 30 Sep 2023 17:28:15 -0400 Received: from localhost ([70.18.6.196]) by smtp.umanwizard.com ; 30 Sep 2023 21:28:08 +0000 X-Fes-Received-For: guix-patches@HIDDEN X-Fes-Received-From: <brennan@HIDDEN> Received-SPF: pass client-ip=54.203.248.109; envelope-from=brennan@HIDDEN; helo=smtp.umanwizard.com X-Spam_score_int: 38 X-Spam_score: 3.8 X-Spam_bar: +++ X-Spam_report: (3.8 / 5.0 requ) BAYES_00=-1.9, MISSING_DATE=1.36, MISSING_FROM=1, MISSING_HEADERS=1.021, MISSING_MID=0.497, MISSING_SUBJECT=1.799, PP_MIME_FAKE_ASCII_TEXT=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action Message-Id: <E1qmhVX-00063M-8q@HIDDEN> From: brennan@HIDDEN Date: Sat, 30 Sep 2023 17:28:15 -0400 X-Spam-Score: 4.1 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From 82b31da5a5ea7f65c0d62cd01c761f4ccbfb1ff8 Mon Sep 17 00:00:00 2001 Message-ID: <82b31da5a5ea7f65c0d62cd01c761f4ccbfb1ff8.1696109284.git.brennan@HIDDEN> From: Brennan Vincent <brennan@umanw [...] Content analysis details: (4.1 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 MISSING_HEADERS Missing To: header -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.9 SPF_FAIL SPF: sender does not match SPF record (fail) [SPF failed: Please see http://www.openspf.org/Why?s=mfrom; id=brennan%40umanwizard.com; ip=2001%3A470%3A142%3A%3A17; r=debbugs.gnu.org] 0.0 PP_MIME_FAKE_ASCII_TEXT BODY: MIME text/plain claims to be ASCII but isn't 1.8 MISSING_SUBJECT Missing Subject: header 0.2 NO_SUBJECT Extra score for no subject X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 3.1 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From 82b31da5a5ea7f65c0d62cd01c761f4ccbfb1ff8 Mon Sep 17 00:00:00 2001 Message-ID: <82b31da5a5ea7f65c0d62cd01c761f4ccbfb1ff8.1696109284.git.brennan@HIDDEN> From: Brennan Vincent <brennan@umanw [...] Content analysis details: (3.1 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 MISSING_HEADERS Missing To: header -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.9 SPF_FAIL SPF: sender does not match SPF record (fail) [SPF failed: Please see http://www.openspf.org/Why?s=mfrom;id=brennan%40umanwizard.com;ip=2001%3A470%3A142%3A%3A17;r=debbugs.gnu.org] 0.0 PP_MIME_FAKE_ASCII_TEXT BODY: MIME text/plain claims to be ASCII but isn't 1.8 MISSING_SUBJECT Missing Subject: header 0.2 NO_SUBJECT Extra score for no subject -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager From 82b31da5a5ea7f65c0d62cd01c761f4ccbfb1ff8 Mon Sep 17 00:00:00 2001 Message-ID: <82b31da5a5ea7f65c0d62cd01c761f4ccbfb1ff8.1696109284.git.brennan@HIDDEN> From: Brennan Vincent <brennan@HIDDEN> Date: Sat, 30 Sep 2023 17:01:59 -0400 Subject: [PATCH] * gnu: rust: Introduce rust-next package and various intermediates. To: guix-patches@HIDDEN X-Fes-Encrypted: true X-Fes-Ehlo-Domain: localhost This change introduces intermediate bootstrapping packages rust-1.69, rust-1.70, rust-1.71, and rust-1.72. It also refactors the code that raises the intermediate bootstrapping rust-1.67 package into the public "rust" package into a reusable function so that we can make more such packages. It then uses that function to create five more packages: rust-next-1.68 through rust-next-1.71, and rust-next (which is version 1.72.1). The only one of these that this change exposes publicly is rust-next (i.e., rust 1.72.1). This will allow developers who require recent Rust versions to use Guix to manage their development environment. --- .../patches/cargo-failed-install-test.patch | 16 + .../patches/cargo-registry-auth.patch | 12 + gnu/packages/rust.scm | 538 ++++++++++++------ 3 files changed, 386 insertions(+), 180 deletions(-) create mode 100644 gnu/packages/patches/cargo-failed-install-test.patch create mode 100644 gnu/packages/patches/cargo-registry-auth.patch diff --git a/gnu/packages/patches/cargo-failed-install-test.patch b/gnu/packages/patches/cargo-failed-install-test.patch new file mode 100644 index 0000000000..d687346243 --- /dev/null +++ b/gnu/packages/patches/cargo-failed-install-test.patch @@ -0,0 +1,16 @@ +diff --git a/tests/testsuite/install.rs b/tests/testsuite/install.rs +index 0c7fc5037..8cd6222a0 100644 +--- a/src/tools/cargo/tests/testsuite/install.rs ++++ b/src/tools/cargo/tests/testsuite/install.rs +@@ -2276,7 +2276,9 @@ fn failed_install_retains_temp_directory() { + + // Find the path in the output. + let start = stderr.find("found at `").unwrap() + 10; +- let end = stderr[start..].find('.').unwrap() - 1; +- let path = Path::new(&stderr[start..(end + start)]); ++ let end = stderr[start..].trim_end_matches(r"`. ++To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path. ++"); ++ let path = Path::new(end); + assert!(path.exists()); + assert!(path.join("release/deps").exists()); diff --git a/gnu/packages/patches/cargo-registry-auth.patch b/gnu/packages/patches/cargo-registry-auth.patch new file mode 100644 index 0000000000..914db3a21d --- /dev/null +++ b/gnu/packages/patches/cargo-registry-auth.patch @@ -0,0 +1,12 @@ +diff --git a/tests/testsuite/registry_auth.rs b/tests/testsuite/registry_auth.rs +index 97cdf6748..36d579823 100644 +--- a/src/tools/cargo/tests/testsuite/registry_auth.rs ++++ b/src/tools/cargo/tests/testsuite/registry_auth.rs +@@ -585,6 +585,6 @@ note: Waiting [..] + // 5. /api/v1/crates/new + // 6. config.json for the "wait for publish" + // 7. /index/3/f/foo for the "wait for publish" +- assert_eq!(authorizations.len(), 7); ++ assert!(authorizations.len() >= 7); + assert!(!log.contains("a-unique_token")); + } diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 38db41549a..11af172a42 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2022 Zheng Junjie <873216071@HIDDEN> ;;; Copyright © 2022 Jim Newsome <jnewsome@HIDDEN> ;;; Copyright © 2022 Mark H Weaver <mhw@HIDDEN> +;;; Copyright © 2023 Brennan Vincent <brennan@HIDDEN> ;;; ;;; This file is part of GNU Guix. ;;; @@ -703,194 +704,371 @@ (define rust-1.67 (replace "llvm" llvm-15)))))) (define rust-1.68 - (rust-bootstrapped-package - rust-1.67 "1.68.2" "15ifyd5jj8rd979dkakp887hgmhndr68pqaqvd2hqkfdywirqcwk")) + (let ((base-rust (rust-bootstrapped-package + rust-1.67 "1.68.2" "15ifyd5jj8rd979dkakp887hgmhndr68pqaqvd2hqkfdywirqcwk"))) + (package + (inherit base-rust) + (arguments + (substitute-keyword-arguments (package-arguments base-rust) + ((#:validate-runpath? _) #f)))))) -;;; Note: Only the latest version of Rust is 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 -;;; required to build the full Rust bootstrap chain. -;;; -;;; 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.68)) +(define rust-1.69 + (let ((base-rust (rust-bootstrapped-package + rust-1.68 "1.69.0" "03zn7kx5bi5mdfsqfccj4h8gd6abm7spj0kjsfxwlv5dcwc9f1gv"))) + (package + (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (snippet + '(begin + (for-each delete-file-recursively + '("src/llvm-project" + "vendor/tikv-jemalloc-sys/jemalloc")) + ;; find . -not -type d -executable -exec file {} \+ | grep ELF + ;; returns nothing. + + ;; Also remove the bundled (mostly Windows) libraries. + (for-each delete-file + (find-files "vendor" ".*\\.(a|dll|exe|lib)$"))))))))) + +(define (assemble-rustix-outline-asm-phase . dirs) + `(lambda _ + (let* ((system (or ,(%current-target-system) + ,(%current-system))) + (arch + (match system + ("x86_64-linux" "x86_64") + ("i686-linux" "x86") + ("armhf-linux" "arm") + ("aarch64-linux" "aarch64") + ("mips64el-linux" "mips64") + ("riscv64-linux" "riscv64") + (_ (let ((dash (string-index system #\-))) + (substring system 0 dash)))))) + (for-each + (lambda (dir) + (with-directory-excursion dir + (invoke "gcc" "-c" (format #f "~a.s" arch)) + (invoke "ar" "r" + (format #f "debug/librustix_outline_~a.a" arch) + (format #f "~a.o" arch)) + (invoke "ar" "r" + (format #f "release/librustix_outline_~a.a" arch) + (format #f "~a.o" arch)))) + ',dirs)))) + +(define rust-1.70 + (let ((base-rust (rust-bootstrapped-package + rust-1.69 "1.70.0" "0z6j7d0ni0rmfznv0w3mrf882m11kyh51g2bxkj40l3s1c0axgxj"))) (package (inherit base-rust) - (outputs (cons "rustfmt" (package-outputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) - ((#:tests? _ #f) - (not (%current-target-system))) ((#: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 'patch-cargo-env-shebang - (lambda _ - (substitute* '("src/tools/cargo/tests/testsuite/build.rs" - "src/tools/cargo/tests/testsuite/fix.rs") - ;; The cargo *_wrapper tests set RUSTC.*WRAPPER environment - ;; variable which points to /usr/bin/env. Since it's not a - ;; shebang, it needs to be manually patched. - (("/usr/bin/env") - (which "env"))))) - (add-after 'unpack 'disable-tests-requiring-git - (lambda _ - (substitute* "src/tools/cargo/tests/testsuite/new.rs" - (("fn author_prefers_cargo") - "#[ignore]\nfn author_prefers_cargo") - (("fn finds_author_git") - "#[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/simple_hg_ignore_exists/mod.rs" - (("fn simple_hg_ignore_exists") - "#[ignore]\nfn simple_hg_ignore_exists")) - (substitute* - "src/tools/cargo/tests/testsuite/init/mercurial_autodetect/mod.rs" - (("fn mercurial_autodetect") - "#[ignore]\nfn mercurial_autodetect")))) - (add-after 'unpack 'disable-tests-broken-on-aarch64 - (lambda _ - (with-directory-excursion "src/tools/cargo/tests/testsuite/" - (substitute* "build_script_extra_link_arg.rs" - (("^fn build_script_extra_link_arg_bin_single" m) - (string-append "#[ignore]\n" m))) - (substitute* "build_script.rs" - (("^fn env_test" m) - (string-append "#[ignore]\n" m))) - (substitute* "collisions.rs" - (("^fn collision_doc_profile_split" m) - (string-append "#[ignore]\n" m))) - (substitute* "concurrent.rs" - (("^fn no_deadlock_with_git_dependencies" m) - (string-append "#[ignore]\n" m))) - (substitute* "features2.rs" - (("^fn dep_with_optional_host_deps_activated" m) - (string-append "#[ignore]\n" m)))))) - (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* (match (find-files "." "^command-exec.rs$") - ((file) file)) - (("Command::new\\(\"echo\"\\)") - (format #f "Command::new(~s)" (which "echo")))))) - (add-after 'unpack 'patch-command-uid-gid-test - (lambda _ - (substitute* (match (find-files "." "^command-uid-gid.rs$") - ((file) file)) - (("/bin/sh") - (which "sh"))))) - (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"))) - (add-after 'unpack 'patch-process-tests - (lambda* (#:key inputs #:allow-other-keys) - (let ((bash (assoc-ref inputs "bash"))) - (substitute* "library/std/src/process/tests.rs" - (("\"/bin/sh\"") - (string-append "\"" bash "/bin/sh\""))) - ;; The three tests which are known to fail upstream on QEMU - ;; emulation on aarch64 and riscv64 also fail on x86_64 in Guix's - ;; build system. Skip them on all builds. - (substitute* "library/std/src/sys/unix/process/process_common/tests.rs" - (("target_arch = \"arm\",") "target_os = \"linux\","))))) - (add-after 'unpack 'disable-interrupt-tests + ;; Rustix ships with some bundled assembly-language + ;; libraries. We strip the pre-assembled versions from + ;; the sources, so regenerate them here. + (add-after 'configure 'assemble-rustix-outline-asm + ,(assemble-rustix-outline-asm-phase + "vendor/rustix-0.36.5/src/backend/linux_raw/arch/outline/" + "vendor/rustix/src/backend/linux_raw/arch/outline/"))))))))) + +(define rust-1.71 + (let ((base-rust (rust-bootstrapped-package + rust-1.70 "1.71.0" "15jc0d13cmrh2xvpkyyvsbwgn3w4klqiwf2wlgzfp22mvjmy8rx6"))) + (package + (inherit base-rust) + (arguments + (substitute-keyword-arguments (package-arguments base-rust) + ((#:phases phases) + `(modify-phases ,phases + (replace 'patch-cargo-checksums (lambda _ - ;; This test hangs in the build container; disable it. - (substitute* (match (find-files "." "^freshness.rs$") - ((file) file)) - (("fn linking_interrupted") - "#[ignore]\nfn linking_interrupted")) - ;; Likewise for the ctrl_c_kills_everyone test. - (substitute* (match (find-files "." "^death.rs$") - ((file) file)) - (("fn ctrl_c_kills_everyone") - "#[ignore]\nfn ctrl_c_kills_everyone")))) - (add-after 'unpack 'adjust-rpath-values - ;; This adds %output:out to rpath, allowing us to install utilities in - ;; different outputs while reusing the shared libraries. - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "src/bootstrap/builder.rs" - ((" = rpath.*" all) - (string-append all - " " - "rustflags.arg(\"-Clink-args=-Wl,-rpath=" - out "/lib\");\n")))))) - (add-after 'configure 'add-gdb-to-config - (lambda* (#:key inputs #:allow-other-keys) - (let ((gdb (assoc-ref inputs "gdb"))) - (substitute* "config.toml" - (("^python =.*" all) - (string-append all - "gdb = \"" gdb "/bin/gdb\"\n")))))) - (replace 'build - ;; Phase overridden to also build rustfmt. - (lambda* (#:key parallel-build? #:allow-other-keys) - (let ((job-spec (string-append - "-j" (if parallel-build? - (number->string (parallel-job-count)) - "1")))) - (invoke "./x.py" job-spec "build" - "library/std" ;rustc - "src/tools/cargo" - "src/tools/rustfmt")))) - (replace 'check - ;; Phase overridden to also test rustfmt. - (lambda* (#:key tests? parallel-build? #:allow-other-keys) - (when tests? - (let ((job-spec (string-append - "-j" (if parallel-build? - (number->string (parallel-job-count)) - "1")))) - (invoke "./x.py" job-spec "test" "-vv" - "library/std" - "src/tools/cargo" - "src/tools/rustfmt"))))) - (replace 'install - ;; Phase overridden to also install rustfmt. - (lambda* (#:key outputs #:allow-other-keys) - (invoke "./x.py" "install") - (substitute* "config.toml" - ;; Adjust the prefix to the 'cargo' output. - (("prefix = \"[^\"]*\"") - (format #f "prefix = ~s" (assoc-ref outputs "cargo")))) - (invoke "./x.py" "install" "cargo") - (substitute* "config.toml" - ;; Adjust the prefix to the 'rustfmt' output. - (("prefix = \"[^\"]*\"") - (format #f "prefix = ~s" (assoc-ref outputs "rustfmt")))) - (invoke "./x.py" "install" "rustfmt"))))))) - ;; Add test inputs. - (native-inputs (cons* `("gdb" ,gdb/pinned) - `("procps" ,procps) - (package-native-inputs base-rust)))))) + (substitute* '("Cargo.lock" + "src/bootstrap/Cargo.lock" + "src/tools/rust-analyzer/Cargo.lock" + "src/tools/cargo/Cargo.lock") + (("(checksum = )\".*\"" all name) + (string-append name "\"" ,%cargo-reference-hash "\""))) + (generate-all-checksums "vendor"))) + (replace 'assemble-rustix-outline-asm + ,(assemble-rustix-outline-asm-phase + "vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/" + "vendor/rustix-0.37.7/src/backend/linux_raw/arch/outline/" + "vendor/rustix/src/backend/linux_raw/arch/outline/"))))))))) + +(define rust-1.72 + (let ((base-rust (rust-bootstrapped-package + rust-1.71 "1.72.1" "15gqd1jzhnc16a7gjmav4x1v83jjbzyjh1gvcdfvpkajd9gq8j3z"))) + (package + (inherit base-rust) + (arguments + (substitute-keyword-arguments + (package-arguments base-rust) + ((#:phases phases) + `(modify-phases + ,phases + (replace 'assemble-rustix-outline-asm + ,(assemble-rustix-outline-asm-phase + "vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/" + "vendor/rustix-0.37.11/src/backend/linux_raw/arch/outline/" + "vendor/rustix-0.37.20/src/backend/linux_raw/arch/outline/"))))))))) + +(define public-rust-1.67-phase-mods + '((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 'patch-cargo-env-shebang + (lambda _ + (substitute* '("src/tools/cargo/tests/testsuite/build.rs" + "src/tools/cargo/tests/testsuite/fix.rs") + ;; The cargo *_wrapper tests set RUSTC.*WRAPPER environment + ;; variable which points to /usr/bin/env. Since it's not a + ;; shebang, it needs to be manually patched. + (("/usr/bin/env") + (which "env"))))) + (add-after 'unpack 'disable-tests-requiring-git + (lambda _ + (substitute* "src/tools/cargo/tests/testsuite/new.rs" + (("fn author_prefers_cargo") + "#[ignore]\nfn author_prefers_cargo") + (("fn finds_author_git") + "#[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/simple_hg_ignore_exists/mod.rs" + (("fn simple_hg_ignore_exists") + "#[ignore]\nfn simple_hg_ignore_exists")) + (substitute* + "src/tools/cargo/tests/testsuite/init/mercurial_autodetect/mod.rs" + (("fn mercurial_autodetect") + "#[ignore]\nfn mercurial_autodetect")))) + (add-after 'unpack 'disable-tests-broken-on-aarch64 + (lambda _ + (with-directory-excursion "src/tools/cargo/tests/testsuite/" + (substitute* "build_script_extra_link_arg.rs" + (("^fn build_script_extra_link_arg_bin_single" m) + (string-append "#[ignore]\n" m))) + (substitute* "build_script.rs" + (("^fn env_test" m) + (string-append "#[ignore]\n" m))) + (substitute* "collisions.rs" + (("^fn collision_doc_profile_split" m) + (string-append "#[ignore]\n" m))) + (substitute* "concurrent.rs" + (("^fn no_deadlock_with_git_dependencies" m) + (string-append "#[ignore]\n" m))) + (substitute* "features2.rs" + (("^fn dep_with_optional_host_deps_activated" m) + (string-append "#[ignore]\n" m)))))) + (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* (match (find-files "." "^command-exec.rs$") + ((file) file)) + (("Command::new\\(\"echo\"\\)") + (format #f "Command::new(~s)" (which "echo")))))) + (add-after 'unpack 'patch-command-uid-gid-test + (lambda _ + (substitute* (match (find-files "." "^command-uid-gid.rs$") + ((file) file)) + (("/bin/sh") + (which "sh"))))) + (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 "src/test/ui/parser/shebang/sneaky-attrib.rs"))) + (add-after 'unpack 'patch-process-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "library/std/src/process/tests.rs" + (("\"/bin/sh\"") + (string-append "\"" bash "/bin/sh\""))) + ;; The three tests which are known to fail upstream on QEMU + ;; emulation on aarch64 and riscv64 also fail on x86_64 in Guix's + ;; build system. Skip them on all builds. + (substitute* "library/std/src/sys/unix/process/process_common/tests.rs" + (("target_arch = \"arm\",") "target_os = \"linux\","))))) + (add-after 'unpack 'disable-interrupt-tests + (lambda _ + ;; This test hangs in the build container; disable it. + (substitute* (match (find-files "." "^freshness.rs$") + ((file) file)) + (("fn linking_interrupted") + "#[ignore]\nfn linking_interrupted")) + ;; Likewise for the ctrl_c_kills_everyone test. + (substitute* (match (find-files "." "^death.rs$") + ((file) file)) + (("fn ctrl_c_kills_everyone") + "#[ignore]\nfn ctrl_c_kills_everyone")))) + (add-after 'configure 'add-gdb-to-config + (lambda* (#:key inputs #:allow-other-keys) + (let ((gdb (assoc-ref inputs "gdb"))) + (substitute* "config.toml" + (("^python =.*" all) + (string-append all + "gdb = \"" gdb "/bin/gdb\"\n")))))) + (replace 'build + ;; Phase overridden to also build rustfmt. + (lambda* (#:key parallel-build? #:allow-other-keys) + (let ((job-spec (string-append + "-j" (if parallel-build? + (number->string (parallel-job-count)) + "1")))) + (invoke "./x.py" job-spec "build" + "library/std" ;rustc + "src/tools/cargo" + "src/tools/rustfmt")))) + (replace 'check + ;; Phase overridden to also test rustfmt. + (lambda* (#:key tests? parallel-build? #:allow-other-keys) + (when tests? + (let ((job-spec (string-append + "-j" (if parallel-build? + (number->string (parallel-job-count)) + "1")))) + (invoke "./x.py" job-spec "test" "-vv" + "library/std" + "src/tools/cargo" + "src/tools/rustfmt"))))) + (replace 'install + ;; Phase overridden to also install rustfmt. + (lambda* (#:key outputs #:allow-other-keys) + (invoke "./x.py" "install") + (substitute* "config.toml" + ;; Adjust the prefix to the 'cargo' output. + (("prefix = \"[^\"]*\"") + (format #f "prefix = ~s" (assoc-ref outputs "cargo")))) + (invoke "./x.py" "install" "cargo") + (substitute* "config.toml" + ;; Adjust the prefix to the 'rustfmt' output. + (("prefix = \"[^\"]*\"") + (format #f "prefix = ~s" (assoc-ref outputs "rustfmt")))) + (invoke "./x.py" "install" "rustfmt"))))) + +;;; Here we take a given version of Rust and re-enable tests +;;; and extra components such as rustfmt. +;;; +;;; This function was designed for Rust 1.67. Future versions of Rust may require +;;; further overriding and customization. +(define* (mk-public-rust + base-rust + #:optional (phase-mods public-rust-1.67-phase-mods)) + (package + (inherit base-rust) + (outputs (cons "rustfmt" (package-outputs base-rust))) + (arguments + (substitute-keyword-arguments (package-arguments base-rust) + ((#:tests? _ #f) + (not (%current-target-system))) + ((#:phases phases) + `(modify-phases ,phases + ,@phase-mods)))) + ;; Add test inputs. + (native-inputs (cons* `("gdb" ,gdb/pinned) + `("procps" ,procps) + (package-native-inputs base-rust))))) + +;;; Note: Only the version 1.67 of Rust is 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 +;;; required to build the full Rust bootstrap chain. +(define-public rust + (mk-public-rust rust-1.67)) + +(define public-rust-1.68-phase-mods + (append public-rust-1.67-phase-mods + '((replace 'skip-shebang-tests + (lambda _ + (delete-file "tests/ui/parser/shebang/sneaky-attrib.rs")))))) + +(define rust-next-1.68 + (mk-public-rust rust-1.68 public-rust-1.68-phase-mods)) + +(define public-rust-1.69-phase-mods + (append public-rust-1.68-phase-mods + '((replace 'disable-tests-requiring-mercurial + (lambda _ + (substitute* + "src/tools/cargo/tests/testsuite/init/simple_hg_ignore_exists/mod.rs" + (("fn case") + "#[ignore]\nfn case")) + (substitute* + "src/tools/cargo/tests/testsuite/init/mercurial_autodetect/mod.rs" + (("fn case") + "#[ignore]\nfn case"))))))) + +(define rust-next-1.69 + (mk-public-rust rust-1.69 public-rust-1.69-phase-mods)) + +(define public-rust-1.70-phase-mods + (append public-rust-1.69-phase-mods + '((add-after 'disable-tests-requiring-git 'disable-more-tests-requiring-git + (lambda _ + (substitute* "src/tools/cargo/tests/testsuite/git.rs" + (("fn fetch_downloads_with_git2_first_then_with_gitoxide_and_vice_versa") + "#[ignore]\nfn fetch_downloads_with_git2_first_then_with_gitoxide_and_vice_versa"))))))) + +(define rust-next-1.70 + (mk-public-rust rust-1.70 public-rust-1.70-phase-mods)) + +(define public-rust-1.71-phase-mods + (append public-rust-1.70-phase-mods + '((add-after 'disable-more-tests-requiring-git 'disable-even-more-tests-requiring-git + (lambda _ + (delete-file "src/tools/cargo/tests/testsuite/git_shallow.rs") + (substitute* "src/tools/cargo/tests/testsuite/main.rs" + (("mod git_shallow;") + "")) + (substitute* "src/tools/cargo/tests/testsuite/offline.rs" + (("fn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep") + "#[ignore]\nfn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep")) + (substitute* "src/tools/cargo/tests/testsuite/patch.rs" + (("fn gitoxide_clones_shallow_old_git_patch") + "#[ignore]\nfn gitoxide_clones_shallow_old_git_patch"))))))) + +(define rust-next-1.71 + (mk-public-rust rust-1.71 public-rust-1.71-phase-mods)) + +(define public-rust-1.72-phase-mods + public-rust-1.71-phase-mods) + +(define-public rust-next + (let ((base-rust (mk-public-rust rust-1.72 public-rust-1.72-phase-mods))) + (package + (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (patches (search-patches + "cargo-registry-auth.patch" + "cargo-failed-install-test.patch")) + (patch-flags '("-p1")))) + (name "rust-next")))) (define-public rust-src-1.64 (hidden-package base-commit: 9f41aa021f982b3fc23927e2988c59329acdc8fc -- 2.41.0
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: brennan@HIDDEN Subject: bug#66284: Acknowledgement ((no subject)) Message-ID: <handler.66284.B.169610932611802.ack <at> debbugs.gnu.org> References: <E1qmhVX-00063M-8q@HIDDEN> X-Gnu-PR-Message: ack 66284 X-Gnu-PR-Package: debbugs.gnu.org Reply-To: 66284 <at> debbugs.gnu.org Date: Sat, 30 Sep 2023 21:29:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): help-debbugs@HIDDEN If you wish to submit further information on this problem, please send it to 66284 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 66284: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D66284 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
Received: (at control) by debbugs.gnu.org; 29 Nov 2023 17:43:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 29 12:43:12 2023 Received: from localhost ([127.0.0.1]:51035 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1r8Oae-0005YO-J1 for submit <at> debbugs.gnu.org; Wed, 29 Nov 2023 12:43:12 -0500 Received: from sail-ipv4.us-core.com ([208.82.101.137]:42118) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <felix.lechner@HIDDEN>) id 1r8Oad-0005YG-6p for control <at> debbugs.gnu.org; Wed, 29 Nov 2023 12:43:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=2017; bh=Po8G8+/KsODMUCw jWlnRh8/DmCsBjSaF5MpNAaADtic=; h=date:cc:to:from; d=lease-up.com; b=Hd 0Z/PXwscin0Igne8MEN7fAtn/MoUxU50zu+WSTt+7M7xOL9cJV1g7jHMTolR97/4keknh/ u9g03K/fnVmFBoUetB/aqHbkZUs0tj7oNs79DwLsNPHX++aLYg6RWbeYusDrwEw/Dx9z2X eJgkUzUIlWT4viTMPZxsC4EAaYgjU= Received: by sail-ipv4.us-core.com (OpenSMTPD) with ESMTPSA id 887ffadd (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO); Wed, 29 Nov 2023 17:43:02 +0000 (UTC) From: Felix Lechner <felix.lechner@HIDDEN> To: control <at> debbugs.gnu.org Date: Wed, 29 Nov 2023 09:43:02 -0800 Message-ID: <87edg8lal5.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: reassign 66284 guix-patches thanks Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.0 T_SCC_BODY_TEXT_LINE No description available. 1.8 MISSING_SUBJECT Missing Subject: header 0.2 NO_SUBJECT Extra score for no subject X-Debbugs-Envelope-To: control Cc: brennan@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 1.0 (+) reassign 66284 guix-patches thanks
Received: (at control) by debbugs.gnu.org; 10 Sep 2024 16:19:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 10 12:19:31 2024 Received: from localhost ([127.0.0.1]:36699 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1so3aV-0004YI-I9 for submit <at> debbugs.gnu.org; Tue, 10 Sep 2024 12:19:31 -0400 Received: from mail-wm1-f43.google.com ([209.85.128.43]:45476) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <zimon.toutoune@HIDDEN>) id 1so3aT-0004XL-GQ for control <at> debbugs.gnu.org; Tue, 10 Sep 2024 12:19:29 -0400 Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-42ca573fd5aso39476115e9.3 for <control <at> debbugs.gnu.org>; Tue, 10 Sep 2024 09:19:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725985099; x=1726589899; darn=debbugs.gnu.org; h=subject:from:to:message-id:date:from:to:cc:subject:date:message-id :reply-to; bh=Mp7BdRojT9+TqrmhyraL7vFGcd3OT0u3mdlYl1Q4K0E=; b=Bs26mhWzTWEfnTBiLtJulg2oc3xJ0XRN7XFCOf3xXd4bAIFoW9Y6tP3sWiI+cojd83 b/pIwGteHpVpihq3wKye46ehBZjoj4xX1Eo0Psvmo2Rg4IlAPvETYDJv4kthdcTCun5K v5eDFJfYEbu+H4Tq+wJpHI8wpy2CpsXVVLZ25vp9dq077miQ+PybyHYujRnzEOOmnl7t wc2d430TFTWbEUnBd5w6fQvuNE35bQKQ7Ln4rLFBuR74hPl30fgczlNksPG3PS5p2g6r 1LNHEXWY3WOeV/RaE0WlwQvVJXQC/Vjp4h0X8ZI7R36hssAokuIIdByjNjmU3/+jaVlT oqJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725985099; x=1726589899; h=subject:from:to:message-id:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Mp7BdRojT9+TqrmhyraL7vFGcd3OT0u3mdlYl1Q4K0E=; b=OpPPewCoa9rIdq2GTc8VskbHCqW+fq5wOMRw/Kl72uu5VIibOBlBI/d7rvwbkMyLny yFI0s7llhntRplkN/kho7eHMx8RaeJiBHl1lE2b4IokJoPEI58KHHlPkWjpJC5KN6lJC Xmxlt0joABu2hgUwRcZtvo//Qbb3FTkqymbN4V+PM2tewFDZPaazs5ezZRFrOGeBpeu+ OLhRZcyZRctwkmmSYOtBI/gW/YO4ggpvNVbqwXpFJAh0LD7WOukMwT/V2v5AUbhUxMxv fWNI4Nbh/bBEt89BEalPDT+SVprRAPLYOEOOzJfvk369BpbdDLYj3AED0+p1dyFWIXr8 UnZw== X-Gm-Message-State: AOJu0YzlbZXimyl92h210haLRCrVvK/xq4W9a+ek+6l33zmj8mtd8qgY azJ7rP+So+AxY127fy8JnBptVhdOp/XBPX/9qjGyRpCYybBpaOaRZA1RUQ== X-Google-Smtp-Source: AGHT+IG82suoOsHswD1gXtLm3uztbGfEGs3HH4llgnpDUjy4UDWkavJ34maaVcyqhq4C17kt6eJMFw== X-Received: by 2002:a05:600c:4d95:b0:42c:ae76:6cea with SMTP id 5b1f17b1804b1-42cae766f99mr79641625e9.9.1725985098745; Tue, 10 Sep 2024 09:18:18 -0700 (PDT) Received: from lili (roam-nat-fw-prg-194-254-61-40.net.univ-paris-diderot.fr. [194.254.61.40]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-42ca3a3cc31sm142879915e9.24.2024.09.10.09.18.18 for <control <at> debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 09:18:18 -0700 (PDT) Date: Tue, 10 Sep 2024 16:12:12 +0200 Message-Id: <875xr3egxv.fsf@HIDDEN> To: control <at> debbugs.gnu.org From: Simon Tournier <zimon.toutoune@HIDDEN> Subject: control message for bug #66284 X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) retitle 66284 gnu: rust: Introduce rust-next package and various quit
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.