Subject: bug#44892: closed (Re: [PATCH] guix: qt-build-system: Wrapped executables honor user's envvars.)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 11 Jan 2021 16:07:02 +0000

Your bug report

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

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
44892: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=44892
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [PATCH] guix: qt-build-system: Wrapped executables honor user's envvars.
From: Hartmut Goebel <[email-masked]>
To: [email-masked]
Date: Mon, 11 Jan 2021 17:06:23 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

This patch has been superseded by http://issues.guix.gnu.org/45784 and 
following, esp. http://issues.guix.gnu.org/45785

Subject: [PATCH] build: qt-build-system: Preserve existing variables when wrapping programs.
From: Timotej Lazar <[email-masked]>
To: [email-masked]
Cc: Timotej Lazar <[email-masked]>
Date: Thu, 26 Nov 2020 20:59:42 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

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

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