[bug#71109] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
Commit Message
commit e156996c478a8e5d040ccf199437bcdbdbab63ed in vulkan-tools makes it
use volk to load vulkan instead of a bunch of custom code in the repo.
volk uses dlopen("libvulkan.so.1").
i dont remember volk ever working, so this just propagated the bug to
another program.
attached is a patch to hard-code the libvulkan.so path into volk.
vulkan-headers also has dlopen for libvulkan.so.
i dont know which programs use it, but next time we have to rebuild
everything we may as well patch it.
i attached a patch that shows how to do it.
Comments
Hi nathan and all,
nathan <nathan_mail@nborghese.com> skribis:
> From 811d7567098e00711ee4c9c80afbe544ebe1c08e Mon Sep 17 00:00:00 2001
> Message-ID: <811d7567098e00711ee4c9c80afbe544ebe1c08e.1717290934.git.nathan_mail@nborghese.com>
> From: nathan <nathan_mail@nborghese.com>
> Date: Sat, 1 Jun 2024 21:14:13 -0400
> Subject: [PATCH] example of how to patch patch of vulkan-loader into
> vulkan-headers
>
> Change-Id: Ic674a4d965d8049e388d75137111ed0253ca3b18
[...]
> From ee4581690b6486a65bf0e4faed3f2c88cac70d9e Mon Sep 17 00:00:00 2001
> Message-ID: <ee4581690b6486a65bf0e4faed3f2c88cac70d9e.1717286310.git.nathan_mail@nborghese.com>
> From: nathan <nathan_mail@nborghese.com>
> Date: Sat, 1 Jun 2024 19:55:24 -0400
> Subject: [PATCH] gnu: volk: Hard-code path of vulkan-loader for dynamic
> loading
>
> * gnu/packages/vulkan.scm (volk):
> [arguments]: use gexp.
> <#:phases>: patch dlopen with libvulkan.so. fixes vulkan-tools and potentially
> other programs too.
> [input]: add vulkan-loader
>
> Change-Id: I5ef0eb13d35e517b8947faddace641882a775b80
These two patches make sense to me.
I applied them with minor tweaks: using ‘search-input-file’ rather than
‘assoc-ref’ in build phases, and commit log modifications to match our
conventions.
Thank you!
Ludo’.
From ee4581690b6486a65bf0e4faed3f2c88cac70d9e Mon Sep 17 00:00:00 2001
Message-ID: <ee4581690b6486a65bf0e4faed3f2c88cac70d9e.1717286310.git.nathan_mail@nborghese.com>
From: nathan <nathan_mail@nborghese.com>
Date: Sat, 1 Jun 2024 19:55:24 -0400
Subject: [PATCH] gnu: volk: Hard-code path of vulkan-loader for dynamic
loading
* gnu/packages/vulkan.scm (volk):
[arguments]: use gexp.
<#:phases>: patch dlopen with libvulkan.so. fixes vulkan-tools and potentially
other programs too.
[input]: add vulkan-loader
Change-Id: I5ef0eb13d35e517b8947faddace641882a775b80
---
gnu/packages/vulkan.scm | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
@@ -568,9 +568,18 @@ (define-public volk
"0x4jhc8n9c4k8svmmcaxxs613xbsav7wam94gacddlm738cwp13v"))))
(build-system cmake-build-system)
(arguments
- '(#:tests? #f ;no test
- #:configure-flags '("-DVOLK_INSTALL=ON" "-DVOLK_PULL_IN_VULKAN=ON")))
- (inputs (list vulkan-headers))
+ (list
+ #:tests? #f ;no test
+ #:configure-flags #~(list "-DVOLK_INSTALL=ON" "-DVOLK_PULL_IN_VULKAN=ON")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-loader-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "volk.c"
+ (("dlopen\\(\"libvulkan.so")
+ (string-append "dlopen(\"" (assoc-ref inputs "vulkan-loader")
+ "/lib/libvulkan.so"))))))))
+ (inputs (list vulkan-headers vulkan-loader))
(synopsis "Meta loader for Vulkan API")
(description
"Volk is a meta-loader for Vulkan. It allows you to dynamically load
base-commit: fa7906d64881ee12e0c418136b44c73766e3d169
--
2.45.1