unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
@ 2024-05-22  9:36 Sughosha via Guix-patches via
  2024-05-26 18:51 ` Kaelyn via Guix-patches via
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Sughosha via Guix-patches via @ 2024-05-22  9:36 UTC (permalink / raw)
  To: 71109; +Cc: Sughosha

This fixes not finding vulkan-loader.

* gnu/packages/vulkan.scm (vulkan-tools)[arguments]<#:phases>:
Wrap-binaries with LD_LIBRARY_PATH.

Change-Id: I9aaf1cf04f70f1da976fa84d2189ca2c01b9520f
---
 gnu/packages/vulkan.scm | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 4c53a19aba..dcf97e98dd 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -368,7 +368,16 @@ (define-public vulkan-tools
                   (replace 'check
                     (lambda* (#:key tests? #:allow-other-keys)
                       (when tests?
-                        (invoke "./tests/vulkan_tools_tests")))))))
+                        (invoke "./tests/vulkan_tools_tests"))))
+                  (add-after 'install 'wrap-binaries
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (for-each
+                        (lambda (file)
+                          (wrap-program file
+                            `("LD_LIBRARY_PATH" ":" =
+                               (,(getenv "LIBRARY_PATH")))))
+                        (find-files (string-append (assoc-ref outputs "out")
+                                                   "/bin"))))))))
     (home-page
      "https://github.com/KhronosGroup/Vulkan-Tools")
     (synopsis "Tools and utilities for Vulkan")

base-commit: e9b25a6c6c626a560d28a1f732e6e5d362d584a4
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-05-22  9:36 [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH Sughosha via Guix-patches via
@ 2024-05-26 18:51 ` Kaelyn via Guix-patches via
  2024-05-31 10:38 ` Ludovic Courtès
  2024-06-02  1:19 ` nathan via Guix-patches via
  2 siblings, 0 replies; 9+ messages in thread
From: Kaelyn via Guix-patches via @ 2024-05-26 18:51 UTC (permalink / raw)
  To: 71109@debbugs.gnu.org

Hi,

This patch looks good to me, and I've confirmed it fixes the issue with vulkaninfo not running.

I am curious though as to what caused vulkaninfo to need LD_LIBRARY_PATH, as before the the vulkan updates a couple of months ago (at least as of gitish 4d79a9c from early April), vulkaninfo worked fine without needing LD_LIBRARY_PATH set. The new need does have me a bit concerned that other vulkan apps which used to work may need a similar workaround to keep functioning as expected.

Cheers,
Kaelyn




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-05-22  9:36 [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH Sughosha via Guix-patches via
  2024-05-26 18:51 ` Kaelyn via Guix-patches via
@ 2024-05-31 10:38 ` Ludovic Courtès
  2024-05-31 15:21   ` Sughosha via Guix-patches via
  2024-05-31 16:47   ` Kaelyn via Guix-patches via
  2024-06-02  1:19 ` nathan via Guix-patches via
  2 siblings, 2 replies; 9+ messages in thread
From: Ludovic Courtès @ 2024-05-31 10:38 UTC (permalink / raw)
  To: Sughosha; +Cc: 71109, Kaelyn

Hi,

Sughosha <sughosha@disroot.org> skribis:

> This fixes not finding vulkan-loader.

Could you show how to test it?

> +                          (wrap-program file
> +                            `("LD_LIBRARY_PATH" ":" =
> +                               (,(getenv "LIBRARY_PATH")))))

This is probably a bit too broad because LIBRARY_PATH includes
build-time-only dependencies (python, gawk, binutils, bzip2, etc.).

Could we explicitly list what needs to be there instead?

Also maybe change ‘=’ to ‘suffix’ so users can still override
LD_LIBRARY_PATH.

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-05-31 10:38 ` Ludovic Courtès
@ 2024-05-31 15:21   ` Sughosha via Guix-patches via
  2024-05-31 16:47   ` Kaelyn via Guix-patches via
  1 sibling, 0 replies; 9+ messages in thread
From: Sughosha via Guix-patches via @ 2024-05-31 15:21 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 71109, Kaelyn

On Friday, May 31, 2024 4:08:53 PM IST Ludovic Courtès wrote:
> Hi,
> 
> Sughosha <sughosha@disroot.org> skribis:
> > This fixes not finding vulkan-loader.
> 
> Could you show how to test it?
> 
> > +                          (wrap-program file
> > +                            `("LD_LIBRARY_PATH" ":" =
> > +                               (,(getenv "LIBRARY_PATH")))))
> 
> This is probably a bit too broad because LIBRARY_PATH includes
> build-time-only dependencies (python, gawk, binutils, bzip2, etc.).
> 
> Could we explicitly list what needs to be there instead?
> 
> Also maybe change ‘=’ to ‘suffix’ so users can still override
> LD_LIBRARY_PATH.
> 
> Thanks,
> Ludo’.
Hi,
Thanks for your review!

> Could you show how to test it?
Currently if I just run `vulkaninfo`, this error appears:
```
ERROR at /tmp/guix-build-vulkan-tools-1.3.280.0.drv-0/source/vulkaninfo/./
vulkaninfo.h:412: Failed to initialize: Vulkan loader is not installed, not 
found, or failed to load.
```
I don't know if something should be patched before building itself.
But if I run: `LD_LIBRARY_PATH=$(guix build vulkan-loader)/lib vulkaninfo`, 
the program will be executed without any error.

> This is probably a bit too broad because LIBRARY_PATH includes
> build-time-only dependencies (python, gawk, binutils, bzip2, etc.).
If I wrap only with vulkan-loader's library path also, it works. But would it 
be a "right" way of wrapping a program.

> Also maybe change ‘=’ to ‘suffix’ so users can still override
Yes, you are right. I will change it.

-- 
Sughosha






^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-05-31 10:38 ` Ludovic Courtès
  2024-05-31 15:21   ` Sughosha via Guix-patches via
@ 2024-05-31 16:47   ` Kaelyn via Guix-patches via
  1 sibling, 0 replies; 9+ messages in thread
From: Kaelyn via Guix-patches via @ 2024-05-31 16:47 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 71109, Sughosha

Hi,

On Friday, May 31st, 2024 at 3:38 AM, Ludovic Courtès <ludo@gnu.org> wrote:

> 
> 
> Hi,
> 
> Sughosha sughosha@disroot.org skribis:
> 
> > This fixes not finding vulkan-loader.
> 
> 
> Could you show how to test it?

At least for me, the problem shows up simply with vulkan-tools installed (or using "guix shell vulkan-tools") using a guix commit after the latest (1.3.280) vulkan updates. Simply running "vulkaninfo" results in the error:

ERROR at /tmp/guix-build-vulkan-tools-1.3.280.0.drv-0/source/vulkaninfo/./vulkaninfo.h:412: Failed to initialize: Vulkan loader is not installed, not found, or failed to load.

> 
> > + (wrap-program file
> > + `("LD_LIBRARY_PATH" ":" =
> > + (,(getenv "LIBRARY_PATH")))))
> 
> 
> This is probably a bit too broad because LIBRARY_PATH includes
> build-time-only dependencies (python, gawk, binutils, bzip2, etc.).
> 
> Could we explicitly list what needs to be there instead?

A bit of local testing just now suggests setting LD_LIBRARY_PATH to the vulkan-loader package's lib dir should be enough to resolve the error.

Cheers,
Kaelyn

> Also maybe change ‘=’ to ‘suffix’ so users can still override
> LD_LIBRARY_PATH.
> 
> Thanks,
> Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-05-22  9:36 [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH Sughosha via Guix-patches via
  2024-05-26 18:51 ` Kaelyn via Guix-patches via
  2024-05-31 10:38 ` Ludovic Courtès
@ 2024-06-02  1:19 ` nathan via Guix-patches via
  2024-06-11 21:27   ` bug#71109: " Ludovic Courtès
  2024-06-11 22:02   ` [bug#71109] " Ludovic Courtès
  2 siblings, 2 replies; 9+ messages in thread
From: nathan via Guix-patches via @ 2024-06-02  1:19 UTC (permalink / raw)
  To: sughosha, 71109

[-- Attachment #1: Type: text/plain, Size: 533 bytes --]

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.

[-- Attachment #2: 0001-example-of-how-to-patch-patch-of-vulkan-loader-into-.patch --]
[-- Type: text/x-patch, Size: 2709 bytes --]

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
---
 gnu/packages/vulkan.scm | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 4c53a19aba..2fc2feeeba 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -238,7 +238,8 @@ (define-public glslang
                    ;; include/SPIRV/{bitutils,hex_float}.h are Apache 2.0.
                    license:asl2.0))))
 
-(define-public vulkan-headers
+;; vulkan-headers, but without the path to vulkan-loader patched in.
+(define vulkan-headers/no-loader
   (package
     (name "vulkan-headers")
     (version "1.3.280.0")
@@ -255,6 +256,7 @@ (define-public vulkan-headers
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; No tests.
+    (properties '((hidden? . #t)))
     (home-page
      "https://github.com/KhronosGroup/Vulkan-Headers")
     (synopsis "Vulkan Header files and API registry")
@@ -262,6 +264,24 @@ (define-public vulkan-headers
      "Vulkan-Headers contains header files and API registry for Vulkan.")
     (license (list license:asl2.0)))) ;LICENSE.txt
 
+(define-public vulkan-headers
+  (package
+    (inherit vulkan-headers/no-loader)
+    (arguments
+     (substitute-keyword-arguments (package-arguments vulkan-headers/no-loader)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-after 'unpack 'patch-loader-path
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "include/vulkan/vulkan.hpp"
+                  (("dlopen\\( \"libvulkan.so")
+                   (string-append "dlopen(\"" (assoc-ref inputs "vulkan-loader")
+                                  "/lib/libvulkan.so")))))))))
+    (inputs
+     (modify-inputs (package-inputs vulkan-headers/no-loader)
+       (prepend vulkan-loader)))
+    (properties '())))
+
 (define-public vulkan-loader
   (package
     (name "vulkan-loader")
@@ -318,7 +338,7 @@ (define-public vulkan-loader
            python
            wayland))
     (inputs
-     (list vulkan-headers libxrandr))
+     (list vulkan-headers/no-loader libxrandr))
     (native-search-paths
      (list (search-path-specification
             (variable "XDG_DATA_DIRS")

base-commit: fa7906d64881ee12e0c418136b44c73766e3d169
-- 
2.45.1


[-- Attachment #3: 0001-gnu-volk-Hard-code-path-of-vulkan-loader-for-dynamic.patch --]
[-- Type: text/x-patch, Size: 1944 bytes --]

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(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 4c53a19aba..215a592266 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -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


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* bug#71109: [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-06-02  1:19 ` nathan via Guix-patches via
@ 2024-06-11 21:27   ` Ludovic Courtès
  2024-06-11 22:02   ` [bug#71109] " Ludovic Courtès
  1 sibling, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2024-06-11 21:27 UTC (permalink / raw)
  To: nathan; +Cc: 71109-done, sughosha

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’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-06-02  1:19 ` nathan via Guix-patches via
  2024-06-11 21:27   ` bug#71109: " Ludovic Courtès
@ 2024-06-11 22:02   ` Ludovic Courtès
  2024-09-07  1:32     ` bug#71109: " John Kehayias via Guix-patches via
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2024-06-11 22:02 UTC (permalink / raw)
  To: nathan; +Cc: John Kehayias, 71109, sughosha

[-- Attachment #1: Type: text/plain, Size: 359 bytes --]

Hi,

I spoke a bit too fast: given that many packages depend on
‘vulkan-headers’, this should be applied on a branch.

Attached as the updated patches.

John, could you apply them on the ‘mesa-updates’ branch?  (I realized
there’s no formal ‘mesa’ team contrary to what I thought; perhaps there
should be one?).

Thanks,
Ludo’.


[-- Attachment #2: 0001-gnu-vulkan-headers-Hard-code-libvulkan.so-file-name.patch --]
[-- Type: text/x-patch, Size: 3140 bytes --]

From 577a58ac4d23e7fa749fddb3007a3ad14c40f38d Mon Sep 17 00:00:00 2001
Message-ID: <577a58ac4d23e7fa749fddb3007a3ad14c40f38d.1718143100.git.ludo@gnu.org>
From: nathan <nathan_mail@nborghese.com>
Date: Sat, 1 Jun 2024 21:14:13 -0400
Subject: [PATCH 1/2] gnu: vulkan-headers: Hard-code libvulkan.so file name.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/vulkan.scm (vulkan-headers): Rename to…
(vulkan-headers/no-loader): … this.
(vulkan-headers): New variable.
(vulkan-loader): Depend on ‘vulkan-headers/no-loader’.

Change-Id: Ic674a4d965d8049e388d75137111ed0253ca3b18
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
---
 gnu/packages/vulkan.scm | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 25542c1e064..5ff47be92e2 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -246,7 +246,8 @@ (define-public glslang
                    ;; include/SPIRV/{bitutils,hex_float}.h are Apache 2.0.
                    license:asl2.0))))
 
-(define-public vulkan-headers
+;; vulkan-headers, but without the path to vulkan-loader patched in.
+(define-public vulkan-headers/no-loader
   (package
     (name "vulkan-headers")
     (version "1.3.280.0")
@@ -263,6 +264,7 @@ (define-public vulkan-headers
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; No tests.
+    (properties '((hidden? . #t)))
     (home-page
      "https://github.com/KhronosGroup/Vulkan-Headers")
     (synopsis "Vulkan Header files and API registry")
@@ -270,6 +272,25 @@ (define-public vulkan-headers
      "Vulkan-Headers contains header files and API registry for Vulkan.")
     (license (list license:asl2.0)))) ;LICENSE.txt
 
+(define-public vulkan-headers
+  (package
+    (inherit vulkan-headers/no-loader)
+    (arguments
+     (substitute-keyword-arguments (package-arguments vulkan-headers/no-loader)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases #$phases
+            (add-after 'unpack 'patch-libvulkan-file-name
+              (lambda* (#:key inputs #:allow-other-keys)
+                (substitute* "include/vulkan/vulkan.hpp"
+                  (("dlopen\\( \"libvulkan.so")
+                   (string-append "dlopen(\""
+                                  (search-input-file
+                                   inputs "/lib/libvulkan.so"))))))))))
+    (inputs
+     (modify-inputs (package-inputs vulkan-headers/no-loader)
+       (prepend vulkan-loader)))
+    (properties '())))
+
 (define-public vulkan-loader
   (package
     (name "vulkan-loader")
@@ -326,7 +347,7 @@ (define-public vulkan-loader
            python
            wayland))
     (inputs
-     (list vulkan-headers libxrandr))
+     (list vulkan-headers/no-loader libxrandr))
     (native-search-paths
      (list (search-path-specification
             (variable "XDG_DATA_DIRS")

base-commit: 7daf9328921f9f7d4fe4839d8e16091bd9f06072
-- 
2.45.1


[-- Attachment #3: 0002-gnu-volk-Hard-code-path-of-vulkan-loader-for-dynamic.patch --]
[-- Type: text/x-patch, Size: 2527 bytes --]

From 2cb9899209d1807cd18e9ed68a634faca48c6d89 Mon Sep 17 00:00:00 2001
Message-ID: <2cb9899209d1807cd18e9ed68a634faca48c6d89.1718143100.git.ludo@gnu.org>
In-Reply-To: <577a58ac4d23e7fa749fddb3007a3ad14c40f38d.1718143100.git.ludo@gnu.org>
References: <577a58ac4d23e7fa749fddb3007a3ad14c40f38d.1718143100.git.ludo@gnu.org>
From: nathan <nathan_mail@nborghese.com>
Date: Sat, 1 Jun 2024 19:55:24 -0400
Subject: [PATCH 2/2] gnu: volk: Hard-code path of vulkan-loader for dynamic
 loading
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Until now, we’d get:

  $ guix shell vulkan-tools -- vulkaninfo
  ERROR at /tmp/guix-build-vulkan-tools-1.3.280.0.drv-0/source/vulkaninfo/./vulkaninfo.h:412: Failed to initialize: Vulkan loader is not installed, not found, or failed to load.

This patch fixes it and potentially for other programs as well.

* gnu/packages/vulkan.scm (volk)[arguments]: use gexp.
<#:phases>: Patch dlopen with libvulkan.so.
[input]: Add vulkan-loader.

Change-Id: I5ef0eb13d35e517b8947faddace641882a775b80
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
---
 gnu/packages/vulkan.scm | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 5ff47be92e2..5d322f3ddb9 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -597,9 +597,19 @@ (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(\""
+                                (search-input-file
+                                 inputs "/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
-- 
2.45.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* bug#71109: [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH.
  2024-06-11 22:02   ` [bug#71109] " Ludovic Courtès
@ 2024-09-07  1:32     ` John Kehayias via Guix-patches via
  0 siblings, 0 replies; 9+ messages in thread
From: John Kehayias via Guix-patches via @ 2024-09-07  1:32 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: nathan, 71109-done, sughosha

Hi all,

On Wed, Jun 12, 2024 at 12:02 AM, Ludovic Courtès wrote:

> Hi,
>
> I spoke a bit too fast: given that many packages depend on
> ‘vulkan-headers’, this should be applied on a branch.
>
> Attached as the updated patches.
>
> John, could you apply them on the ‘mesa-updates’ branch?  (I realized
> there’s no formal ‘mesa’ team contrary to what I thought; perhaps there
> should be one?).
>
> Thanks,
> Ludo’.
>

My apologies for a being a bit slow here! I've included these patches on
mesa-updates (building now) and the full set of patches is tracked here:
https://issues.guix.gnu.org/73071  I have used vulkan on that branch
without issues so far.

And yes, I keep forgetting to make a formal team. I suppose it shouldn't
be a "mesa" team but a bit broader (graphics?).

I will close this as it is live on mesa-updates and hopefully merged
into master before long. (Otherwise I'm afraid it will be forgotten open
and it can be tested with the other updates, but please correct me if
this should remain open.)

Thanks everyone for your work here!
John

>>From 577a58ac4d23e7fa749fddb3007a3ad14c40f38d Mon Sep 17 00:00:00 2001
> Message-ID: <577a58ac4d23e7fa749fddb3007a3ad14c40f38d.1718143100.git.ludo@gnu.org>
> From: nathan <nathan_mail@nborghese.com>
> Date: Sat, 1 Jun 2024 21:14:13 -0400
> Subject: [PATCH 1/2] gnu: vulkan-headers: Hard-code libvulkan.so file name.
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> * gnu/packages/vulkan.scm (vulkan-headers): Rename to…
> (vulkan-headers/no-loader): … this.
> (vulkan-headers): New variable.
> (vulkan-loader): Depend on ‘vulkan-headers/no-loader’.
>
> Change-Id: Ic674a4d965d8049e388d75137111ed0253ca3b18
> Co-authored-by: Ludovic Courtès <ludo@gnu.org>
> ---
>  gnu/packages/vulkan.scm | 25 +++++++++++++++++++++++--
>  1 file changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
> index 25542c1e064..5ff47be92e2 100644
> --- a/gnu/packages/vulkan.scm
> +++ b/gnu/packages/vulkan.scm
> @@ -246,7 +246,8 @@ (define-public glslang
>                     ;; include/SPIRV/{bitutils,hex_float}.h are Apache 2.0.
>                     license:asl2.0))))
>
> -(define-public vulkan-headers
> +;; vulkan-headers, but without the path to vulkan-loader patched in.
> +(define-public vulkan-headers/no-loader
>    (package
>      (name "vulkan-headers")
>      (version "1.3.280.0")
> @@ -263,6 +264,7 @@ (define-public vulkan-headers
>      (build-system cmake-build-system)
>      (arguments
>       `(#:tests? #f))                    ; No tests.
> +    (properties '((hidden? . #t)))
>      (home-page
>       "https://github.com/KhronosGroup/Vulkan-Headers")
>      (synopsis "Vulkan Header files and API registry")
> @@ -270,6 +272,25 @@ (define-public vulkan-headers
>       "Vulkan-Headers contains header files and API registry for Vulkan.")
>      (license (list license:asl2.0)))) ;LICENSE.txt
>
> +(define-public vulkan-headers
> +  (package
> +    (inherit vulkan-headers/no-loader)
> +    (arguments
> +     (substitute-keyword-arguments (package-arguments vulkan-headers/no-loader)
> +       ((#:phases phases #~%standard-phases)
> +        #~(modify-phases #$phases
> +            (add-after 'unpack 'patch-libvulkan-file-name
> +              (lambda* (#:key inputs #:allow-other-keys)
> +                (substitute* "include/vulkan/vulkan.hpp"
> +                  (("dlopen\\( \"libvulkan.so")
> +                   (string-append "dlopen(\""
> +                                  (search-input-file
> +                                   inputs "/lib/libvulkan.so"))))))))))
> +    (inputs
> +     (modify-inputs (package-inputs vulkan-headers/no-loader)
> +       (prepend vulkan-loader)))
> +    (properties '())))
> +
>  (define-public vulkan-loader
>    (package
>      (name "vulkan-loader")
> @@ -326,7 +347,7 @@ (define-public vulkan-loader
>             python
>             wayland))
>      (inputs
> -     (list vulkan-headers libxrandr))
> +     (list vulkan-headers/no-loader libxrandr))
>      (native-search-paths
>       (list (search-path-specification
>              (variable "XDG_DATA_DIRS")
>
> base-commit: 7daf9328921f9f7d4fe4839d8e16091bd9f06072
> --
> 2.45.1
>
>>From 2cb9899209d1807cd18e9ed68a634faca48c6d89 Mon Sep 17 00:00:00 2001
> Message-ID: <2cb9899209d1807cd18e9ed68a634faca48c6d89.1718143100.git.ludo@gnu.org>
> In-Reply-To: <577a58ac4d23e7fa749fddb3007a3ad14c40f38d.1718143100.git.ludo@gnu.org>
> References: <577a58ac4d23e7fa749fddb3007a3ad14c40f38d.1718143100.git.ludo@gnu.org>
> From: nathan <nathan_mail@nborghese.com>
> Date: Sat, 1 Jun 2024 19:55:24 -0400
> Subject: [PATCH 2/2] gnu: volk: Hard-code path of vulkan-loader for dynamic
>  loading
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> Until now, we’d get:
>
>   $ guix shell vulkan-tools -- vulkaninfo
>   ERROR at /tmp/guix-build-vulkan-tools-1.3.280.0.drv-0/source/vulkaninfo/./vulkaninfo.h:412: Failed to initialize: Vulkan loader is not installed, not found, or failed to load.
>
> This patch fixes it and potentially for other programs as well.
>
> * gnu/packages/vulkan.scm (volk)[arguments]: use gexp.
> <#:phases>: Patch dlopen with libvulkan.so.
> [input]: Add vulkan-loader.
>
> Change-Id: I5ef0eb13d35e517b8947faddace641882a775b80
> Co-authored-by: Ludovic Courtès <ludo@gnu.org>
> ---
>  gnu/packages/vulkan.scm | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
> index 5ff47be92e2..5d322f3ddb9 100644
> --- a/gnu/packages/vulkan.scm
> +++ b/gnu/packages/vulkan.scm
> @@ -597,9 +597,19 @@ (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(\""
> +                                (search-input-file
> +                                 inputs "/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





^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-09-07  1:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-22  9:36 [bug#71109] [PATCH] gnu: vulkan-tools: Wrap binaries with LD_LIBRARY_PATH Sughosha via Guix-patches via
2024-05-26 18:51 ` Kaelyn via Guix-patches via
2024-05-31 10:38 ` Ludovic Courtès
2024-05-31 15:21   ` Sughosha via Guix-patches via
2024-05-31 16:47   ` Kaelyn via Guix-patches via
2024-06-02  1:19 ` nathan via Guix-patches via
2024-06-11 21:27   ` bug#71109: " Ludovic Courtès
2024-06-11 22:02   ` [bug#71109] " Ludovic Courtès
2024-09-07  1:32     ` bug#71109: " John Kehayias via Guix-patches via

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).