Subject: [bug#65155] [PATCH] gnu: mesa: Add native-search-paths.

From: John Kehayias <[email-masked]>
Date: Tue, 28 Nov 2023 05:54:25 +0000

Hi,

Sorry for the long overdue reply here.

On Wed, Aug 09, 2023 at 02:08 AM, dan wrote:

> * gnu/packages/gl.scm (mesa) [native-search-paths]: Export XDG_DATA_DIRS.
>
> According to
> https://vulkan.lunarg.com/doc/view/1.3.231.1/linux/loader_and_layer_interface.html,
> Vulkan loader search for manifest files in several directories.  Some of them
> are in the $HOME directory, some of them are set during compile-time.  We
> don't raelly want vulkan-loader to depend on mesa during compile-time, since
> we couldn't assume that mesa is the only package providing Vulkan drivers.
> Thus, it's better for us to export XDG_DATA_DIRS in mesa, so that when both
> packages are installed, Vulkan loader could find the corresponding Vulkan
> drivers by environment varaible.
>

I'm not sure if this patch does what you intend. A search-path is
defined in the package that consumes the path, meaning the package that
looks there for something. The environment variable is then set whenever
there is package also in the profile that populates the specified
directory.

So perhaps this belongs in vulkan-loader? Although I admit I'm less sure
for XDG_* related paths. Is there a test case or something we can see if
this does what is intended for vulkan?

(This did not make it into the just merged mesa-updates but happy to do
it on the next round, which could also include changes to vulkan
packages if they need a branch.)

Apologies for the wait on this one, since I had looked at it a while
ago!

John

> ---
>  gnu/packages/gl.scm | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
> index b53b42a9ba..583cd5a945 100644
> --- a/gnu/packages/gl.scm
> +++ b/gnu/packages/gl.scm
> @@ -18,6 +18,7 @@
>  ;;; Copyright © 2021, 2022, 2023 John Kehayias <[email-masked]>
>  ;;; Copyright © 2022 Petr Hodina <[email-masked]>
>  ;;; Copyright © 2023 Kaelyn Takata <[email-masked]>
> +;;; Copyright © 2023 dan <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -518,7 +519,11 @@ (define-public mesa
>              ;; Ensure the Mesa VDPAU drivers can be found.
>              (variable "VDPAU_DRIVER_PATH")
>              (separator #f)
> -            (files '("lib/vdpau")))))
> +            (files '("lib/vdpau")))
> +           (search-path-specification
> +            ;; Ensure the Vulkan drivers can be found by Vulkan loader.
> +            (variable "XDG_DATA_DIRS")
> +            (files '("share")))))
>      (home-page "https://mesa3d.org/")
>      (synopsis "OpenGL and Vulkan implementations")
>      (description "Mesa is a free implementation of the OpenGL and Vulkan
>
> base-commit: 4547bc6fa3142dca77f7fc912368aeff31bd6e53