[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] build-system/glib-or-gtk: Factorize 'wrap-all-programs'.
From: |
Mathieu Lirzin |
Subject: |
[PATCH] build-system/glib-or-gtk: Factorize 'wrap-all-programs'. |
Date: |
Tue, 6 Oct 2015 16:49:25 +0200 |
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs):
Factorize it.
---
guix/build/glib-or-gtk-build-system.scm | 77 +++++++++------------------------
1 file changed, 21 insertions(+), 56 deletions(-)
diff --git a/guix/build/glib-or-gtk-build-system.scm
b/guix/build/glib-or-gtk-build-system.scm
index b6291e7..8440588 100644
--- a/guix/build/glib-or-gtk-build-system.scm
+++ b/guix/build/glib-or-gtk-build-system.scm
@@ -135,66 +135,31 @@ Wrapping is not applied to outputs whose name is listed in
GLIB-OR-GTK-WRAP-EXCLUDED-OUTPUTS. This is useful when an output is known not
to contain any GLib or GTK+ binaries, and where wrapping would gratuitously
add a dependency of that output on GLib and GTK+."
+
+ (define (env-var var dirs)
+ "Associate an environment variable VAR with a list of directory DIRS."
+ (and (not (null? dirs)) (list var ":" 'prefix dirs)))
+
(define handle-output
(match-lambda
((output . directory)
(unless (member output glib-or-gtk-wrap-excluded-outputs)
- (let* ((bindir (string-append directory "/bin"))
- (libexecdir (string-append directory "/libexec"))
- (bin-list (append (find-files bindir ".*")
- (find-files libexecdir ".*")))
- (datadirs (data-directories
- (alist-cons output directory inputs)))
- (gtk-mod-dirs (gtk-module-directories
- (alist-cons output directory inputs)))
- (gio-mod-dirs (gio-module-directories
- (alist-cons output directory inputs)))
- (data-env-var
- (if (not (null? datadirs))
- `("XDG_DATA_DIRS" ":" prefix ,datadirs)
- #f))
- (gtk-mod-env-var
- (if (not (null? gtk-mod-dirs))
- `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
- #f))
- (gio-mod-env-var
- (if (not (null? gio-mod-dirs))
- `("GIO_EXTRA_MODULES" ":" prefix ,gio-mod-dirs)
- #f)))
- (cond
- ((and data-env-var gtk-mod-env-var gio-mod-env-var)
- (for-each (cut wrap-program <>
- data-env-var
- gtk-mod-env-var
- gio-mod-env-var)
- bin-list))
- ((and data-env-var gtk-mod-env-var (not gio-mod-env-var))
- (for-each (cut wrap-program <>
- data-env-var
- gtk-mod-env-var)
- bin-list))
- ((and data-env-var (not gtk-mod-env-var) gio-mod-env-var)
- (for-each (cut wrap-program <>
- data-env-var
- gio-mod-env-var)
- bin-list))
- ((and (not data-env-var) gtk-mod-env-var gio-mod-env-var)
- (for-each (cut wrap-program <>
- gio-mod-env-var
- gtk-mod-env-var)
- bin-list))
- ((and data-env-var (not gtk-mod-env-var) (not gio-mod-env-var))
- (for-each (cut wrap-program <>
- data-env-var)
- bin-list))
- ((and (not data-env-var) gtk-mod-env-var (not gio-mod-env-var))
- (for-each (cut wrap-program <>
- gtk-mod-env-var)
- bin-list))
- ((and (not data-env-var) (not gtk-mod-env-var) gio-mod-env-var)
- (for-each (cut wrap-program <>
- gio-mod-env-var)
- bin-list))))))))
+ (let ((bindir (string-append directory "/bin"))
+ (libexecdir (string-append directory "/libexec"))
+ (data-var (env-var "XDG_DATA_DIRS"
+ (data-directories
+ (alist-cons output directory inputs))))
+ (gtk-var (env-var "GTK_PATH"
+ (gtk-module-directories
+ (alist-cons output directory inputs))))
+ (gio-var (env-var "GIO_EXTRA_MODULES"
+ (gio-module-directories
+ (alist-cons output directory inputs)))))
+ (for-each (cute apply wrap-program <>
+ (filter-map identity
+ (list data-var gtk-var gio-var)))
+ (append (find-files bindir ".*")
+ (find-files libexecdir ".*"))))))))
(for-each handle-output outputs)
#t)
- [PATCH] build-system/glib-or-gtk: Factorize 'wrap-all-programs'.,
Mathieu Lirzin <=