[PATCH core-updates] gnu: mesa: Fix library paths in Vulkan layer manifests.

  • Done
  • quality assurance status badge
Details
3 participants
  • Andreas Enge
  • Kaelyn Takata
  • Bruno Victal
Owner
unassigned
Submitted by
Kaelyn Takata
Severity
normal
K
K
Kaelyn Takata wrote on 21 Nov 2022 20:09
(address . guix-patches@gnu.org)(name . Kaelyn Takata)(address . kaelyn.alexi@protonmail.com)
4782cd33fae4a0f5e120dab213753d9d51b6d94a.1669057759.git.kaelyn.alexi@protonmail.com
* gnu/packages/gl.scm (mesa): Fix library paths in Vulkan layer manifests.
---
gnu/packages/gl.scm | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)

Toggle diff (36 lines)
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index dd62fac13e..c26a51cb32 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -488,7 +488,28 @@ (define-public mesa
file)
(symlink reference file)))
others))))
- (delete-duplicates inodes))))))))
+ (delete-duplicates inodes)))))
+ (add-after 'install 'set-layer-path-in-manifests
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (implicit-path (string-append
+ out
+ "/share/vulkan/implicit_layer.d/"))
+ (explicit-path (string-append
+ out
+ "/share/vulkan/explicit_layer.d/"))
+ (fix-layer-path
+ (lambda (layer-name)
+ (let* ((explicit (string-append explicit-path layer-name ".json"))
+ (implicit (string-append implicit-path layer-name ".json"))
+ (manifest (if (file-exists? explicit)
+ explicit
+ implicit)))
+ (substitute* manifest
+ (((string-append "\"lib" layer-name ".so\""))
+ (string-append "\"" out "/lib/lib" layer-name ".so\"")))))))
+ (for-each fix-layer-path '("VkLayer_MESA_device_select"
+ "VkLayer_MESA_overlay"))))))))
(home-page "https://mesa3d.org/")
(synopsis "OpenGL and Vulkan implementations")
(description "Mesa is a free implementation of the OpenGL and Vulkan

base-commit: affaacf4f46639dcc8239a438cad11c2a6ef6c9a
--
2.38.1
K
K
Kaelyn wrote on 21 Jan 2023 16:41
(name . guix-devel)(address . guix-devel@gnu.org)(name . 59453@debbugs.gnu.org)(address . 59453@debbugs.gnu.org)
4dVVGwu7NrOi7vgSSPfIRkP6EzAItjcM6cvsIsi6Cv1QnhDjpXdvFOlTOKq8nShmNEVvogtz3vmRdl-dd-sD2yfv7qLPlrvvxa4LBb20_88=@protonmail.com
Hi Guix devs,

Now that it's been a couple of months, I wanted to bump my core-updates patch to Mesa which fixes the library paths in Mesa's Vulkan layer manifest files (https://issues.guix.gnu.org/59453).The patch also resolves https://issues.guix.gnu.org/58251.

Cheers,
Kaelyn
B
B
Bruno Victal wrote on 21 Jan 2023 17:16
(name . Kaelyn Takata)(address . kaelyn.alexi@protonmail.com)(address . 59453@debbugs.gnu.org)
193fa946-8ac2-823d-78fd-6210199cf804@makinata.eu
On 2022-11-21 19:09, Kaelyn Takata via Guix-patches via wrote:
Toggle quote (19 lines)
> * gnu/packages/gl.scm (mesa): Fix library paths in Vulkan layer manifests.
> ---
> gnu/packages/gl.scm | 23 ++++++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
> index dd62fac13e..c26a51cb32 100644
> --- a/gnu/packages/gl.scm
> +++ b/gnu/packages/gl.scm
> @@ -488,7 +488,28 @@ (define-public mesa
> file)
> (symlink reference file)))
> others))))
> - (delete-duplicates inodes))))))))
> + (delete-duplicates inodes)))))
> + (add-after 'install 'set-layer-path-in-manifests
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))

Using G-Expressions would be better here, since you're modifying this package,
you could take the opportunity to modernize/rewrite this package definition using G-Expressions.
(Keep the rewrite and this fix in separate commits)

Toggle quote (30 lines)
> + (implicit-path (string-append
> + out
> + "/share/vulkan/implicit_layer.d/"))
> + (explicit-path (string-append
> + out
> + "/share/vulkan/explicit_layer.d/"))
> + (fix-layer-path
> + (lambda (layer-name)
> + (let* ((explicit (string-append explicit-path layer-name ".json"))
> + (implicit (string-append implicit-path layer-name ".json"))
> + (manifest (if (file-exists? explicit)
> + explicit
> + implicit)))
> + (substitute* manifest
> + (((string-append "\"lib" layer-name ".so\""))
> + (string-append "\"" out "/lib/lib" layer-name ".so\"")))))))
> + (for-each fix-layer-path '("VkLayer_MESA_device_select"
> + "VkLayer_MESA_overlay"))))))))
> (home-page "https://mesa3d.org/")
> (synopsis "OpenGL and Vulkan implementations")
> (description "Mesa is a free implementation of the OpenGL and Vulkan
>
> base-commit: affaacf4f46639dcc8239a438cad11c2a6ef6c9a
> --
> 2.38.1
>
>
>
>
>
K
K
Kaelyn wrote on 12 Feb 2023 19:20
(name . Bruno Victal)(address . mirai@makinata.eu)(address . 59453@debbugs.gnu.org)
MnDYDTgtR5qEy6rNseiA-9vziRf6xtx9l8qbw-_z3E92V6hx61yQPylJ7H5uMiBdYLCCQY-vBjvQJIxvZDCFaQfnxZMu3tgNLRGG26u5yVs=@protonmail.com
------- Original Message -------
On Saturday, January 21st, 2023 at 4:16 PM, Bruno Victal <mirai@makinata.eu> wrote:

Toggle quote (27 lines)
>
> On 2022-11-21 19:09, Kaelyn Takata via Guix-patches via wrote:
>
> > * gnu/packages/gl.scm (mesa): Fix library paths in Vulkan layer manifests.
> > ---
> > gnu/packages/gl.scm | 23 ++++++++++++++++++++++-
> > 1 file changed, 22 insertions(+), 1 deletion(-)
> >
> > diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
> > index dd62fac13e..c26a51cb32 100644
> > --- a/gnu/packages/gl.scm
> > +++ b/gnu/packages/gl.scm
> > @@ -488,7 +488,28 @@ (define-public mesa
> > file)
> > (symlink reference file)))
> > others))))
> > - (delete-duplicates inodes))))))))
> > + (delete-duplicates inodes)))))
> > + (add-after 'install 'set-layer-path-in-manifests
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (let* ((out (assoc-ref outputs "out"))
>
>
> Using G-Expressions would be better here, since you're modifying this package,
> you could take the opportunity to modernize/rewrite this package definition using G-Expressions.
> (Keep the rewrite and this fix in separate commits)

Given the complexity of the mesa package definition including the numerous matches on %current-system, I'm not confident or comfortable in my ability to rewrite mesa's package-arguments to use gexps. I certainly don't want to delay fixing the Vulkan layer library paths on core-updates packages even longer than it already has been trying to rewrite a complex core package.

Cheers,
Kaelyn

Toggle quote (26 lines)
>
> > + (implicit-path (string-append
> > + out
> > + "/share/vulkan/implicit_layer.d/"))
> > + (explicit-path (string-append
> > + out
> > + "/share/vulkan/explicit_layer.d/"))
> > + (fix-layer-path
> > + (lambda (layer-name)
> > + (let* ((explicit (string-append explicit-path layer-name ".json"))
> > + (implicit (string-append implicit-path layer-name ".json"))
> > + (manifest (if (file-exists? explicit)
> > + explicit
> > + implicit)))
> > + (substitute* manifest
> > + (((string-append "\"lib" layer-name ".so\""))
> > + (string-append "\"" out "/lib/lib" layer-name ".so\"")))))))
> > + (for-each fix-layer-path '("VkLayer_MESA_device_select"
> > + "VkLayer_MESA_overlay"))))))))
> > (home-page "https://mesa3d.org/")
> > (synopsis "OpenGL and Vulkan implementations")
> > (description "Mesa is a free implementation of the OpenGL and Vulkan
> >
> > base-commit: affaacf4f46639dcc8239a438cad11c2a6ef6c9a
> > --
> > 2.38.1
K
K
Kaelyn wrote on 19 Apr 2023 16:41
Mesa vulkan layer path fix for core-updates
(name . 59453@debbugs.gnu.org)(address . 59453@debbugs.gnu.org)
ArXK1i9fJm7OO0by9qt0jhNDMbNi9a4O3kYlOFsto7FhGPT0Wf6xHtH977jL2-SvascRqvPIDVyf7Fo9zjM1jv69TaQZ-tS2Q96pI6b0ZVw=@protonmail.com
Hi,

Some time back I mailed in https://issues.guix.gnu.org/59453to fix an issue with the manifests for the vulkan layers that ship with mesa. Basically the error is that the manifests don't include the store path to the referenced libraries, only the file name. An example the error can be seen by running "vulkaninfo &| less", where this message is printed a few times:

ERROR: [Loader Message] Code 0 : libVkLayer_MESA_device_select.so: cannot open shared object file: No such file or directory


While I know it is late in the process of preparing core-updates for merging into master, I wanted to ask if it would be possible to have the patch addressed prior to the merge? I just encountered the error message again after having a need to check vulkaninfo and it reminded me of the patch. (The vulkan-validationlayers package that was recently merged to master from staging includes a similar phase for fixing the layer object path in its layer manifest.)

Thanks,
Kaelyn
A
A
Andreas Enge wrote on 19 Apr 2023 17:26
(name . Kaelyn)(address . kaelyn.alexi@protonmail.com)
ZEAINNMwL4871rLA@jurong
Hello,

thanks for bringing this back to our attention!

Am Wed, Apr 19, 2023 at 02:41:57PM +0000 schrieb Kaelyn:
Toggle quote (2 lines)
> While I know it is late in the process of preparing core-updates for merging into master, I wanted to ask if it would be possible to have the patch addressed prior to the merge?

Given how many packages depend on mesa and their importance, I think it
would be safer to postpone the fix until after the merge; be it in a
dedicated mesa feature branch that could quickly be merged afterwards,
or better yet regroup other changes in this area. (Searching for open mesa
packages on issues.guix.gnu.org returns quite a few matches, this could be
a good occasion to sort them out.)

Andreas
K
K
Kaelyn wrote on 18 Jun 2023 18:15
(No Subject)
(address . control@debbugs.gnu.org)
Px_iV3GaFp2G1sp95eugFrrlCrTk0cB0NEyww9q2cr8rt5wmkIXW-5L77WVJ8KKZoBUTrSmxOCEUGRkIUnWLBNvEfDtH_BBxY8KAe3Eb6uQ=@protonmail.com
close 59453
?