summary refs log tree commit diff
diff options
context:
space:
mode:
-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.