summaryrefslogtreecommitdiff
path: root/guix/build
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-12-01 22:39:05 +0100
committerLudovic Courtès <ludo@gnu.org>2014-12-01 22:41:04 +0100
commit73aa8ddb75bf143ae21e383118ae69582a0d93b5 (patch)
tree716504637e30776bd11b2c39d7faab8b2e0ce62f /guix/build
parentc8b7569558d8cdde352960ad4eac9bc43a503c5a (diff)
build-system/glib-or-gtk: Allow specific outputs to be excluded from wrapping.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Add #:glib-or-gtk-wrap-excluded-outputs parameter and honor it. * guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Add #:glib-or-gtk-wrap-excluded-outputs parameter and pass it in BUILDER. * doc/guix.texi (Build Systems): Mention it.
Diffstat (limited to 'guix/build')
-rw-r--r--guix/build/glib-or-gtk-build-system.scm60
1 files changed, 34 insertions, 26 deletions
diff --git a/guix/build/glib-or-gtk-build-system.scm b/guix/build/glib-or-gtk-build-system.scm
index 5fc3b7c003..9351a70a0e 100644
--- a/guix/build/glib-or-gtk-build-system.scm
+++ b/guix/build/glib-or-gtk-build-system.scm
@@ -79,37 +79,45 @@ a list with all found directories."
(fold glib-schemas '() inputs))
-(define* (wrap-all-programs #:key inputs outputs #:allow-other-keys)
+(define* (wrap-all-programs #:key inputs outputs
+ (glib-or-gtk-wrap-excluded-outputs '())
+ #:allow-other-keys)
"Implement phase \"glib-or-gtk-wrap\": look for GSettings schemas and
gtk+-v.0 libraries and create wrappers with suitably set environment variables
-if found."
+if found.
+
+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 handle-output
(match-lambda
((output . directory)
- (let* ((bindir (string-append directory "/bin"))
- (bin-list (find-files bindir ".*"))
- (schemas (schemas-directories
- (alist-cons output directory inputs)))
- (gtk-mod-dirs (gtk-module-directories
- (alist-cons output directory inputs)))
- (schemas-env-var
- (if (not (null? schemas))
- `("XDG_DATA_DIRS" ":" prefix ,schemas)
- #f))
- (gtk-mod-env-var
- (if (not (null? gtk-mod-dirs))
- `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
- #f)))
- (cond
- ((and schemas-env-var gtk-mod-env-var)
- (for-each (cut wrap-program <> schemas-env-var gtk-mod-env-var)
- bin-list))
- (schemas-env-var
- (for-each (cut wrap-program <> schemas-env-var)
- bin-list))
- (gtk-mod-env-var
- (for-each (cut wrap-program <> gtk-mod-env-var)
- bin-list)))))))
+ (unless (member output glib-or-gtk-wrap-excluded-outputs)
+ (let* ((bindir (string-append directory "/bin"))
+ (bin-list (find-files bindir ".*"))
+ (schemas (schemas-directories
+ (alist-cons output directory inputs)))
+ (gtk-mod-dirs (gtk-module-directories
+ (alist-cons output directory inputs)))
+ (schemas-env-var
+ (if (not (null? schemas))
+ `("XDG_DATA_DIRS" ":" prefix ,schemas)
+ #f))
+ (gtk-mod-env-var
+ (if (not (null? gtk-mod-dirs))
+ `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
+ #f)))
+ (cond
+ ((and schemas-env-var gtk-mod-env-var)
+ (for-each (cut wrap-program <> schemas-env-var gtk-mod-env-var)
+ bin-list))
+ (schemas-env-var
+ (for-each (cut wrap-program <> schemas-env-var)
+ bin-list))
+ (gtk-mod-env-var
+ (for-each (cut wrap-program <> gtk-mod-env-var)
+ bin-list))))))))
(for-each handle-output outputs)
#t)