guix package: Support multiple profiles with '--list-installed'.
* guix/scripts/package.scm (process-query): List installed multiple profiles. * tests/guix-package-net.sh: Test it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
197c07a847
commit
881eaae1ab
@ -675,12 +675,13 @@ doesn't need it."
|
|||||||
(define (process-query opts)
|
(define (process-query opts)
|
||||||
"Process any query specified by OPTS. Return #t when a query was actually
|
"Process any query specified by OPTS. Return #t when a query was actually
|
||||||
processed, #f otherwise."
|
processed, #f otherwise."
|
||||||
(let* ((profiles (match (filter-map (match-lambda
|
(let* ((profiles (delete-duplicates
|
||||||
(('profile . p) p)
|
(match (filter-map (match-lambda
|
||||||
(_ #f))
|
(('profile . p) p)
|
||||||
opts)
|
(_ #f))
|
||||||
(() (list %current-profile))
|
opts)
|
||||||
(lst (reverse lst))))
|
(() (list %current-profile))
|
||||||
|
(lst (reverse lst)))))
|
||||||
(profile (match profiles
|
(profile (match profiles
|
||||||
((head tail ...) head))))
|
((head tail ...) head))))
|
||||||
(match (assoc-ref opts 'query)
|
(match (assoc-ref opts 'query)
|
||||||
@ -718,7 +719,8 @@ processed, #f otherwise."
|
|||||||
|
|
||||||
(('list-installed regexp)
|
(('list-installed regexp)
|
||||||
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
|
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
|
||||||
(manifest (profile-manifest profile))
|
(manifest (concatenate-manifests
|
||||||
|
(map profile-manifest profiles)))
|
||||||
(installed (manifest-entries manifest)))
|
(installed (manifest-entries manifest)))
|
||||||
(leave-on-EPIPE
|
(leave-on-EPIPE
|
||||||
(for-each (match-lambda
|
(for-each (match-lambda
|
||||||
@ -729,8 +731,8 @@ processed, #f otherwise."
|
|||||||
name (or version "?") output path))))
|
name (or version "?") output path))))
|
||||||
|
|
||||||
;; Show most recently installed packages last.
|
;; Show most recently installed packages last.
|
||||||
(reverse installed)))
|
(reverse installed))))
|
||||||
#t))
|
#t)
|
||||||
|
|
||||||
(('list-available regexp)
|
(('list-available regexp)
|
||||||
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
|
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# GNU Guix --- Functional package management for GNU
|
# GNU Guix --- Functional package management for GNU
|
||||||
# Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
# Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||||
|
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Guix.
|
# This file is part of GNU Guix.
|
||||||
#
|
#
|
||||||
@ -78,6 +79,17 @@ esac
|
|||||||
|
|
||||||
test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
|
test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
|
||||||
|
|
||||||
|
guix package --bootstrap -p "$profile_alt" -i gcc-bootstrap
|
||||||
|
installed="`guix package -p "$profile" -p "$profile_alt" -I | cut -f1 | xargs echo | sort`"
|
||||||
|
case "x$installed" in
|
||||||
|
"gcc-bootstrap guile-bootstrap make-boot0")
|
||||||
|
true;;
|
||||||
|
"*")
|
||||||
|
false;;
|
||||||
|
esac
|
||||||
|
test "`guix package -p "$profile_alt" -p "$profile" -I | wc -l`" = "3"
|
||||||
|
rm "$profile_alt"
|
||||||
|
|
||||||
# List generations.
|
# List generations.
|
||||||
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
|
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
|
||||||
= " guile-bootstrap"
|
= " guile-bootstrap"
|
||||||
|
Loading…
Reference in New Issue
Block a user