diff mbox series

[bug#49227,1/3] build: qt-build-system: Allow users to override/extend XDG_DATA_DIRS.

Message ID 20210625180823.10382-1-maxim.cournoyer@gmail.com
State Accepted
Headers show
Series Some Qt/qtbase improvements. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Maxim Cournoyer June 25, 2021, 6:08 p.m. UTC
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(-)

Comments

M June 26, 2021, 4:32 p.m. UTC | #1
Maxim Cournoyer schreef op vr 25-06-2021 om 14:08 [-0400]:
>     ;; 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"

I'd recomend adding a comment here, explaining why 'suffix' is necessary
and '=' is unsufficient, with a link to the bug and patches tracker,
for clarity.

Greetings,
Maxime.
Maxim Cournoyer July 2, 2021, 9:08 p.m. UTC | #2
Hi Maxime,

Maxime Devos <maximedevos@telenet.be> writes:

> Maxim Cournoyer schreef op vr 25-06-2021 om 14:08 [-0400]:
>>     ;; 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"
>
> I'd recomend adding a comment here, explaining why 'suffix' is necessary
> and '=' is unsufficient, with a link to the bug and patches tracker,
> for clarity.

I realized that there had already been the same fix on staging.  I had
to spend some time to manually resolve "conflicts" (which were not
immediately apparent due to code having changed place on core-updates).
The conflict cherry-picked from core-updates which ended up fixing this
was 30759c4aadf279e470e8d7f94de332a31c1b9f42.

I rebased the commits that had been pushed to master on that and a few
related others, and pushed as d5c9cc6d9d979bfca5f035429bcf510a0a2285a3,
which contains extra comments.

Thank you!

Maxim
diff mbox series

Patch

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