gnu: rust: Add profiling support.

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

Change-Id: Iecb4aef518e52f71ff7f539778bf0341288a3458
This commit is contained in:
Milkey Mouse 2024-01-20 17:39:53 -05:00 committed by Ludovic Courtès
parent af85c38b01
commit 3a930659a4
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1225,11 +1225,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")))
@ -1245,7 +1258,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"