Subject: [bug#53015] [PATCH v3] Add mangohud.

From: Maxim Cournoyer <[email-masked]>
Date: Sat, 26 Feb 2022 21:31:55 -0500

Hi John,

John Kehayias <[email-masked]> writes:

>>
>> Attached is an update to this patch series, reduced to just one
>> patch. This relies on the hwdata package added in
>> https://issues.guix.gnu.org/54069#2 and the update to imgui I sent
>> in https://issues.guix.gnu.org/54132
>>
>> With that, mangohud just uses imgui-1.86 (the newer version has a
>> breaking change). The modifications to the meson.build is handled in
>> a build phase substitute* rather than a patch, as it needs the imgui
>> location.
>>
>> I've checked this builds and works. Let me know if any other
>> modifications are needed, other than the hwdata and imgui fixes
>> referenced.
>>
>
> Attached is a revised patch to use the new hwdata package with inputs,
> so the correct input is now `(,hwdata "pci"). I checked that it
> applied and built on master.
>
> John

I took the freedom to make some cosmetic adjustments:

1. ordering of inputs
2. ordering of fields (match the conventions, such as the 'home-page'
field appearing before the synopsis)
3. indent some longer lines so they fit under 80 columns
4. normalize paths passed to search-input-file by stripping lead '/'.

like so:

--8<---------------cut here---------------start------------->8---
modified   gnu/packages/graphics.scm
@@ -890,8 +890,7 @@ (define-public mangohud
               "-Dwith_xnvctrl=disabled"
               "-Dappend_libdir_mangohud=false"
               (string-append "-Dvulkan_datadir="
-                             #$(this-package-input "vulkan-headers")
-                             "/share"))
+                             #$(this-package-input "vulkan-headers") "/share"))
       #:phases
       #~(modify-phases %standard-phases
           ;; Mangohud tries to build the imgui library as a meson submodule,
@@ -902,9 +901,10 @@ (define-public mangohud
                 (("dearimgui_sp = .*")
                  "")
                 (("dearimgui_sp.get_variable\\('imgui_dep'\\)")
-                 (string-append "declare_dependency(dependencies: "
-                                "cpp.find_library('imgui'), include_directories: '"
-                                #$(this-package-input "imgui") "/include/imgui')")))))
+                 (string-append
+                  "declare_dependency(dependencies: "
+                  "cpp.find_library('imgui'), include_directories: '"
+                  #$(this-package-input "imgui") "/include/imgui')")))))
           (add-after 'unpack 'patch-paths
             (lambda* (#:key inputs #:allow-other-keys)
               (substitute* "src/meson.build"
@@ -912,15 +912,15 @@ (define-public mangohud
                  "lib"))
               (substitute* "src/loaders/loader_libdrm.cpp"
                 (("libdrm.so.2")
-                 (search-input-file inputs "/lib/libdrm.so.2"))
+                 (search-input-file inputs "lib/libdrm.so.2"))
                 (("libdrm_amdgpu.so.1")
-                 (search-input-file inputs "/lib/libdrm_amdgpu.so.1")))
+                 (search-input-file inputs "lib/libdrm_amdgpu.so.1")))
               (substitute* "src/overlay.cpp"
                 (("glxinfo")
-                 (search-input-file inputs "/bin/glxinfo")))
+                 (search-input-file inputs "bin/glxinfo")))
               (substitute* "src/loaders/loader_x11.cpp"
                 (("libX11.so.6")
-                 (search-input-file inputs "/lib/libX11.so.6")))
+                 (search-input-file inputs "lib/libX11.so.6")))
               (substitute* "src/pci_ids.cpp"
                 (("/usr/share/hwdata/pci.ids")
                  (search-input-file inputs "share/hwdata/pci.ids")))
@@ -932,21 +932,19 @@ (define-public mangohud
            glslang
            `(,hwdata "pci")
            imgui-1.86
-           mesa
-           mesa-utils
            libdrm
            libx11
+           mesa
+           mesa-utils
            python-mako
            spdlog
-           vulkan-loader
-           vulkan-headers))
-    (native-inputs
-     (list pkg-config python))
-    (synopsis "Vulkan and OpenGL overlay for monitoring performance and hardware")
-    (description
-     "MangoHud is a Vulkan and OpenGL overlay for monitoring frames per second (FPS),
-temperatures, CPU/GPU load and more.")
+           vulkan-headers
+           vulkan-loader))
+    (native-inputs (list pkg-config python))
     (home-page "https://github.com/flightlessmango/MangoHud/")
+    (synopsis "Vulkan and OpenGL overlay for monitoring performance and hardware")
+    (description "MangoHud is a Vulkan and OpenGL overlay for monitoring
+frames per second (FPS), temperatures, CPU/GPU load and more.")
     (license license:expat)))
--8<---------------cut here---------------end--------------->8---

And pushed 31ecd80db7.

Thank you!

Closing.

Maxim