diff mbox series

[bug#48525,core-updates,2/2] gnu: rust: Add profiling support.

Message ID 20210525230350.542603-2-milkeymouse@meme.institute
State New
Headers show
Series [bug#48525,core-updates] gnu: rust: Add profiling support. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Milkey Mouse May 25, 2021, 11:03 p.m. UTC
* gnu/packages/rust.scm (rust-1.52)
[phases]{unpack-profiler-rt, enable-profiling}: New phases.
[native-inputs]{compiler-rt-source}: New input.
---
 gnu/packages/rust.scm | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

Comments

Maxim Cournoyer Jan. 20, 2024, 10:42 p.m. UTC | #1
Hi,

Milkey Mouse <milkeymouse@meme.institute> writes:

> * gnu/packages/rust.scm (rust-1.52)
> [phases]{unpack-profiler-rt, enable-profiling}: New phases.
> [native-inputs]{compiler-rt-source}: New input.
> ---
>  gnu/packages/rust.scm | 24 +++++++++++++++++++++++-
>  1 file changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
> index 6b769bfab2..7b77d791d1 100644
> --- a/gnu/packages/rust.scm
> +++ b/gnu/packages/rust.scm
> @@ -853,7 +853,29 @@ safety and thread safety guarantees.")
>        (inherit base-rust)
>        (inputs
>          (alist-replace "llvm" (list llvm-12)
> -                       (package-inputs base-rust))))))
> +                       (package-inputs base-rust)))
> +      ;; Add compiler-rt-source for libprofiler_builtins (needed for profiling
> +      ;; support), which normally vendors its own copy of compiler-rt.
> +      (native-inputs (cons*
> +                      `("compiler-rt-source" ,(package-source clang-runtime-12))
> +                      (package-native-inputs base-rust)))
> +      (arguments
> +       (substitute-keyword-arguments (package-arguments base-rust)
> +         ((#:phases phases)
> +          `(modify-phases ,phases
> +             (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")
> +                 (invoke "tar" "-xf" (assoc-ref inputs "compiler-rt-source")
> +                   "-C" "src/llvm-project/compiler-rt" "--strip-components=1")
> +                   #t))
> +             (add-after 'enable-codegen-tests 'enable-profiling
> +               (lambda _
> +                 (substitute* "config.toml"
> +                   (("^profiler =.*$") "")
> +                   (("[[]build[]]") "\n[build]\nprofiler = true\n")))))))))))
>  
>  ;;; Note: Only the latest versions of Rust are supported and tested.  The
>  ;;; intermediate rusts are built for bootstrapping purposes and should not

I've ported this change to our current rust (using clang-runtime-15 to
match the llvm version used) and added it to the queued changes I'll
push shortly.
diff mbox series

Patch

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 6b769bfab2..7b77d791d1 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -853,7 +853,29 @@  safety and thread safety guarantees.")
       (inherit base-rust)
       (inputs
         (alist-replace "llvm" (list llvm-12)
-                       (package-inputs base-rust))))))
+                       (package-inputs base-rust)))
+      ;; Add compiler-rt-source for libprofiler_builtins (needed for profiling
+      ;; support), which normally vendors its own copy of compiler-rt.
+      (native-inputs (cons*
+                      `("compiler-rt-source" ,(package-source clang-runtime-12))
+                      (package-native-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (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")
+                 (invoke "tar" "-xf" (assoc-ref inputs "compiler-rt-source")
+                   "-C" "src/llvm-project/compiler-rt" "--strip-components=1")
+                   #t))
+             (add-after 'enable-codegen-tests 'enable-profiling
+               (lambda _
+                 (substitute* "config.toml"
+                   (("^profiler =.*$") "")
+                   (("[[]build[]]") "\n[build]\nprofiler = true\n")))))))))))
 
 ;;; Note: Only the latest versions of Rust are supported and tested.  The
 ;;; intermediate rusts are built for bootstrapping purposes and should not