From 386b71d1b961a52201f64591076e51487a87bf0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 28 Jul 2016 18:53:13 +0200 Subject: [PATCH] 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. --- gnu/packages/commencement.scm | 4 +++- tests/packages.scm | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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 @@ (define %boot4-inputs ,@(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 @@ (define read-at 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)