summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-05-11 14:36:58 +0200
committerLudovic Courtès <ludo@gnu.org>2013-05-11 14:36:58 +0200
commitf92300852f1ec6afc9cb55594d5a94f7cab9ef54 (patch)
tree7fdc24e4484f03d259900593110232b60cb8395d
parent0ba91c945be8a963ac9d11ae538c4e8b30374558 (diff)
downloadguix-patches-f92300852f1ec6afc9cb55594d5a94f7cab9ef54.tar
guix-patches-f92300852f1ec6afc9cb55594d5a94f7cab9ef54.tar.gz
refresh: Add `--key-server' and `--gpg'.
* guix/scripts/refresh.scm (%options): Add `--key-server' and `--gpg'. (show-help): Update accordingly. (update-package): New procedure, formerly in `guix-refresh'. (guix-refresh): Use it. Parameterize `%openpgp-key-server' and `%gpg-command'.
-rw-r--r--doc/guix.texi13
-rw-r--r--guix/scripts/refresh.scm76
2 files changed, 61 insertions, 28 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 9147f43b90..b14310f908 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1313,6 +1313,19 @@ The command above specifically updates the @code{emacs} and
@code{idutils} packages. The @code{--select} option would have no
effect in this case.
+The following options can be used to customize GnuPG operation:
+
+@table @code
+
+@item --key-server=@var{host}
+Use @var{host} as the OpenPGP key server when importing a public key.
+
+@item --gpg=@var{command}
+Use @var{command} as the GnuPG 2.x command. @var{command} is searched
+for in @code{$PATH}.
+
+@end table
+
@c *********************************************************************
@node GNU Distribution
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index 37de3b628d..10715ebc2d 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -22,6 +22,7 @@
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix gnu-maintenance)
+ #:use-module (guix gnupg)
#:use-module (gnu packages)
#:use-module ((gnu packages base) #:select (%final-inputs))
#:use-module (ice-9 match)
@@ -57,6 +58,13 @@
(leave (_ "~a: invalid selection; expected `core' or `non-core'")
arg)))))
+ (option '("key-server") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'key-server arg result)))
+ (option '("gpg") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'gpg-command arg result)))
+
(option '(#\h "help") #f #f
(lambda args
(show-help)
@@ -79,12 +87,45 @@ specified with `--select'.\n"))
`core' or `non-core'"))
(newline)
(display (_ "
+ --key-server=HOST use HOST as the OpenPGP key server"))
+ (display (_ "
+ --gpg=COMMAND use COMMAND as the GnuPG 2.x command"))
+ (newline)
+ (display (_ "
-h, --help display this help and exit"))
(display (_ "
-V, --version display version information and exit"))
(newline)
(show-bug-report-information))
+(define (update-package store package)
+ "Update the source file that defines PACKAGE with the new version."
+ (let-values (((version tarball)
+ (catch #t
+ (lambda ()
+ (package-update store package))
+ (lambda _
+ (values #f #f))))
+ ((loc)
+ (or (package-field-location package
+ 'version)
+ (package-location package))))
+ (when version
+ (if (and=> tarball file-exists?)
+ (begin
+ (format (current-error-port)
+ (_ "~a: ~a: updating from version ~a to version ~a...~%")
+ (location->string loc)
+ (package-name package)
+ (package-version package) version)
+ (let ((hash (call-with-input-file tarball
+ (compose sha256 get-bytevector-all))))
+ (update-package-source package version hash)))
+ (warning (_ "~a: version ~a could not be \
+downloaded and authenticated; not updating")
+ (package-name package) version)))))
+
+
;;;
;;; Entry point.
@@ -148,34 +189,13 @@ update would trigger a complete rebuild."
(with-error-handling
(if update?
(let ((store (open-connection)))
- (for-each (lambda (package)
- (let-values (((version tarball)
- (catch #t
- (lambda ()
- (package-update store package))
- (lambda _
- (values #f #f))))
- ((loc)
- (or (package-field-location package
- 'version)
- (package-location package))))
- (when version
- (if (and=> tarball file-exists?)
- (begin
- (format (current-error-port)
- (_ "~a: ~a: updating from version ~a to version ~a...~%")
- (location->string loc)
- (package-name package)
- (package-version package) version)
- (let ((hash (call-with-input-file tarball
- (compose sha256
- get-bytevector-all))))
- (update-package-source package version
- hash)))
- (warning (_ "~a: version ~a could not be \
-downloaded and authenticated; not updating")
- (package-name package) version)))))
- packages))
+ (parameterize ((%openpgp-key-server
+ (or (assoc-ref opts 'key-server)
+ (%openpgp-key-server)))
+ (%gpg-command
+ (or (assoc-ref opts 'gpg-command)
+ (%gpg-command))))
+ (for-each (cut update-package store <>) packages)))
(for-each (lambda (package)
(match (false-if-exception (package-update-path package))
((new-version . directory)