summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-06-07 19:35:20 +0200
committerLudovic Courtès <ludo@gnu.org>2014-06-07 19:35:20 +0200
commitf986c264b2502df5376f4c50ff104b5fc8db9f23 (patch)
treedab7ce3810b6c30bab0f87d0b33178bb8a4ec21e
parent1c93be5600fb90a64cbbdf7a55061902d2ff150a (diff)
downloadguix-f986c264b2502df5376f4c50ff104b5fc8db9f23.tar.gz
build-system/gnu: Add 'package-with-restricted-references'.
* guix/build-system/gnu.scm (package-with-restricted-references): New
  procedure.
-rw-r--r--guix/build-system/gnu.scm12
1 files changed, 11 insertions, 1 deletions
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 0c3f1ea4e3..4fa1d1683d 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -33,7 +33,8 @@
             package-with-extra-configure-variable
             static-libgcc-package
             static-package
-            dist-package))
+            dist-package
+            package-with-restricted-references))
 
 ;; Commentary:
 ;;
@@ -190,6 +191,15 @@ runs `make distcheck' and whose result is one or more source tarballs."
            ("gettext"  ,(ref '(gnu packages gettext) 'gnu-gettext))
            ("texinfo"  ,(ref '(gnu packages texinfo) 'texinfo))))))))
 
+(define (package-with-restricted-references p refs)
+  "Return a package whose outputs are guaranteed to only refer to the packages
+listed in REFS."
+  (if (eq? (package-build-system p) gnu-build-system) ; XXX: dirty
+      (package (inherit p)
+        (arguments `(#:allowed-references ,refs
+                     ,@(package-arguments p))))
+      p))
+
 
 (define %store
   ;; Store passed to STANDARD-INPUTS.