gnu: commencement: 'guile-final' is now "hidden".

This way, we no longer have this annoying warning:

  $ guix build guile -n
  guix build: warning: ambiguous package specification `guile'
  guix build: warning: choosing guile-2.0.11 from gnu/packages/guile.scm:128:2

* gnu/packages/commencement.scm (guile-final): Use 'hidden-package'.
* tests/packages.scm ("fold-packages, hidden package"): New test.
This commit is contained in:
Ludovic Courtès 2016-07-28 18:53:13 +02:00
parent 6980511b73
commit 386b71d1b9
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 17 additions and 1 deletions

View File

@ -685,8 +685,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
,@(alist-delete "bash" %boot3-inputs))) ,@(alist-delete "bash" %boot3-inputs)))
(define-public guile-final (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-bootstrap-guile
(package-with-explicit-inputs guile-2.0/fixed (package-with-explicit-inputs (hidden-package guile-2.0/fixed)
%boot4-inputs %boot4-inputs
(current-source-location) (current-source-location)
#:guile %bootstrap-guile))) #:guile %bootstrap-guile)))

View File

@ -749,6 +749,20 @@
r)) r))
#f)) #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" (test-assert "find-packages-by-name"
(match (find-packages-by-name "hello") (match (find-packages-by-name "hello")
(((? (cut eq? hello <>))) #t) (((? (cut eq? hello <>))) #t)