[PATCH] build: qt-build-system: Preserve existing variables when wrapping programs.

  • Done
  • quality assurance status badge
Details
2 participants
  • Hartmut Goebel
  • Timotej Lazar
Owner
unassigned
Submitted by
Timotej Lazar
Severity
normal
T
T
Timotej Lazar wrote on 26 Nov 2020 20:59
(address . guix-patches@gnu.org)(name . Timotej Lazar)(address . timotej.lazar@araneo.si)
20201126195942.21200-1-timotej.lazar@araneo.si
This ensures that any additional plugin and icon directories installed in the
profile are found by the wrapped program.

* guix/build/qt-build-system.scm (variables-for-wrapping): Use prefix instead
of = for wrap-program.
---
Hi,

The qt-wrap phase sets environment variables (including XDG_DATA_DIRS
and QT_PLUGIN_PATH) to ensure that required plugin and data directories
are found at runtime. The current code uses = for wrap-program, which
overrides any existing settings for those variables and prevents Qt from
finding additional plugins and icons installed in the user’s profile.
For instance, this prevented qpdfview from picking up the icon theme set
by LXQt.

This patch prepends paths to environment variables instead of overriding
them, so that any paths that are already set are also searched. I used
prefix instead of suffix so that the paths required by the program
itself are considered first.

I think but am not sure that this is the right approach. There are ~170
packages using qt-build-system, including some KDE libs that many other
packages depend on, so this should probably be applied to staging. I
checked that the patch works for a small sample of packages (kmines,
lyx, quaternion, quassel, qpdfview, scantailor and zeal). Unfortunately
I can’t easily rebuild KDE to test everything.

Thanks!
Timotej

guix/build/qt-build-system.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/guix/build/qt-build-system.scm b/guix/build/qt-build-system.scm
index 005157b0a4..93f512b5d6 100644
--- a/guix/build/qt-build-system.scm
+++ b/guix/build/qt-build-system.scm
@@ -60,7 +60,7 @@
(lambda (var-to-wrap) (not (null? (last var-to-wrap))))
(map
(lambda (var-spec)
- `(,(first var-spec) = ,(collect-sub-dirs base-directories (last var-spec))))
+ `(,(first var-spec) prefix ,(collect-sub-dirs base-directories (last var-spec))))
(list
;; these shall match the search-path-specification for Qt and KDE
;; libraries
--
2.29.2
H
?