import: gnome: Reject version strings such as "43.alpha".
authorLudovic Courtès <ludo@gnu.org>
Thu, 8 Sep 2022 10:20:28 +0000 (12:20 +0200)
committerLudovic Courtès <ludo@gnu.org>
Thu, 8 Sep 2022 14:22:21 +0000 (16:22 +0200)
Reported by Maxim Cournoyer.
This is a followup to 61b63e7fa73be8828af2b36d196c3676c974e119.

* guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]:
Reject VERSION is the minor or micro part is not an integer.

guix/import/gnome.scm

index 3915f19..49ad716 100644 (file)
@@ -62,14 +62,16 @@ not be determined."
 
   (define (even-minor-version? version)
     (match (string-tokenize version %not-dot)
-      (((= string->number major) (= string->number minor) micro)
+      (((= string->number major) (= string->number minor) (= string->number micro))
        ;; This is for things like GLib, with version strings like "2.72.3".
-       (and minor (even? minor)))
-      (((= string->number major) . _)
+       (and minor (even? minor) micro))
+      (((= string->number major) (= string->number minor))
        ;; GNOME applications have version strings like "42.1" (only two
-       ;; integers) and are not subject to the odd/even policy.  MAJOR should
-       ;; be a valid number though.
-       major)))
+       ;; integers) and are not subject to the odd/even policy.  MAJOR and
+       ;; MINOR should be valid numbers though; "43.alpha" is rejected.
+       (and major minor))
+      (_
+       #f)))
 
   (define upstream-name
     ;; Some packages like "NetworkManager" have camel-case names.