Package: guix-patches;
Reported by: Milkey Mouse <milkeymouse <at> meme.institute>
Date: Wed, 19 May 2021 18:39:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Cc: tracker <at> debbugs.gnu.org Subject: bug#48525: closed ([PATCH core-updates] gnu: rust: Add profiling support.) Date: Sat, 20 Jan 2024 22:44:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Sat, 20 Jan 2024 17:42:51 -0500 with message-id <871qabd3tg.fsf_-_ <at> gmail.com> and subject line Re: bug#48525: [PATCH core-updates] gnu: rust: Add profiling support. has caused the debbugs.gnu.org bug report #48525, regarding [PATCH core-updates] gnu: rust: Add profiling support. to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 48525: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=48525 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Milkey Mouse <milkeymouse <at> meme.institute> To: guix-patches <at> gnu.org Subject: [PATCH core-updates] gnu: rust: Add profiling support. Date: Wed, 19 May 2021 11:37:49 -0700* gnu/packages/rust.scm (rust-1.49)[source]: Add patch. [phases]{unpack-profiler-rt, enable-profiling}: New phases. [native-inputs]{compiler-rt-source}: New input. (rust-1.50)[source]: Remove "rust-1.49-llvm-cov-no-debug.patch". * gnu/packages/patches/rust-1.49-llvm-cov-no-debug.patch: New file. * gnu/local.mk (dist_patch_DATA): Add patch. --- gnu/local.mk | 1 + .../patches/rust-1.49-llvm-cov-no-debug.patch | 27 +++++++++++++++ gnu/packages/rust.scm | 33 +++++++++++++++++-- 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/rust-1.49-llvm-cov-no-debug.patch diff --git a/gnu/local.mk b/gnu/local.mk index add01cf6d2..9dbf568d0c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1631,6 +1631,7 @@ dist_patch_DATA = \ %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \ %D%/packages/patches/rnp-unbundle-googletest.patch \ %D%/packages/patches/ruby-sanitize-system-libxml.patch \ + %D%/packages/patches/rust-1.49-llvm-cov-no-debug.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \ diff --git a/gnu/packages/patches/rust-1.49-llvm-cov-no-debug.patch b/gnu/packages/patches/rust-1.49-llvm-cov-no-debug.patch new file mode 100644 index 0000000000..b72402a9a7 --- /dev/null +++ b/gnu/packages/patches/rust-1.49-llvm-cov-no-debug.patch @@ -0,0 +1,27 @@ +cherry-picked from commit fe56d267cae, in master as of 1.50 +diff --git a/src/test/run-make-fulldeps/coverage-reports-base/Makefile b/src/test/run-make-fulldeps/coverage-reports-base/Makefile +index b175768e199..1e2aa056e40 100644 +--- a/src/test/run-make-fulldeps/coverage-reports-base/Makefile ++++ b/src/test/run-make-fulldeps/coverage-reports-base/Makefile +@@ -13,15 +13,13 @@ + BASEDIR=../coverage-reports-base + SOURCEDIR=../coverage + +-ifeq ($(UNAME),Darwin) +-# FIXME(richkadel): It appears that --debug is not available on MacOS even when not running +-# under CI. +-NO_LLVM_ASSERTIONS=1 +-endif +- + # The `llvm-cov show` flag `--debug`, used to generate the `counters` output files, is only enabled +-# if LLVM assertions are enabled. Some CI builds disable debug assertions. +-ifndef NO_LLVM_ASSERTIONS ++# if LLVM assertions are enabled. Requires Rust config `llvm/optimize` and not ++# `llvm/release_debuginfo`. Note that some CI builds disable debug assertions (by setting ++# `NO_LLVM_ASSERTIONS=1`), so it is not OK to fail the test, but `bless`ed test results cannot be ++# generated without debug assertions. ++LLVM_COV_DEBUG := $(shell "$(LLVM_BIN_DIR)"/llvm-cov show --debug 2>&1 | grep -q "Unknown command line argument '--debug'"; echo $$?) ++ifeq ($(LLVM_COV_DEBUG), 1) + DEBUG_FLAG=--debug + endif + diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 636420e25d..72355fa789 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -730,6 +730,10 @@ safety and thread safety guarantees.") "0yf7kll517398dgqsr7m3gldzj0iwsp3ggzxrayckpqzvylfy2mm"))) (package (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (patches (search-patches "rust-1.49-llvm-cov-no-debug.patch")))) (outputs (cons "doc" (package-outputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) @@ -817,11 +821,24 @@ safety and thread safety guarantees.") ((file) file)) (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone")))) + (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 'configure 'enable-docs (lambda _ (substitute* "config.toml" (("docs = false") "docs = true")))) + (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"))) @@ -829,17 +846,27 @@ safety and thread safety guarantees.") (("^python =.*" all) (string-append all "gdb = \"" gdb "/bin/gdb\"\n")))))))))) - ;; Add test inputs. (native-inputs (cons* + ;; Add test inputs. ;; The tests fail when using GDB 10 (see: ;; https://github.com/rust-lang/rust/issues/79009). `("gdb" ,gdb-9.2) `("procps" ,procps) + ;; Add compiler-rt-source for libprofiler_builtins, + ;; which typically vendors compiler-rt. Needed for PGO. + `("compiler-rt-source" ,(package-source clang-runtime-11)) (package-native-inputs base-rust)))))) (define-public rust-1.50 - (rust-bootstrapped-package rust-1.49 "1.50.0" - "0pjs7j62maiyvkmhp9zrxl528g2n0fphp4rq6ap7aqdv0a6qz5wm")) + (let ((base-rust (rust-bootstrapped-package + rust-1.49 "1.50.0" + "0pjs7j62maiyvkmhp9zrxl528g2n0fphp4rq6ap7aqdv0a6qz5wm"))) + (package + (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (patches '())))))) (define-public rust-1.51 (rust-bootstrapped-package rust-1.50 "1.51.0" -- 2.31.1
[Message part 3 (message/rfc822, inline)]
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: Milkey Mouse <milkeymouse <at> meme.institute> Cc: Marius Bakke <mbakke <at> fastmail.com>, 48525-done <at> debbugs.gnu.org Subject: Re: bug#48525: [PATCH core-updates] gnu: rust: Add profiling support. Date: Sat, 20 Jan 2024 17:42:51 -0500Hi, Milkey Mouse <milkeymouse <at> 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. -- Thanks, Maxim
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.