GNU bug report logs - #55854
"guix refresh" doesn't handle older versions like gtk+@2

Previous Next

Package: guix;

Reported by: Kaelyn <kaelyn.alexi <at> protonmail.com>

Date: Wed, 8 Jun 2022 17:20:02 UTC

Severity: normal

To reply to this bug, email your comments to 55854 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#55854; Package guix. (Wed, 08 Jun 2022 17:20:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Kaelyn <kaelyn.alexi <at> protonmail.com>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Wed, 08 Jun 2022 17:20:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Kaelyn <kaelyn.alexi <at> protonmail.com>
To: "bug-guix <at> gnu.org" <bug-guix <at> gnu.org>
Subject: "guix refresh" doesn't handle older versions like gtk+@2
Date: Wed, 08 Jun 2022 17:18:54 +0000
When attempting a mass "guix refresh -ru" of system and home profile packages, some bogus updates were encountered. One category of those is older/multiple versions of a package all being updated to the latest, as was seen with gtk+@2, libsigc++@2, and the gtkmm packages. For example:


$  guix refresh gtk+@2
gnu/packages/gtk.scm:851:13: gtk+ would be upgraded from 2.24.33 to 3.94.0


Per the IRC discussion at https://logs.guix.gnu.org/guix/2022-06-08.log#185744, those packages should only be upgraded within the same major version. Maxime suggested adding a REQUIRED-MAJOR-VERSION field to such packages so they are updated correctly: https://logs.guix.gnu.org/guix/2022-06-08.log#185842

(Side note: I believe gtk+ uses a numbering scheme of x.9y.0 for pre-releases of the (x+1).0.0 release; i.e. gtk+ 3.94.0 is a pre-release of gtk 4.)




Information forwarded to bug-guix <at> gnu.org:
bug#55854; Package guix. (Fri, 17 Jun 2022 13:53:02 GMT) Full text and rfc822 format available.

Message #8 received at 55854 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 55854 <at> debbugs.gnu.org
Cc: Kaelyn <kaelyn.alexi <at> protonmail.com>
Subject: [PATCH 1/2] import: Check that GNOME minor version is not a semver
 prerelease.
Date: Fri, 17 Jun 2022 15:44:02 +0200
* guix/import/gnome.scm (latest-gnome-release)[even-minor-version]: Rename
to...
[stable-minor-version?]: ... this.  Also check that minor < 90.
---
 guix/import/gnome.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/guix/import/gnome.scm b/guix/import/gnome.scm
index 43966c1028..1a0786ab8d 100644
--- a/guix/import/gnome.scm
+++ b/guix/import/gnome.scm
@@ -60,10 +60,10 @@ (define (latest-gnome-release package)
   (define %not-dot
     (char-set-complement (char-set #\.)))
 
-  (define (even-minor-version? version)
+  (define (stable-minor-version? version)
     (match (string-tokenize version %not-dot)
       (((= string->number major) (= string->number minor) . rest)
-       (and minor (even? minor)))
+       (and minor (even? minor) (< minor 90)))
       (((= string->number major) . _)
        ;; It should at last start with a digit.
        major)))
@@ -94,7 +94,7 @@ (define upstream-name
          (let* ((releases (assoc-ref releases upstream-name))
                 (latest   (fold (match-lambda*
                                   (((key . value) result)
-                                   (cond ((even-minor-version? key)
+                                   (cond ((stable-minor-version? key)
                                           (match result
                                             (#f
                                              (cons key value))
-- 
2.36.1





Information forwarded to bug-guix <at> gnu.org:
bug#55854; Package guix. (Fri, 17 Jun 2022 13:53:02 GMT) Full text and rfc822 format available.

Message #11 received at 55854 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 55854 <at> debbugs.gnu.org
Cc: Kaelyn <kaelyn.alexi <at> protonmail.com>
Subject: [PATCH 2/2] gnu: Restrict gtk+ updaters to their major versions.
Date: Fri, 17 Jun 2022 15:46:29 +0200
* gnu/packages/gtk.scm (gtk+-2, gtk+)[properties]: Add update-major-version.
* guix/import/gnome.scm (lastest-gnome-release): Add ‘allowed-major-version?’
and use it to filter latest releases.
---
 gnu/packages/gtk.scm  |  6 ++++--
 guix/import/gnome.scm | 33 +++++++++++++++++++++++----------
 2 files changed, 27 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 4d6a690fbb..73b313520f 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -939,7 +939,8 @@ (define-public gtk+-2
 suitable for projects ranging from small one-off tools to complete
 application suites.")
     (license license:lgpl2.0+)
-    (home-page "https://www.gtk.org/")))
+    (home-page "https://www.gtk.org/")
+    (properties `((update-major-version . 2)))))
 
 (define-public gtk+
   (package
@@ -1073,7 +1074,8 @@ (define-public gtk+
     (native-search-paths
      (list (search-path-specification
             (variable "GUIX_GTK3_PATH")
-            (files '("lib/gtk-3.0")))))))
+            (files '("lib/gtk-3.0")))))
+    (properties `((update-major-version . 3)))))
 
 (define-public gtk
   (package
diff --git a/guix/import/gnome.scm b/guix/import/gnome.scm
index 1a0786ab8d..94a2598ab2 100644
--- a/guix/import/gnome.scm
+++ b/guix/import/gnome.scm
@@ -68,6 +68,17 @@ (define (stable-minor-version? version)
        ;; It should at last start with a digit.
        major)))
 
+  (define allowed-major-version?
+    (let ((fixed-major (assoc-ref (package-properties package)
+                                  'update-major-version)))
+      (if fixed-major
+          (lambda (version)
+            (match (string-tokenize version %not-dot)
+              (((= string->number major) . _)
+               (= major fixed-major))
+              (_ #f)))
+          (const #t))))
+
   (define upstream-name
     ;; Some packages like "NetworkManager" have camel-case names.
     (package-upstream-name package))
@@ -94,16 +105,18 @@ (define upstream-name
          (let* ((releases (assoc-ref releases upstream-name))
                 (latest   (fold (match-lambda*
                                   (((key . value) result)
-                                   (cond ((stable-minor-version? key)
-                                          (match result
-                                            (#f
-                                             (cons key value))
-                                            ((newest . _)
-                                             (if (version>? key newest)
-                                                 (cons key value)
-                                                 result))))
-                                         (else
-                                          result))))
+                                   (cond
+                                    ((not (allowed-major-version? key))
+                                     result)
+                                    ((stable-minor-version? key)
+                                     (match result
+                                       (#f
+                                        (cons key value))
+                                       ((newest . _)
+                                        (if (version>? key newest)
+                                            (cons key value)
+                                            result))))
+                                    (else result))))
                                 #f
                                 releases)))
            (and latest
-- 
2.36.1





This bug report was last modified 3 years ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.