[PATCH 4/4] guix: qt-utils: Don't include useless inputs in wrapped variables.

  • Done
  • quality assurance status badge
Details
2 participants
  • Hartmut Goebel
  • Hartmut Goebel
Owner
unassigned
Submitted by
Hartmut Goebel
Severity
normal
Merged with
H
H
Hartmut Goebel wrote on 11 Jan 2021 15:41
(name . Jakub K?dzio?ka)(address . kuba@kadziolka.net)
fc7d711941f76564bed67e76979196abd75836d9.1610376081.git.h.goebel@crazy-compilers.com
From: Jakub K?dzio?ka <kuba@kadziolka.net>

Include only those inputs into XDG_DATA_DIRS having
some subdirectory of /share which is typically used by Qt.

* guix/build/qt-utils.scm (variables-for-wrapping): Take the
output directory as an argument for special handling. Check for
subdirectories of /share used by Qt before including inputs in
XDG_DATA_DIRS.
(wrap-qt-program*): Pass the output directory to variables-for-wrapping.

Co-authored-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
---
guix/build/qt-utils.scm | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)

Toggle diff (67 lines)
diff --git a/guix/build/qt-utils.scm b/guix/build/qt-utils.scm
index a03b09f05e..8e6db10ca1 100644
--- a/guix/build/qt-utils.scm
+++ b/guix/build/qt-utils.scm
@@ -30,25 +30,42 @@
(define %qt-wrap-excluded-inputs
'(list "cmake" "extra-cmake-modules" "qttools"))
-(define (variables-for-wrapping base-directories)
+;; NOTE: Apart from standard subdirectories of /share, Qt also provides
+;; facilities for per-application data directories, such as
+;; /share/quassel. Thus, we include the output directory even if it doesn't
+;; contain any of the standard subdirectories.
+(define (variables-for-wrapping base-directories output-directory)
- (define (collect-sub-dirs base-directories subdirectory)
+ (define (collect-sub-dirs base-directories subdirectory-spec)
(filter-map
(lambda (dir)
- (let ((directory (string-append dir subdirectory)))
- (if (directory-exists? directory) directory #f)))
+ (match
+ subdirectory-spec
+ ((subdir)
+ (and (directory-exists? (string-append dir subdir))
+ (string-append dir (car subdirectory-spec))))
+ ((subdir children)
+ (and
+ (or
+ (and (string=? dir output-directory)
+ (directory-exists? (string-append dir subdir)))
+ (or-map
+ (lambda (kid) (directory-exists? (string-append dir subdir kid)))
+ children))
+ (string-append dir subdir)))))
base-directories))
(filter
(lambda (var-to-wrap) (not (null? (last var-to-wrap))))
(map
- (lambda (var-spec)
- (list (first var-spec) (second var-spec)
- (collect-sub-dirs base-directories (third var-spec))))
+ (match-lambda
+ ((var kind . subdir-spec)
+ `(,var ,kind ,(collect-sub-dirs base-directories subdir-spec))))
(list
;; these shall match the search-path-specification for Qt and KDE
;; libraries
- '("XDG_DATA_DIRS" suffix "/share")
+ '("XDG_DATA_DIRS" suffix "/share" ("/applications" "/fonts"
+ "/icons" "/mime"))
'("XDG_CONFIG_DIRS" suffix "/etc/xdg")
'("QT_PLUGIN_PATH" prefix "/lib/qt5/plugins")
'("QML2_IMPORT_PATH" prefix "/lib/qt5/qml")))))
@@ -66,7 +83,8 @@
inputs))
(let ((vars-to-wrap (variables-for-wrapping
- (cons output-dir input-directories))))
+ (cons output-dir input-directories)
+ output-dir)))
(when (not (null? vars-to-wrap))
(apply wrap-program program vars-to-wrap))))
--
2.21.3
H
H
Hartmut Goebel wrote on 11 Jan 2021 16:46
(no subject)
(name . debbugs control)(address . control@debbugs.gnu.org)
ac7e562e-076e-57c7-d0b0-a4e3976f688f@goebel-consult.de
merge 45785 45784 45786 45787
?
Your comment

This issue is archived.

To comment on this conversation send an email to 45787@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 45787
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch