guix package: '--search' no longer shows superseded packages.

Fixes <https://bugs.gnu.org/30566>.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>.

* guix/scripts/package.scm (find-packages-by-description): Ignore
superseded packages.
* tests/guix-package.sh: Add test.
This commit is contained in:
Ludovic Courtès 2018-02-27 15:46:56 +01:00
parent 87b6305e72
commit 0fb405796c
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 27 additions and 7 deletions

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2016 Alex Kost <alezost@gmail.com>
@ -247,11 +247,15 @@ (define (find-packages-by-description regexps)
description matches at least one of REGEXPS sorted by relevance, and the list
of relevance scores."
(let ((matches (fold-packages (lambda (package result)
(match (package-relevance package regexps)
(if (package-superseded package)
result
(match (package-relevance package
regexps)
((? zero?)
result)
(score
(cons (list package score) result))))
(cons (list package score)
result)))))
'())))
(unzip2 (sort matches
(lambda (m1 m2)

View file

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
#
# This file is part of GNU Guix.
@ -118,6 +118,22 @@ grep '^name: gnubg' "$tmpfile"
rm -f "$tmpfile"
# Make sure deprecated packages don't show up: <https://bugs.gnu.org/30566>.
mkdir "$module_dir"
cat > "$module_dir/foo.scm"<<EOF
(define-module (foo)
#:use-module (guix packages)
#:use-module (gnu packages base))
(define-public deprecated
(deprecated-package "fileutils" coreutils))
EOF
guix build -L "$module_dir" -e '(@ (foo) deprecated)' -n
test "`guix package -L "$module_dir" -s ^fileutils$ | grep ^name:`" = ""
rm -rf "$module_dir"
# Make sure `--search' can display all the packages.
guix package --search="" > /dev/null