refresh: Allow users to refer to specific package versions.

* guix/scripts/refresh.scm (guix-refresh): Use 'specification->package'
  instead of 'find-packages-by-name'.  This allows users to specify
  things like "qt-4.8.6".
* doc/guix.texi (Invoking guix refresh): Add an example.
This commit is contained in:
Ludovic Courtès 2015-04-16 23:13:28 +02:00
parent 77db91addc
commit 4b9b3cbbc4
2 changed files with 8 additions and 11 deletions

View File

@ -3285,7 +3285,7 @@ In addition, @command{guix refresh} can be passed one or more package
names, as in this example:
@example
guix refresh -u emacs idutils
guix refresh -u emacs idutils gcc-4.8.4
@end example
@noindent

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
@ -207,16 +207,13 @@ update would trigger a complete rebuild."
(list-dependent? (assoc-ref opts 'list-dependent?))
(key-download (assoc-ref opts 'key-download))
(packages
(match (concatenate
(filter-map (match-lambda
(('argument . value)
(let ((p (find-packages-by-name value)))
(when (null? p)
(leave (_ "~a: no package by that name~%")
value))
p))
(match (filter-map (match-lambda
(('argument . spec)
;; Take either the specified version or the
;; latest one.
(specification->package spec))
(_ #f))
opts))
opts)
(() ; default to all packages
(let ((select? (match (assoc-ref opts 'select)
('core core-package?)