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

From: Bruno Victal <[email-masked]>
Date: Sat, 21 Jan 2023 16:16:28 +0000

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)

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