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.
This commit is contained in:
		
							parent
							
								
									f714d9fe04
								
							
						
					
					
						commit
						c499125704
					
				
					 1 changed files with 31 additions and 3 deletions
				
			
		| 
						 | 
					@ -321,13 +321,18 @@ pairs.  Example: (\"mit-scheme-9.0.1\" . \"/gnu/mit-scheme/stable.pkg/9.0.1\").
 | 
				
			||||||
                             #:key
 | 
					                             #:key
 | 
				
			||||||
                             (server "ftp.gnu.org")
 | 
					                             (server "ftp.gnu.org")
 | 
				
			||||||
                             (directory (string-append "/gnu/" project))
 | 
					                             (directory (string-append "/gnu/" project))
 | 
				
			||||||
 | 
					                             (keep-file? (const #t))
 | 
				
			||||||
                             (file->signature (cut string-append <> ".sig"))
 | 
					                             (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.  FILE->SIGNATURE must be
 | 
					connections; this can be useful to reuse connections.
 | 
				
			||||||
a procedure; it is passed a source file URL and must return the corresponding
 | 
					
 | 
				
			||||||
signature URL, or #f it signatures are unavailable."
 | 
					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)
 | 
					  (define (latest a b)
 | 
				
			||||||
    (if (version>? a b) 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
 | 
					           (releases (filter-map (match-lambda
 | 
				
			||||||
                                   ((file 'file . _)
 | 
					                                   ((file 'file . _)
 | 
				
			||||||
                                    (and (release-file? project file)
 | 
					                                    (and (release-file? project file)
 | 
				
			||||||
 | 
					                                         (keep-file? file)
 | 
				
			||||||
                                         (file->source directory file)))
 | 
					                                         (file->source directory file)))
 | 
				
			||||||
                                   (_ #f))
 | 
					                                   (_ #f))
 | 
				
			||||||
                                 entries)))
 | 
					                                 entries)))
 | 
				
			||||||
| 
						 | 
					@ -467,6 +473,22 @@ elpa.gnu.org, and all the GNOME packages."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (latest-gnome-release package)
 | 
					(define (latest-gnome-release package)
 | 
				
			||||||
  "Return the latest release of PACKAGE, the name of a GNOME 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
 | 
					  (false-if-ftp-error
 | 
				
			||||||
   (latest-ftp-release package
 | 
					   (latest-ftp-release package
 | 
				
			||||||
                       #:server "ftp.gnome.org"
 | 
					                       #:server "ftp.gnome.org"
 | 
				
			||||||
| 
						 | 
					@ -475,6 +497,12 @@ elpa.gnu.org, and all the GNOME packages."
 | 
				
			||||||
                                                    ("gconf" "GConf")
 | 
					                                                    ("gconf" "GConf")
 | 
				
			||||||
                                                    (x       x)))
 | 
					                                                    (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
 | 
					                       ;; ftp.gnome.org provides no signatures, only
 | 
				
			||||||
                       ;; checksums.
 | 
					                       ;; checksums.
 | 
				
			||||||
                       #:file->signature (const #f))))
 | 
					                       #:file->signature (const #f))))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue