summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/commencement.scm4
-rw-r--r--tests/packages.scm14
2 files changed, 17 insertions, 1 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index c52b6e8389..54b524aec7 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -685,8 +685,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
,@(alist-delete "bash" %boot3-inputs)))
(define-public guile-final
+ ;; This package must be public because other modules refer to it. However,
+ ;; mark it as hidden so that 'fold-packages' ignores it.
(package-with-bootstrap-guile
- (package-with-explicit-inputs guile-2.0/fixed
+ (package-with-explicit-inputs (hidden-package guile-2.0/fixed)
%boot4-inputs
(current-source-location)
#:guile %bootstrap-guile)))
diff --git a/tests/packages.scm b/tests/packages.scm
index 7c9ad05c21..e9c8690730 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -749,6 +749,20 @@
r))
#f))
+(test-assert "fold-packages, hidden package"
+ ;; There are two public variables providing "guile@2.0" ('guile-final' in
+ ;; commencement.scm and 'guile-2.0/fixed' in guile.scm), but only the latter
+ ;; should show up.
+ (match (fold-packages (lambda (p r)
+ (if (and (string=? (package-name p) "guile")
+ (string-prefix? "2.0"
+ (package-version p)))
+ (cons p r)
+ r))
+ '())
+ ((one)
+ (eq? one guile-2.0/fixed))))
+
(test-assert "find-packages-by-name"
(match (find-packages-by-name "hello")
(((? (cut eq? hello <>))) #t)