Subject: [PATCH 1/3] build: qt-build-system: Allow users to override/extend XDG_DATA_DIRS.

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 25 Jun 2021 14:08:21 -0400

Before this change, XDG_DATA_DIRS was wrapped using '=, which meant that it
wouldn't pick up extra icons from the user's profile, for example.  When
enabling gtk+ theming support in qtbase, that led to crashes due to GTK not
finding icons from even the hicolor icon theme fallback (which is assumed to
exist).

* guix/build/qt-build-system.scm (variables-for-wrapping): Specify an extra
'wrap-type' information per variable that gets passed to the wrap-program
procedure.  Set the XDG_DATA_DIRS variable wrapping type to 'suffix', which
allows the user to both extend and override its value.
---
 guix/build/qt-build-system.scm | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/guix/build/qt-build-system.scm b/guix/build/qt-build-system.scm
index f59b0c420f..59242f5fab 100644
--- a/guix/build/qt-build-system.scm
+++ b/guix/build/qt-build-system.scm
@@ -73,17 +73,17 @@
 
   (filter-map
    (match-lambda
-     ((variable file-type directory selectors ...)
+     ((variable wrap-type file-type directory selectors ...)
       (match (collect-sub-dirs base-directories file-type directory
                                selectors)
         (()
          #f)
         (directories
-         `(,variable = ,directories)))))
+         `(,variable ,wrap-type ,directories)))))
 
    ;; These shall match the search-path-specification for Qt and KDE
    ;; libraries.
-   (list '("XDG_DATA_DIRS" directory "/share"
+   (list '("XDG_DATA_DIRS" suffix directory "/share"
 
            ;; These are "selectors": consider /share if and only if at least
            ;; one of these sub-directories exist.  This avoids adding
@@ -91,10 +91,10 @@
            ;; /share sub-directory.
            "/glib-2.0/schemas" "/sounds" "/themes"
            "/cursors" "/wallpapers" "/icons" "/mime")
-         '("XDG_CONFIG_DIRS" directory "/etc/xdg")
-         '("QT_PLUGIN_PATH" directory "/lib/qt5/plugins")
-         '("QML2_IMPORT_PATH"  directory "/lib/qt5/qml")
-         '("QTWEBENGINEPROCESS_PATH" regular
+         '("XDG_CONFIG_DIRS" = directory "/etc/xdg")
+         '("QT_PLUGIN_PATH" = directory "/lib/qt5/plugins")
+         '("QML2_IMPORT_PATH" = directory "/lib/qt5/qml")
+         '("QTWEBENGINEPROCESS_PATH" = regular
            "/lib/qt5/libexec/QtWebEngineProcess"))))
 
 (define* (wrap-all-programs #:key inputs outputs
-- 
2.32.0