From 5f5b2ed0af783be57d160a01fa1208e7deda1455 Mon Sep 17 00:00:00 2001 From: Greg Beard Date: Wed, 22 Mar 2023 07:28:46 +0000 Subject: [PATCH] New package: MangoHud-nvidia-0.6.9 --- srcpkgs/MangoHud-nvidia/files/musl.patch | 13 ++ ...libdir_mangohud-handling-remove-ld_l.patch | 142 ++++++++++++++++++ srcpkgs/MangoHud-nvidia/template | 33 ++++ 3 files changed, 188 insertions(+) create mode 100644 srcpkgs/MangoHud-nvidia/files/musl.patch create mode 100644 srcpkgs/MangoHud-nvidia/patches/0001-meson-unwrap-ld_libdir_mangohud-handling-remove-ld_l.patch create mode 100644 srcpkgs/MangoHud-nvidia/template diff --git a/srcpkgs/MangoHud-nvidia/files/musl.patch b/srcpkgs/MangoHud-nvidia/files/musl.patch new file mode 100644 index 000000000000..71e58f83dc82 --- /dev/null +++ b/srcpkgs/MangoHud-nvidia/files/musl.patch @@ -0,0 +1,13 @@ +--- a/src/meson.build 2021-06-11 22:12:53.000000000 +0200 ++++ b/src/meson.build 2021-06-14 23:32:49.677413454 +0200 +@@ -3,8 +3,8 @@ + # Needs prefix for configure_file() + if get_option('append_libdir_mangohud') + libdir_mangohud = join_paths(get_option('libdir'), 'mangohud') +- ld_libdir_mangohud = get_option('prefix') + '/\$LIB/mangohud/' ++ ld_libdir_mangohud = join_paths(get_option('prefix') ,get_option('libdir'), 'mangohud') + else + libdir_mangohud = get_option('libdir') +- ld_libdir_mangohud = get_option('prefix') + '/\$LIB/' ++ ld_libdir_mangohud = join_paths(get_option('prefix') ,get_option('libdir')) + endif diff --git a/srcpkgs/MangoHud-nvidia/patches/0001-meson-unwrap-ld_libdir_mangohud-handling-remove-ld_l.patch b/srcpkgs/MangoHud-nvidia/patches/0001-meson-unwrap-ld_libdir_mangohud-handling-remove-ld_l.patch new file mode 100644 index 000000000000..05b18d847ea3 --- /dev/null +++ b/srcpkgs/MangoHud-nvidia/patches/0001-meson-unwrap-ld_libdir_mangohud-handling-remove-ld_l.patch @@ -0,0 +1,142 @@ +This reverts commit f47f777e26825b23d191f7a28d0c2404750e4207. + +There seems to be an issue using MangoHud with Steam (and other apps) +when the absolute library path is used in LD_PRELOAD. This patch +reverts back to the 0.6.8 behaviour. + +diff --git a/bin/mangohud.in b/bin/mangohud.in +--- a/bin/mangohud.in ++++ b/bin/mangohud.in +@@ -8,16 +8,21 @@ if [ "$#" -eq 0 ]; then + exit 1 + fi + +-MANGOHUD_LIB_NAME="@ld_libdir_mangohud@libMangoHud.so" +- + if [ "$1" = "--dlsym" ]; then + MANGOHUD_DLSYM=1 +- MANGOHUD_LIB_NAME="@ld_libdir_mangohud@libMangoHud_dlsym.so:${MANGOHUD_LIB_NAME}" + shift + fi + ++MANGOHUD_LIB_NAME="@ld_libdir_mangohud_abs@libMangoHud.so" ++ ++if [ "$MANGOHUD_DLSYM" = "1" ]; then ++ MANGOHUD_LIB_NAME="@ld_libdir_mangohud_abs@libMangoHud_dlsym.so:${MANGOHUD_LIB_NAME}" ++fi ++ + # Preload using the plain filenames of the libs, the dynamic linker will +-# figure out whether the 32 or 64 bit version should be used +-LD_PRELOAD="${LD_PRELOAD:+$LD_PRELOAD:}${MANGOHUD_LIB_NAME}" ++# figure out whether the 32 or 64 bit version should be used, and will search ++# for it in the correct directory ++LD_PRELOAD="${LD_PRELOAD}${LD_PRELOAD:+:}${MANGOHUD_LIB_NAME}" ++LD_LIBRARY_PATH="${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}@ld_libdir_mangohud@" + +-exec env MANGOHUD=1 LD_PRELOAD="${LD_PRELOAD}" "$@" ++exec env MANGOHUD=1 LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" LD_PRELOAD="${LD_PRELOAD}" "$@" +diff --git a/build.sh b/build.sh +--- a/build.sh ++++ b/build.sh +@@ -142,13 +142,13 @@ configure() { + git submodule update --init --depth 50 + CONFIGURE_OPTS="-Dwerror=true" + if [[ ! -f "build/meson64/build.ninja" ]]; then +- meson build/meson64 --libdir lib/mangohud/lib64 --prefix /usr -Dappend_libdir_mangohud=false $@ ${CONFIGURE_OPTS} ++ meson build/meson64 --libdir lib/mangohud/lib64 --prefix /usr -Dappend_libdir_mangohud=false -Dld_libdir_abs=true $@ ${CONFIGURE_OPTS} + fi + if [[ ! -f "build/meson32/build.ninja" && "$MACHINE" = "x86_64" ]]; then + export CC="gcc -m32" + export CXX="g++ -m32" + export PKG_CONFIG_PATH="/usr/lib32/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:${PKG_CONFIG_PATH_32}" +- meson build/meson32 --libdir lib/mangohud/lib32 --prefix /usr -Dappend_libdir_mangohud=false $@ ${CONFIGURE_OPTS} ++ meson build/meson32 --libdir lib/mangohud/lib32 --prefix /usr -Dappend_libdir_mangohud=false -Dld_libdir_abs=true $@ ${CONFIGURE_OPTS} + fi + } + +diff --git a/meson_options.txt b/meson_options.txt +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,6 +1,7 @@ + option('glibcxx_asserts', type : 'boolean', value : false) + option('use_system_spdlog', type : 'feature', value : 'disabled', description: 'Use system spdlog library') + option('append_libdir_mangohud', type : 'boolean', value : true, description: 'Append "mangohud" to libdir path or not.') ++option('ld_libdir_abs', type : 'boolean', value : false, description: 'Use absolute path in LD_PRELOAD') + option('include_doc', type : 'boolean', value : true, description: 'Include the example config, man pages, appstream files etc.') + option('with_nvml', type : 'combo', value : 'enabled', choices: ['enabled', 'system', 'disabled'], description: 'Enable NVML support') + option('with_xnvctrl', type : 'feature', value : 'enabled', description: 'Enable XNVCtrl support') +diff --git a/src/app/layer.json.in b/src/app/layer.json.in +--- a/src/app/layer.json.in ++++ b/src/app/layer.json.in +@@ -4,7 +4,7 @@ + "name": "VK_LAYER_MANGOAPP_overlay", + "type": "GLOBAL", + "api_version": "1.3.0", +- "library_path": "@ld_libdir_mangohud_abs@/libMangoApp.so", ++ "library_path": "@ld_libdir_mangohud@libMangoApp.so", + "implementation_version": "1", + "description": "Mangoapp Layer", + "functions": { +diff --git a/src/mangohud.json.in b/src/mangohud.json.in +--- a/src/mangohud.json.in ++++ b/src/mangohud.json.in +@@ -4,7 +4,7 @@ + "name": "VK_LAYER_MANGOHUD_overlay", + "type": "GLOBAL", + "api_version": "1.3.0", +- "library_path": "@ld_libdir_mangohud_abs@/libMangoHud.so", ++ "library_path": "@ld_libdir_mangohud@libMangoHud.so", + "implementation_version": "1", + "description": "Vulkan Hud Overlay", + "functions": { +diff --git a/src/meson.build b/src/meson.build +--- a/src/meson.build ++++ b/src/meson.build +@@ -2,17 +2,22 @@ glslang = find_program('glslangValidator') + + # Needs prefix for configure_file() + if get_option('append_libdir_mangohud') +- libdir_mangohud = join_paths(get_option('prefix'), get_option('libdir'), 'mangohud') ++ libdir_mangohud = join_paths(get_option('libdir'), 'mangohud') + ld_libdir_mangohud = get_option('prefix') + '/\$LIB/mangohud/' + else +- libdir_mangohud = join_paths(get_option('prefix'), get_option('libdir')) ++ libdir_mangohud = get_option('libdir') + ld_libdir_mangohud = get_option('prefix') + '/\$LIB/' + endif + + conf_data = configuration_data() + +-conf_data.set('ld_libdir_mangohud_abs', libdir_mangohud) +-conf_data.set('ld_libdir_mangohud', ld_libdir_mangohud) ++if get_option('ld_libdir_abs') ++ conf_data.set('ld_libdir_mangohud_abs', ld_libdir_mangohud) ++ conf_data.set('ld_libdir_mangohud', '') ++else ++ conf_data.set('ld_libdir_mangohud_abs', '') ++ conf_data.set('ld_libdir_mangohud', ld_libdir_mangohud) ++endif + + overlay_shaders = [ + 'overlay.frag', +@@ -282,7 +287,7 @@ endif + + configure_file(input : 'mangohud.json.in', + output : '@0@.@1@.json'.format(meson.project_name(), host_machine.cpu_family()), +- configuration : conf_data, ++ configuration : {'ld_libdir_mangohud' : ld_libdir_mangohud.replace('\$', '$')}, + install : true, + install_dir : join_paths(get_option('datadir'), 'vulkan', 'implicit_layer.d'), + install_tag : 'runtime', +@@ -298,7 +303,7 @@ configure_file(input : '../bin/mangohud.in', + if get_option('mangoapp_layer') + configure_file(input : 'app/layer.json.in', + output : 'libMangoApp.@0@.json'.format(host_machine.cpu_family()), +- configuration : conf_data, ++ configuration : {'ld_libdir_mangohud' : ld_libdir_mangohud.replace('\$', '$')}, + install : true, + install_dir : join_paths(get_option('datadir'), 'vulkan', 'implicit_layer.d'), + install_tag : 'mangoapp', +-- +2.40.0 + diff --git a/srcpkgs/MangoHud-nvidia/template b/srcpkgs/MangoHud-nvidia/template new file mode 100644 index 000000000000..d888f25fb84b --- /dev/null +++ b/srcpkgs/MangoHud-nvidia/template @@ -0,0 +1,33 @@ +# Template file for 'MangoHud-nvidia' +pkgname=MangoHud-nvidia +version=0.6.9 +revision=1 +build_style=meson +configure_args="-Dwith_xnvctrl=disabled -Dwith_nvml=enabled -Duse_system_spdlog=enabled" +hostmakedepends="Vulkan-Headers python3-Mako glslang pkg-config" +makedepends="libglvnd-devel dbus-devel vulkan-loader Vulkan-Headers spdlog" +short_desc="Vulkan and OpenGL overlay for monitoring FPS, temperatures and more" +maintainer="gmbeard " +license="MIT,custom:NVIDIA" +homepage="https://github.com/flightlessmango/MangoHud" +distfiles="https://github.com/flightlessmango/MangoHud/releases/download/v${version}/MangoHud-v${version}-Source.tar.xz" +checksum=a6e59ad810a30cd0a6a62ac5a7b5d8a10abab48eb1312e084ca7c81472d76573 +conflicts=MangoHud +repository=nonfree + +post_patch() { + if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + patch -Np1 -i ${FILESDIR}/musl.patch + fi +} + +post_install() { + # Extract the NVIDIA license from the nvml.h header + head -n $( \ + awk '/NVML API Reference/{ print NR-1; exit }' ${wrksrc}/include/nvml.h \ + ) ${wrksrc}/include/nvml.h \ + | sed 's;^\([/ ]\?\)\*/\?;;g' >${wrksrc}/LICENSE-NVIDIA + + vlicense LICENSE + vlicense LICENSE-NVIDIA +}