diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-12-01 22:39:05 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-12-01 22:41:04 +0100 |
commit | 73aa8ddb75bf143ae21e383118ae69582a0d93b5 (patch) | |
tree | 716504637e30776bd11b2c39d7faab8b2e0ce62f /guix/build | |
parent | c8b7569558d8cdde352960ad4eac9bc43a503c5a (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.scm | 60 |
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) |