guix package: '-s' displays different packages that have the same location.

Before that, 'guix package -s foobarbaz' would display only one package
when several match but they have the same location (which is common when
using 'inherit'.)

The original rationale was given at
<http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00280.html> but
it was arguably misguided because it led to "real" packages being
hidden.

Reported by Tomáš Čech <sleep_walker@gnu.org>.

* guix/scripts/package.scm (find-packages-by-description)[same-location?]:
  Remove.
  Remove call to 'delete-duplicates'.
This commit is contained in:
Ludovic Courtès 2015-03-20 21:48:31 +01:00
parent ac85b51521
commit 9eeb3d8c28

View file

@ -240,28 +240,22 @@ (define generation-ctime-alist
(define (find-packages-by-description rx)
"Return the list of packages whose name, synopsis, or description matches
RX."
(define (same-location? p1 p2)
;; Compare locations of two packages.
(equal? (package-location p1) (package-location p2)))
(sort
(fold-packages (lambda (package result)
(define matches?
(cut regexp-exec rx <>))
(delete-duplicates
(sort
(fold-packages (lambda (package result)
(define matches?
(cut regexp-exec rx <>))
(if (or (matches? (package-name package))
(and=> (package-synopsis package)
(compose matches? P_))
(and=> (package-description package)
(compose matches? P_)))
(cons package result)
result))
'())
(lambda (p1 p2)
(string<? (package-name p1)
(package-name p2))))
same-location?))
(if (or (matches? (package-name package))
(and=> (package-synopsis package)
(compose matches? P_))
(and=> (package-description package)
(compose matches? P_)))
(cons package result)
result))
'())
(lambda (p1 p2)
(string<? (package-name p1)
(package-name p2)))))
(define-syntax-rule (leave-on-EPIPE exp ...)
"Run EXP... in a context when EPIPE errors are caught and lead to 'exit'