unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: iyzsong--- via Guix-patches via <guix-patches@gnu.org>
To: 75418@debbugs.gnu.org
Cc: 宋文武 <iyzsong@member.fsf.org>, 宋文武 <iyzsong@envs.net>
Subject: [bug#75418] [PATCH] import: git: Do not search pre-release words in tag prefix.
Date: Tue,  7 Jan 2025 14:16:28 +0800	[thread overview]
Message-ID: <98d422b8ec544458719b20d6a8ff85cc1f681f10.1736230582.git.iyzsong@member.fsf.org> (raw)

From: 宋文武 <iyzsong@member.fsf.org>

This fixes tags like 'xfce4-dev-tools-4.20.0'.

* tests/import-git.scm ("latest-git-tag-version: prefix contains pre-release
words"): New test.
* guix/import/git.scm (latest-tag): Don't filter out pre-releases tags.
(version-mapping): Filter out pre-releases tags from versions.
* gnu/packages/xfce.scm (garcon, thunar-archive-plugin, xfce4-dev-tools):
Remove FIXME comments for the 'generic-git' updater.

Change-Id: I7683200fa451d7fad153aa08fa9d5761688de01d
---
 gnu/packages/xfce.scm |  3 ---
 guix/import/git.scm   | 17 +++++++++--------
 tests/import-git.scm  |  9 +++++++++
 3 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index c5e5009ccf..95520b9c22 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -374,7 +374,6 @@ (define-public garcon
 library called libxfce4menu, which, in contrast to garcon, was lacking menu
 merging features essential for loading menus modified with menu editors.")
     (license lgpl2.0+)
-    ;; FIXME: the 'generic-git' updater treat "rc" as pre-releases.
     (properties `((release-tag-prefix . ,(string-append name "-"))))))
 
 (define-public tumbler
@@ -894,7 +893,6 @@ (define-public thunar-archive-plugin
     (description "The Thunar Archive Plugin allows you to create and extract
 archive files using the file context menus in the Thunar file manager.")
     (license gpl2+)
-    ;; FIXME: the 'generic-git' updater treat "rc" as pre-releases.
     (properties `((release-tag-prefix . ,(string-append name "-"))))))
 
 (define-public thunar-shares-plugin
@@ -2417,5 +2415,4 @@ (define-public xfce4-dev-tools
 developers and people that want to build Xfce from Git In addition it contains
 the Xfce developer's handbook.")
     (license gpl2+)
-    ;; FIXME: the 'generic-git' updater treat "dev" as pre-releases.
     (properties `((release-tag-prefix . ,(string-append name "-"))))))
diff --git a/guix/import/git.scm b/guix/import/git.scm
index ab51719255..305b2fc43f 100644
--- a/guix/import/git.scm
+++ b/guix/import/git.scm
@@ -138,9 +138,16 @@ (define* (version-mapping tags #:key prefix suffix delim pre-releases?)
   (define (entry<? a b)
     (eq? (version-compare (car a) (car b)) '<))
 
+  (define (pre-release? tag)
+    (any (cut regexp-exec <> tag)
+         %pre-release-rx))
+
   (stable-sort (filter-map (lambda (tag)
                              (let ((version (get-version tag)))
-                               (and version (cons version tag))))
+                               (and version
+                                    (or pre-releases?
+                                        (not (pre-release? version)))
+                                    (cons version tag))))
                            tags)
                entry<?))
 
@@ -149,16 +156,10 @@ (define* (latest-tag url
   "Return the latest version and corresponding tag available from the Git
 repository at URL. Optionally include a VERSION string to fetch a specific
 version."
-  (define (pre-release? tag)
-    (any (cut regexp-exec <> tag)
-         %pre-release-rx))
-
   (let* ((tags (map (cut string-drop <> (string-length "refs/tags/"))
                     (remote-refs url #:tags? #t)))
          (versions->tags
-          (version-mapping (if pre-releases?
-                               tags
-                               (filter (negate pre-release?) tags))
+          (version-mapping tags
                            #:prefix prefix
                            #:suffix suffix
                            #:delim delim
diff --git a/tests/import-git.scm b/tests/import-git.scm
index 20255dedb3..6dd8ad1649 100644
--- a/tests/import-git.scm
+++ b/tests/import-git.scm
@@ -224,4 +224,13 @@ (define* (make-package directory version #:optional (properties '()))
     (let ((package (make-package directory "1.0.0")))
       (latest-git-tag-version package))))
 
+(test-equal "latest-git-tag-version: prefix contains pre-release words"
+  "1.0.1"
+  (with-temporary-git-repository directory
+      '((add "a.txt" "A")
+        (commit "First commit")
+        (tag "libdevx-1.0.1" "Release 1.0.1"))
+    (let ((package (make-package directory "1.0.0")))
+      (latest-git-tag-version package))))
+
 (test-end "git")

base-commit: 329daafcc3c798dd180fd98ff757452e3e016235
-- 
2.47.1





             reply	other threads:[~2025-01-07  6:14 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-07  6:16 iyzsong--- via Guix-patches via [this message]
2025-01-12  6:21 ` bug#75418: [PATCH] import: git: Do not search pre-release words in tag prefix 宋文武 via Guix-patches via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=98d422b8ec544458719b20d6a8ff85cc1f681f10.1736230582.git.iyzsong@member.fsf.org \
    --to=guix-patches@gnu.org \
    --cc=75418@debbugs.gnu.org \
    --cc=iyzsong@envs.net \
    --cc=iyzsong@member.fsf.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).