diff mbox series

[bug#65106] gnu: Add tracy.

Message ID 20230806054011.16970-1-i@dan.games
State New
Headers show
Series [bug#65106] gnu: Add tracy. | expand

Commit Message

dan Aug. 6, 2023, 5:40 a.m. UTC
---
 gnu/packages/profiling.scm | 48 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 47 insertions(+), 1 deletion(-)


base-commit: c4b9f726e3a1889b92a4b14a2af1c25f10798469

Comments

Maxim Cournoyer Sept. 5, 2023, 1:46 p.m. UTC | #1
Hello!

dan <i@dan.games> writes:

> ---
>  gnu/packages/profiling.scm | 48 +++++++++++++++++++++++++++++++++++++-
>  1 file changed, 47 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/profiling.scm b/gnu/packages/profiling.scm
> index 8a1c609669..799b333162 100644
> --- a/gnu/packages/profiling.scm
> +++ b/gnu/packages/profiling.scm
> @@ -2,6 +2,7 @@
>  ;;; Copyright © 2017 Dave Love <fx@gnu.org>
>  ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
>  ;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
> +;;; Copyright © 2023 dan <i@dan.games>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -21,6 +22,7 @@
>  (define-module (gnu packages profiling)
>    #:use-module (guix packages)
>    #:use-module (guix gexp)
> +  #:use-module (guix git-download)
>    #:use-module ((guix licenses) #:prefix license:) ; avoid zlib, expat clashes
>    #:use-module (guix download)
>    #:use-module (guix utils)
> @@ -31,17 +33,20 @@ (define-module (gnu packages profiling)
>    #:use-module (gnu packages bison)
>    #:use-module (gnu packages compression)
>    #:use-module (gnu packages documentation)
> +  #:use-module (gnu packages engineering)
>    #:use-module (gnu packages fabric-management)
>    #:use-module (gnu packages flex)
> +  #:use-module (gnu packages fontutils)
>    #:use-module (gnu packages gawk)
>    #:use-module (gnu packages gcc)
> +  #:use-module (gnu packages gl)
>    #:use-module (gnu packages glib)
>    #:use-module (gnu packages libunwind)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages mpi)
>    #:use-module (gnu packages ncurses)
>    #:use-module (gnu packages perl)
> -  #:use-module (gnu packages perl)
> +  #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages python)
>    #:use-module (gnu packages qt))
>  
> @@ -389,3 +394,44 @@ (define (make-scorep mpi)
>      (license license:cpl1.0)))
>  
>  (define-public scorep-openmpi (make-scorep openmpi))
> +
> +(define-public tracy
> +  (package
> +    (name "tracy")
> +    (version "0.9.1")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/wolfpld/tracy.git")
> +                    (commit (string-append "v" version))))
> +              (sha256
> +               (base32
> +                "1znw1r1c4vrb9vrsr08gcwynpjda8xxmb3923yykpymw2hsm0n9b"))
> +              (file-name (git-file-name "tracy" version))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     (list #:tests? #f ;no test for the profiler
> +           #:make-flags #~(list "LEGACY=1"

Why is LEGACY needed?  A comment should say so.

> +                                (string-append "CC="
> +                                               #$(cc-for-target)))
> +           #:phases #~(modify-phases %standard-phases
> +                        (replace 'configure
> +                          (lambda _
> +                            (chdir "profiler/build/unix")))
> +                        (replace 'install
> +                          (lambda _
> +                            (let ((out (string-append #$output "/bin/tracy"))
> +                                  (bin (string-append #$output "/bin")))
> +                              (mkdir-p bin)
> +                              (copy-file "Tracy-release" out)

You can simplify this by using the 'install-file' procedure, which is in
scope here (it comes from (guix build utils)).  'Tracy-release' is a
weird name for a binary; is this how it's packaged on other system?  I'd
have expected 'tracy' or similar.

> +                              (wrap-program out
> +                                `("LD_LIBRARY_PATH" ":" =
> +                                  (,(string-append #$mesa "/lib")))

Since this is also unusual in Guix (usually RUNPATH is baked in the Elf
by the ld-wrapper script and it just works), it deserves an explanatory
comment too.
diff mbox series

Patch

diff --git a/gnu/packages/profiling.scm b/gnu/packages/profiling.scm
index 8a1c609669..799b333162 100644
--- a/gnu/packages/profiling.scm
+++ b/gnu/packages/profiling.scm
@@ -2,6 +2,7 @@ 
 ;;; Copyright © 2017 Dave Love <fx@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2023 dan <i@dan.games>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@ 
 (define-module (gnu packages profiling)
   #:use-module (guix packages)
   #:use-module (guix gexp)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:) ; avoid zlib, expat clashes
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -31,17 +33,20 @@  (define-module (gnu packages profiling)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages engineering)
   #:use-module (gnu packages fabric-management)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt))
 
@@ -389,3 +394,44 @@  (define (make-scorep mpi)
     (license license:cpl1.0)))
 
 (define-public scorep-openmpi (make-scorep openmpi))
+
+(define-public tracy
+  (package
+    (name "tracy")
+    (version "0.9.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/wolfpld/tracy.git")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1znw1r1c4vrb9vrsr08gcwynpjda8xxmb3923yykpymw2hsm0n9b"))
+              (file-name (git-file-name "tracy" version))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f ;no test for the profiler
+           #:make-flags #~(list "LEGACY=1"
+                                (string-append "CC="
+                                               #$(cc-for-target)))
+           #:phases #~(modify-phases %standard-phases
+                        (replace 'configure
+                          (lambda _
+                            (chdir "profiler/build/unix")))
+                        (replace 'install
+                          (lambda _
+                            (let ((out (string-append #$output "/bin/tracy"))
+                                  (bin (string-append #$output "/bin")))
+                              (mkdir-p bin)
+                              (copy-file "Tracy-release" out)
+                              (wrap-program out
+                                `("LD_LIBRARY_PATH" ":" =
+                                  (,(string-append #$mesa "/lib"))))))))))
+    (inputs (list capstone dbus freetype glfw))
+    (native-inputs (list pkg-config))
+    (home-page "https://github.com/wolfpld/tracy")
+    (synopsis "Frame profiler")
+    (description
+     "A real time, nanosecond resolution, remote telemetry, hybrid frame and
+sampling profiler for games and other applications.")
+    (license license:bsd-3)))