diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-12-08 16:05:55 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-12-08 16:09:33 +0100 |
commit | c4991257047f5969946da387cbeee10e2db4e6ab (patch) | |
tree | 8e9c986cd8d2f5b244579773ac5b5454f6c50c1a | |
parent | f714d9fe0464561c4300f419a2d861ef1b3a3f6c (diff) | |
download | guix-c4991257047f5969946da387cbeee10e2db4e6ab.tar.gz |
gnu-maintenance: Exclude development releases from GNOME update candidates.
Suggested by Efraim Flashner <efraim@flashner.co.il>. * guix/gnu-maintenance.scm (latest-ftp-release): Add #:keep-file? parameter and honor it. (latest-gnome-release)[%not-dot]: New variable. [even-minor-version?, even-numbered-tarball?]: New procedures. Pass EVEN-NUMBERED-TARBALL? as #:keep-file? argument.
-rw-r--r-- | guix/gnu-maintenance.scm | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index 93645367e9..910270fab1 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -321,13 +321,18 @@ pairs. Example: (\"mit-scheme-9.0.1\" . \"/gnu/mit-scheme/stable.pkg/9.0.1\"). #:key (server "ftp.gnu.org") (directory (string-append "/gnu/" project)) + (keep-file? (const #t)) (file->signature (cut string-append <> ".sig")) (ftp-open ftp-open) (ftp-close ftp-close)) "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 -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." +connections; this can be useful to reuse connections. + +KEEP-FILE? is a predicate to decide whether to consider a given file (source +tarball) as a valid candidate based on its name. + +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) (if (version>? a b) a b)) @@ -382,6 +387,7 @@ signature URL, or #f it signatures are unavailable." (releases (filter-map (match-lambda ((file 'file . _) (and (release-file? project file) + (keep-file? file) (file->source directory file))) (_ #f)) entries))) @@ -467,6 +473,22 @@ elpa.gnu.org, and all the GNOME packages." (define (latest-gnome-release package) "Return the latest release of PACKAGE, the name of a GNOME package." + (define %not-dot + (char-set-complement (char-set #\.))) + + (define (even-minor-version? version) + (match (string-tokenize (version-major+minor version) + %not-dot) + (((= string->number major) (= string->number minor)) + (even? minor)) + (_ + #t))) ;cross fingers + + (define (even-numbered-tarball? file) + (let-values (((name version) (gnu-package-name->name+version file))) + (and version + (even-minor-version? version)))) + (false-if-ftp-error (latest-ftp-release package #:server "ftp.gnome.org" @@ -475,6 +497,12 @@ elpa.gnu.org, and all the GNOME packages." ("gconf" "GConf") (x x))) + + ;; <https://www.gnome.org/gnome-3/source/> explains + ;; that odd minor version numbers represent development + ;; releases, which we are usually not interested in. + #:keep-file? even-numbered-tarball? + ;; ftp.gnome.org provides no signatures, only ;; checksums. #:file->signature (const #f)))) |