all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#72553] [PATCH rust-team 0/4] Several patches removed from core-updates
@ 2024-08-10  7:09 Christopher Baines
  2024-08-10  7:11 ` [bug#72553] [PATCH 1/4] gnu: rust: Add profiling support Christopher Baines
  0 siblings, 1 reply; 5+ messages in thread
From: Christopher Baines @ 2024-08-10  7:09 UTC (permalink / raw)
  To: 72553

[-- Attachment #1: Type: text/plain, Size: 803 bytes --]

These patches were on core-updates, but they no longer applied when
rebasing the branch, I'm guessing due to changes pushed to master as
part of the recent rust-team branch merge.

I'm not sure if any of these changes need to go on core-updates, at
least rust seems to build for me without these changes so I've removed
them for now. Maybe some changes will be needed on core-updates, but if
not, maybe they can go to rust-team or master as appropriate.


Efraim Flashner (1):
  gnu: rust: Fix building.

Maxim Cournoyer (2):
  gnu: rust: Use gexps; fix enable-profiling phase.
  gnu: rust: Disable token_not_logged test.

Milkey Mouse (1):
  gnu: rust: Add profiling support.

 gnu/packages/rust.scm | 463 ++++++++++++++++++++++--------------------
 1 file changed, 242 insertions(+), 221 deletions(-)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#72553] [PATCH 1/4] gnu: rust: Add profiling support.
  2024-08-10  7:09 [bug#72553] [PATCH rust-team 0/4] Several patches removed from core-updates Christopher Baines
@ 2024-08-10  7:11 ` Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 2/4] gnu: rust: Fix building Christopher Baines
                     ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Christopher Baines @ 2024-08-10  7:11 UTC (permalink / raw)
  To: 72553; +Cc: Efraim Flashner

From: Milkey Mouse <milkeymouse@meme.institute>

* gnu/packages/rust.scm (rust-1.52)
[phases] <unpack-profiler-rt, enable-profiling>: New phases.

Change-Id: Iecb4aef518e52f71ff7f539778bf0341288a3458
---
 gnu/packages/rust.scm | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 12529d2420..4a3ad99e88 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1216,11 +1216,24 @@ (define-public rust
                (lambda* (#:key outputs #:allow-other-keys)
                  (let ((out (assoc-ref outputs "out")))
                    (substitute* "src/bootstrap/src/core/builder.rs"
-                      ((" = rpath.*" all)
-                       (string-append all
-                                      "                "
-                                      "rustflags.arg(\"-Clink-args=-Wl,-rpath="
-                                      out "/lib\");\n"))))))
+                     ((" = rpath.*" all)
+                      (string-append all
+                                     "                "
+                                     "rustflags.arg(\"-Clink-args=-Wl,-rpath="
+                                     out "/lib\");\n"))))))
+             (add-after 'unpack 'unpack-profiler-rt
+               ;; Copy compiler-rt sources to where libprofiler_builtins looks
+               ;; for its vendored copy.  Keep the clang-runtime version in
+               ;; sync with the LLVM version used to build Rust.
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (mkdir-p "src/llvm-project/compiler-rt")
+                 (invoke "tar" "-xf" #$(package-source clang-runtime-15)
+                   "-C" "src/llvm-project/compiler-rt" "--strip-components=1")))
+             (add-after 'enable-codegen-tests 'enable-profiling
+               (lambda _
+                 (substitute* "config.toml"
+                   (("^profiler =.*$") "")
+                   (("\\[build\\]") "\n[build]\nprofiler = true\n"))))
              (add-after 'configure 'add-gdb-to-config
                (lambda* (#:key inputs #:allow-other-keys)
                  (let ((gdb (assoc-ref inputs "gdb")))
@@ -1236,7 +1249,7 @@ (define-public rust
                                            (number->string (parallel-job-count))
                                            "1"))))
                    (invoke "./x.py" job-spec "build"
-                           "library/std"    ;rustc
+                           "library/std" ;rustc
                            "src/tools/cargo"
                            "src/tools/clippy"
                            "src/tools/rust-analyzer"

base-commit: ce055b806eaff8fec329c30ae0deb82c50a86240
-- 
2.45.2





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#72553] [PATCH 2/4] gnu: rust: Fix building.
  2024-08-10  7:11 ` [bug#72553] [PATCH 1/4] gnu: rust: Add profiling support Christopher Baines
@ 2024-08-10  7:11   ` Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 3/4] gnu: rust: Use gexps; fix enable-profiling phase Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 4/4] gnu: rust: Disable token_not_logged test Christopher Baines
  2 siblings, 0 replies; 5+ messages in thread
From: Christopher Baines @ 2024-08-10  7:11 UTC (permalink / raw)
  To: 72553; +Cc: Efraim Flashner

From: Efraim Flashner <efraim@flashner.co.il>

* gnu/packages/rust.scm (rust)[arguments]: Adjust 'unpack-compiler-rt
phase to correctly copy the sources into the target directory.  Adjust
'enable-profiling phase to come after an existing phase.
[native-inputs]: Add clang-runtime-source.

Change-Id: I2e05fa86c4eaf8c2f5f3562d9f7939cd881cde3f
---
 gnu/packages/rust.scm | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 4a3ad99e88..fe503b0d5f 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1223,13 +1223,14 @@ (define-public rust
                                      out "/lib\");\n"))))))
              (add-after 'unpack 'unpack-profiler-rt
                ;; Copy compiler-rt sources to where libprofiler_builtins looks
-               ;; for its vendored copy.  Keep the clang-runtime version in
-               ;; sync with the LLVM version used to build Rust.
+               ;; for its vendored copy.
                (lambda* (#:key inputs #:allow-other-keys)
                  (mkdir-p "src/llvm-project/compiler-rt")
-                 (invoke "tar" "-xf" #$(package-source clang-runtime-15)
-                   "-C" "src/llvm-project/compiler-rt" "--strip-components=1")))
-             (add-after 'enable-codegen-tests 'enable-profiling
+                 (copy-recursively
+                   (string-append (assoc-ref inputs "clang-source")
+                                  "/compiler-rt")
+                   "src/llvm-project/compiler-rt")))
+             (add-after 'configure 'enable-profiling
                (lambda _
                  (substitute* "config.toml"
                    (("^profiler =.*$") "")
@@ -1315,10 +1316,13 @@ (define-public rust
       (inputs
        (modify-inputs (package-inputs base-rust)
                       (prepend curl libffi `(,nghttp2 "lib") zlib)))
-      ;; Add test inputs.
-      (native-inputs (cons* `("gdb" ,gdb/pinned)
-                            `("procps" ,procps)
-                            (package-native-inputs base-rust))))))
+      (native-inputs (cons*
+                      ;; Keep in sync with the llvm used to build rust.
+                      `("clang-source" ,(package-source clang-runtime-15))
+                      ;; Add test inputs.
+                      `("gdb" ,gdb/pinned)
+                      `("procps" ,procps)
+                      (package-native-inputs base-rust))))))
 
 (define*-public (make-rust-sysroot target)
   (make-rust-sysroot/implementation target rust))
-- 
2.45.2





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#72553] [PATCH 3/4] gnu: rust: Use gexps; fix enable-profiling phase.
  2024-08-10  7:11 ` [bug#72553] [PATCH 1/4] gnu: rust: Add profiling support Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 2/4] gnu: rust: Fix building Christopher Baines
@ 2024-08-10  7:11   ` Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 4/4] gnu: rust: Disable token_not_logged test Christopher Baines
  2 siblings, 0 replies; 5+ messages in thread
From: Christopher Baines @ 2024-08-10  7:11 UTC (permalink / raw)
  To: 72553; +Cc: Efraim Flashner

From: Maxim Cournoyer <maxim.cournoyer@gmail.com>

This is a follow up commit to 8219ab0443129c71eef83ee4bd3aae0a0a12b6f9, which
had a few problems.

* gnu/packages/rust.scm (rust) [arguments]: Use gexps.  Replace
unpack-profiler-rt phase with copy-compiler-rt-source.  Rename
the enable-profiling phase to enable-profiler; streamline substitute
regexp/replacement.

Change-Id: I058de60f25c6a96cf4bbcd3a7dd4a682341e2ac5
---
 gnu/packages/rust.scm | 493 +++++++++++++++++++++---------------------
 1 file changed, 246 insertions(+), 247 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index fe503b0d5f..13e57cd3f5 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2020, 2021 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 (unmatched parenthesis <paren@disroot.org>
 ;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2022 Jim Newsome <jnewsome@torproject.org>
@@ -1072,257 +1072,256 @@ (define-public rust
          (strip-keyword-arguments '(#:tests?)
            (package-arguments base-rust))
          ((#: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/git.rs"
-                   ,@(make-ignore-test-list
-                      '("fn fetch_downloads_with_git2_first_")))))
-             (add-after 'unpack 'disable-tests-requiring-mercurial
-               (lambda _
-                 (with-directory-excursion "src/tools/cargo/tests/testsuite/cargo_init"
-                   (substitute* '("mercurial_autodetect/mod.rs"
-                                  "simple_hg_ignore_exists/mod.rs")
-                     ,@(make-ignore-test-list
-                        '("fn case"))))))
-             (add-after 'unpack 'disable-tests-using-cargo-publish
-               (lambda _
-                 (with-directory-excursion "src/tools/cargo/tests/testsuite"
-                   (substitute* "alt_registry.rs"
-                     ,@(make-ignore-test-list
-                        '("fn warn_for_unused_fields")))
-                   (substitute* '("cargo_add/locked_unchanged/mod.rs"
-                                  "cargo_add/lockfile_updated/mod.rs"
-                                  "cargo_remove/update_lock_file/mod.rs")
-                     ,@(make-ignore-test-list
-                        '("fn case")))
-                   (substitute* "git_shallow.rs"
-                     ,@(make-ignore-test-list
-                        '("fn gitoxide_clones_git_dependency_with_shallow_protocol_and_git2_is_used_for_followup_fetches"
-                          "fn gitoxide_clones_registry_with_shallow_protocol_and_aborts_and_updates_again"
-                          "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_fetch_maintains_shallowness"
-                          "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_with_git2_fetch"
-                          "fn gitoxide_clones_registry_without_shallow_protocol_and_follow_up_fetch_uses_shallowness"
-                          "fn gitoxide_shallow_clone_followed_by_non_shallow_update"
-                          "fn gitoxide_clones_shallow_two_revs_same_deps"
-                          "fn gitoxide_git_dependencies_switch_from_branch_to_rev"
-                          "fn shallow_deps_work_with_revisions_and_branches_mixed_on_same_dependency")))
-                   (substitute* "install.rs"
-                     ,@(make-ignore-test-list
-                        '("fn failed_install_retains_temp_directory")))
-                   (substitute* "offline.rs"
-                     ,@(make-ignore-test-list
-                        '("fn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep")))
-                   (substitute* "patch.rs"
-                     ,@(make-ignore-test-list
-                        '("fn gitoxide_clones_shallow_old_git_patch"))))))
-             ,@(if (target-riscv64?)
-                   ;; Keep this phase separate so it can be adjusted without needing
-                   ;; to adjust the skipped tests on other architectures.
-                   `((add-after 'unpack 'disable-tests-broken-on-riscv64
-                       (lambda _
-                         (with-directory-excursion "src/tools/cargo/tests/testsuite"
-                           (substitute* "build.rs"
-                             ,@(make-ignore-test-list
-                                 '("fn uplift_dwp_of_bin_on_linux")))
-                           (substitute* "cache_lock.rs"
-                             ,@(make-ignore-test-list
-                                 '("fn multiple_download")))))))
-                   `())
-             (add-after 'unpack 'disable-tests-broken-on-aarch64
-               (lambda _
-                 (with-directory-excursion "src/tools/cargo/tests/testsuite/"
-                   (substitute* "build_script_extra_link_arg.rs"
-                     ,@(make-ignore-test-list
-                        '("fn build_script_extra_link_arg_bin_single")))
-                   (substitute* "build_script.rs"
-                     ,@(make-ignore-test-list
-                        '("fn env_test")))
-                   (substitute* "collisions.rs"
-                     ,@(make-ignore-test-list
-                        '("fn collision_doc_profile_split")))
-                   (substitute* "concurrent.rs"
-                     ,@(make-ignore-test-list
-                        '("fn no_deadlock_with_git_dependencies")))
-                   (substitute* "features2.rs"
-                     ,@(make-ignore-test-list
-                        '("fn dep_with_optional_host_deps_activated"))))))
-             (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")))
-             (add-after 'unpack 'patch-process-tests
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (let ((bash (assoc-ref inputs "bash")))
-                   (with-directory-excursion "library/std/src"
-                     (substitute* "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* "sys/unix/process/process_common/tests.rs"
-                       ;; We can't use make-ignore-test-list because we will get
-                       ;; build errors due to the double [ignore] block.
-                       (("target_arch = \"arm\"" arm)
-                        (string-append "target_os = \"linux\",\n"
-                                       "        " arm)))))))
-             (add-after 'unpack 'disable-interrupt-tests
-               (lambda _
-                 ;; This test hangs in the build container; disable it.
-                 (substitute* "src/tools/cargo/tests/testsuite/freshness.rs"
-                   ,@(make-ignore-test-list
-                      '("fn linking_interrupted")))
-                 ;; Likewise for the ctrl_c_kills_everyone test.
-                 (substitute* "src/tools/cargo/tests/testsuite/death.rs"
-                   ,@(make-ignore-test-list
-                      '("fn 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/src/core/builder.rs"
-                     ((" = rpath.*" all)
-                      (string-append all
-                                     "                "
-                                     "rustflags.arg(\"-Clink-args=-Wl,-rpath="
-                                     out "/lib\");\n"))))))
-             (add-after 'unpack 'unpack-profiler-rt
-               ;; Copy compiler-rt sources to where libprofiler_builtins looks
-               ;; for its vendored copy.
-               (lambda* (#:key inputs #:allow-other-keys)
-                 (mkdir-p "src/llvm-project/compiler-rt")
-                 (copy-recursively
-                   (string-append (assoc-ref inputs "clang-source")
-                                  "/compiler-rt")
-                   "src/llvm-project/compiler-rt")))
-             (add-after 'configure 'enable-profiling
-               (lambda _
-                 (substitute* "config.toml"
-                   (("^profiler =.*$") "")
-                   (("\\[build\\]") "\n[build]\nprofiler = true\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 more tools.
-               (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/clippy"
-                           "src/tools/rust-analyzer"
-                           "src/tools/rustfmt"))))
-             (replace 'check
-               ;; Phase overridden to also test more tools.
-               (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/clippy"
-                             "src/tools/rust-analyzer"
-                             "src/tools/rustfmt")))))
-             (replace 'install
-               ;; Phase overridden to also install more tools.
-               (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 'tools' output.
-                   (("prefix = \"[^\"]*\"")
-                    (format #f "prefix = ~s" (assoc-ref outputs "tools"))))
-                 (invoke "./x.py" "install" "clippy")
-                 (invoke "./x.py" "install" "rust-analyzer")
-                 (invoke "./x.py" "install" "rustfmt")))
-             (add-after 'install 'install-rust-src
-               (lambda* (#:key outputs #:allow-other-keys)
-                 (let ((out (assoc-ref outputs "rust-src"))
-                       (dest "/lib/rustlib/src/rust"))
-                   (mkdir-p (string-append out dest))
-                   (copy-recursively "library" (string-append out dest "/library"))
-                   (copy-recursively "src" (string-append out dest "/src")))))
-             (add-after 'install 'remove-uninstall-script
-               (lambda* (#:key outputs #:allow-other-keys)
-                 ;; This script has no use on Guix
-                 ;; and it retains a reference to the host's bash.
-                 (delete-file (string-append (assoc-ref outputs "out")
-                                             "/lib/rustlib/uninstall.sh"))))
-             (add-after 'install-rust-src 'wrap-rust-analyzer
-               (lambda* (#:key outputs #:allow-other-keys)
-                 (let ((bin (string-append (assoc-ref outputs "tools") "/bin")))
-                   (rename-file (string-append bin "/rust-analyzer")
-                                (string-append bin "/.rust-analyzer-real"))
-                   (call-with-output-file (string-append bin "/rust-analyzer")
-                     (lambda (port)
-                       (format port "#!~a
+          #~(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/git.rs"
+                    #$@(make-ignore-test-list
+                        '("fn fetch_downloads_with_git2_first_")))))
+              (add-after 'unpack 'disable-tests-requiring-mercurial
+                (lambda _
+                  (with-directory-excursion "src/tools/cargo/tests/testsuite/cargo_init"
+                    (substitute* '("mercurial_autodetect/mod.rs"
+                                   "simple_hg_ignore_exists/mod.rs")
+                      #$@(make-ignore-test-list
+                          '("fn case"))))))
+              (add-after 'unpack 'disable-tests-using-cargo-publish
+                (lambda _
+                  (with-directory-excursion "src/tools/cargo/tests/testsuite"
+                    (substitute* "alt_registry.rs"
+                      #$@(make-ignore-test-list
+                          '("fn warn_for_unused_fields")))
+                    (substitute* '("cargo_add/locked_unchanged/mod.rs"
+                                   "cargo_add/lockfile_updated/mod.rs"
+                                   "cargo_remove/update_lock_file/mod.rs")
+                      #$@(make-ignore-test-list
+                          '("fn case")))
+                    (substitute* "git_shallow.rs"
+                      #$@(make-ignore-test-list
+                          '("fn gitoxide_clones_git_dependency_with_shallow_protocol_and_git2_is_used_for_followup_fetches"
+                            "fn gitoxide_clones_registry_with_shallow_protocol_and_aborts_and_updates_again"
+                            "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_fetch_maintains_shallowness"
+                            "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_with_git2_fetch"
+                            "fn gitoxide_clones_registry_without_shallow_protocol_and_follow_up_fetch_uses_shallowness"
+                            "fn gitoxide_shallow_clone_followed_by_non_shallow_update"
+                            "fn gitoxide_clones_shallow_two_revs_same_deps"
+                            "fn gitoxide_git_dependencies_switch_from_branch_to_rev"
+                            "fn shallow_deps_work_with_revisions_and_branches_mixed_on_same_dependency")))
+                    (substitute* "install.rs"
+                      #$@(make-ignore-test-list
+                          '("fn failed_install_retains_temp_directory")))
+                    (substitute* "offline.rs"
+                      #$@(make-ignore-test-list
+                          '("fn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep")))
+                    (substitute* "patch.rs"
+                      #$@(make-ignore-test-list
+                          '("fn gitoxide_clones_shallow_old_git_patch"))))))
+              #$@(if (target-riscv64?)
+                     ;; Keep this phase separate so it can be adjusted without needing
+                     ;; to adjust the skipped tests on other architectures.
+                     #~((add-after 'unpack 'disable-tests-broken-on-riscv64
+                          (lambda _
+                            (with-directory-excursion "src/tools/cargo/tests/testsuite"
+                              (substitute* "build.rs"
+                                #$@(make-ignore-test-list
+                                    '("fn uplift_dwp_of_bin_on_linux")))
+                              (substitute* "cache_lock.rs"
+                                #$@(make-ignore-test-list
+                                    '("fn multiple_download")))))))
+                     #~())
+              (add-after 'unpack 'disable-tests-broken-on-aarch64
+                (lambda _
+                  (with-directory-excursion "src/tools/cargo/tests/testsuite/"
+                    (substitute* "build_script_extra_link_arg.rs"
+                      #$@(make-ignore-test-list
+                          '("fn build_script_extra_link_arg_bin_single")))
+                    (substitute* "build_script.rs"
+                      #$@(make-ignore-test-list
+                          '("fn env_test")))
+                    (substitute* "collisions.rs"
+                      #$@(make-ignore-test-list
+                          '("fn collision_doc_profile_split")))
+                    (substitute* "concurrent.rs"
+                      #$@(make-ignore-test-list
+                          '("fn no_deadlock_with_git_dependencies")))
+                    (substitute* "features2.rs"
+                      #$@(make-ignore-test-list
+                          '("fn dep_with_optional_host_deps_activated"))))))
+              (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")))
+              (add-after 'unpack 'patch-process-tests
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (let ((bash (assoc-ref inputs "bash")))
+                    (with-directory-excursion "library/std/src"
+                      (substitute* "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* "sys/unix/process/process_common/tests.rs"
+                        ;; We can't use make-ignore-test-list because we will get
+                        ;; build errors due to the double [ignore] block.
+                        (("target_arch = \"arm\"" arm)
+                         (string-append "target_os = \"linux\",\n"
+                                        "        " arm)))))))
+              (add-after 'unpack 'disable-interrupt-tests
+                (lambda _
+                  ;; This test hangs in the build container; disable it.
+                  (substitute* "src/tools/cargo/tests/testsuite/freshness.rs"
+                    #$@(make-ignore-test-list
+                        '("fn linking_interrupted")))
+                  ;; Likewise for the ctrl_c_kills_everyone test.
+                  (substitute* "src/tools/cargo/tests/testsuite/death.rs"
+                    #$@(make-ignore-test-list
+                        '("fn 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/src/core/builder.rs"
+                      ((" = rpath.*" all)
+                       (string-append all
+                                      "                "
+                                      "rustflags.arg(\"-Clink-args=-Wl,-rpath="
+                                      out "/lib\");\n"))))))
+              (add-after 'unpack 'copy-compiler-rt-source
+                ;; Note: Keep the clang-runtime version in sync with the LLVM
+                ;; version used to build Rust.
+                (lambda _
+                  (let ((compiler-rt "src/llvm-project/compiler-rt"))
+                    (mkdir-p compiler-rt)
+                    (copy-recursively
+                     (string-append #$(package-source clang-runtime-15)
+                                    "/compiler-rt")
+                     compiler-rt))))
+              (add-after 'configure 'enable-profiler
+                (lambda _
+                  (substitute* "config.toml"
+                    (("^profiler =.*") "")
+                    (("\\[build]")
+                     "[build]\nprofiler = true\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 more tools.
+                (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/clippy"
+                            "src/tools/rust-analyzer"
+                            "src/tools/rustfmt"))))
+              (replace 'check
+                ;; Phase overridden to also test more tools.
+                (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/clippy"
+                              "src/tools/rust-analyzer"
+                              "src/tools/rustfmt")))))
+              (replace 'install
+                ;; Phase overridden to also install more tools.
+                (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 'tools' output.
+                    (("prefix = \"[^\"]*\"")
+                     (format #f "prefix = ~s" (assoc-ref outputs "tools"))))
+                  (invoke "./x.py" "install" "clippy")
+                  (invoke "./x.py" "install" "rust-analyzer")
+                  (invoke "./x.py" "install" "rustfmt")))
+              (add-after 'install 'install-rust-src
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (let ((out (assoc-ref outputs "rust-src"))
+                        (dest "/lib/rustlib/src/rust"))
+                    (mkdir-p (string-append out dest))
+                    (copy-recursively "library" (string-append out dest "/library"))
+                    (copy-recursively "src" (string-append out dest "/src")))))
+              (add-after 'install 'remove-uninstall-script
+                (lambda* (#:key outputs #:allow-other-keys)
+                  ;; This script has no use on Guix
+                  ;; and it retains a reference to the host's bash.
+                  (delete-file (string-append (assoc-ref outputs "out")
+                                              "/lib/rustlib/uninstall.sh"))))
+              (add-after 'install-rust-src 'wrap-rust-analyzer
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (let ((bin (string-append (assoc-ref outputs "tools") "/bin")))
+                    (rename-file (string-append bin "/rust-analyzer")
+                                 (string-append bin "/.rust-analyzer-real"))
+                    (call-with-output-file (string-append bin "/rust-analyzer")
+                      (lambda (port)
+                        (format port "#!~a
 if test -z \"${RUST_SRC_PATH}\";then export RUST_SRC_PATH=~S;fi;
 exec -a \"$0\" \"~a\" \"$@\""
-                               (which "bash")
-                               (string-append (assoc-ref outputs "rust-src")
-                                              "/lib/rustlib/src/rust/library")
-                               (string-append bin "/.rust-analyzer-real"))))
-                   (chmod (string-append bin "/rust-analyzer") #o755))))))))
+                                (which "bash")
+                                (string-append (assoc-ref outputs "rust-src")
+                                               "/lib/rustlib/src/rust/library")
+                                (string-append bin "/.rust-analyzer-real"))))
+                    (chmod (string-append bin "/rust-analyzer") #o755))))))))
       (inputs
        (modify-inputs (package-inputs base-rust)
                       (prepend curl libffi `(,nghttp2 "lib") zlib)))
-      (native-inputs (cons*
-                      ;; Keep in sync with the llvm used to build rust.
-                      `("clang-source" ,(package-source clang-runtime-15))
-                      ;; Add test inputs.
-                      `("gdb" ,gdb/pinned)
-                      `("procps" ,procps)
-                      (package-native-inputs base-rust))))))
+      ;; Add test inputs.
+      (native-inputs (cons* `("gdb" ,gdb/pinned)
+                            `("procps" ,procps)
+                            (package-native-inputs base-rust))))))
 
 (define*-public (make-rust-sysroot target)
   (make-rust-sysroot/implementation target rust))
-- 
2.45.2





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#72553] [PATCH 4/4] gnu: rust: Disable token_not_logged test.
  2024-08-10  7:11 ` [bug#72553] [PATCH 1/4] gnu: rust: Add profiling support Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 2/4] gnu: rust: Fix building Christopher Baines
  2024-08-10  7:11   ` [bug#72553] [PATCH 3/4] gnu: rust: Use gexps; fix enable-profiling phase Christopher Baines
@ 2024-08-10  7:11   ` Christopher Baines
  2 siblings, 0 replies; 5+ messages in thread
From: Christopher Baines @ 2024-08-10  7:11 UTC (permalink / raw)
  To: 72553; +Cc: Efraim Flashner

From: Maxim Cournoyer <maxim.cournoyer@gmail.com>

* gnu/packages/rust.scm (rust) [arguments]: Disable an extra test in the
disable-tests-using-cargo-publish phase.

Change-Id: I7d5d9603cfeeffd95f565b5bda455e28022fa745
---
 gnu/packages/rust.scm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 13e57cd3f5..1d89cd212c 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1100,11 +1100,16 @@ (define-public rust
                       #$@(make-ignore-test-list
                           '("fn case"))))))
               (add-after 'unpack 'disable-tests-using-cargo-publish
+                ;; The publish procedure doesn't work in the build environment
+                ;; (see: https://github.com/rust-lang/rust/issues/120340).
                 (lambda _
                   (with-directory-excursion "src/tools/cargo/tests/testsuite"
                     (substitute* "alt_registry.rs"
                       #$@(make-ignore-test-list
                           '("fn warn_for_unused_fields")))
+                    (substitute* "registry_auth.rs"
+                      #$@(make-ignore-test-list
+                          '("fn token_not_logged")))
                     (substitute* '("cargo_add/locked_unchanged/mod.rs"
                                    "cargo_add/lockfile_updated/mod.rs"
                                    "cargo_remove/update_lock_file/mod.rs")
-- 
2.45.2





^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-08-10  7:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-10  7:09 [bug#72553] [PATCH rust-team 0/4] Several patches removed from core-updates Christopher Baines
2024-08-10  7:11 ` [bug#72553] [PATCH 1/4] gnu: rust: Add profiling support Christopher Baines
2024-08-10  7:11   ` [bug#72553] [PATCH 2/4] gnu: rust: Fix building Christopher Baines
2024-08-10  7:11   ` [bug#72553] [PATCH 3/4] gnu: rust: Use gexps; fix enable-profiling phase Christopher Baines
2024-08-10  7:11   ` [bug#72553] [PATCH 4/4] gnu: rust: Disable token_not_logged test Christopher Baines

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.