gnu-maintenance: ftp.gnome.org does not provide signatures.

* guix/gnu-maintenance.scm (latest-ftp-release): Add #:file->signature
parameter.  Honor it.
(latest-gnome-release): Pass #:file->signature.
* guix/upstream.scm (coalesce-sources): Keep 'signature-urls' as #f
unless both sources provide it.
This commit is contained in:
Ludovic Courtès 2015-12-07 23:54:35 +01:00
parent e80c0f85ba
commit 6efa6f7645
2 changed files with 15 additions and 5 deletions

View file

@ -321,10 +321,13 @@ (define* (latest-ftp-release project
#:key #:key
(server "ftp.gnu.org") (server "ftp.gnu.org")
(directory (string-append "/gnu/" project)) (directory (string-append "/gnu/" project))
(file->signature (cut string-append <> ".sig"))
(ftp-open ftp-open) (ftp-close ftp-close)) (ftp-open ftp-open) (ftp-close ftp-close))
"Return an <upstream-source> for the latest release of PROJECT on SERVER "Return an <upstream-source> for the latest release of PROJECT on SERVER
under DIRECTORY, or #f. Use FTP-OPEN and FTP-CLOSE to open (resp. close) FTP under DIRECTORY, or #f. Use FTP-OPEN and FTP-CLOSE to open (resp. close) FTP
connections; this can be useful to reuse connections." connections; this can be useful to reuse connections. FILE->SIGNATURE must be
a procedure; it is passed a source file URL and must return the corresponding
signature URL, or #f it signatures are unavailable."
(define (latest a b) (define (latest a b)
(if (version>? a b) a b)) (if (version>? a b) a b))
@ -350,7 +353,9 @@ (define (file->source directory file)
(package project) (package project)
(version (tarball->version file)) (version (tarball->version file))
(urls (list url)) (urls (list url))
(signature-urls (list (string-append url ".sig")))))) (signature-urls (match (file->signature url)
(#f #f)
(sig (list sig)))))))
(let loop ((directory directory) (let loop ((directory directory)
(result #f)) (result #f))
@ -468,7 +473,11 @@ (define (latest-gnome-release package)
#:directory (string-append "/pub/gnome/sources/" #:directory (string-append "/pub/gnome/sources/"
(match package (match package
("gconf" "GConf") ("gconf" "GConf")
(x x)))))) (x x)))
;; ftp.gnome.org provides no signatures, only
;; checksums.
#:file->signature (const #f))))
(define %gnu-updater (define %gnu-updater
(upstream-updater (upstream-updater

View file

@ -98,8 +98,9 @@ (define (release>? r1 r2)
(urls (append (upstream-source-urls release) (urls (append (upstream-source-urls release)
(upstream-source-urls head))) (upstream-source-urls head)))
(signature-urls (signature-urls
(append (upstream-source-signature-urls release) (let ((one (upstream-source-signature-urls release))
(upstream-source-signature-urls head)))) (two (upstream-source-signature-urls release)))
(and one two (append one two)))))
tail) tail)
(cons release result))) (cons release result)))
(() (()