Subject: Re: [bug#59453] [PATCH core-updates] gnu: mesa: Fix library paths in Vulkan layer manifests.

From: Kaelyn <[email-masked]>
Date: Sun, 12 Feb 2023 18:20:49 +0000

------- Original Message -------
On Saturday, January 21st, 2023 at 4:16 PM, Bruno Victal <[email-masked]> wrote:

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

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