import: git: Do not search pre-release words in tag prefix.

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
This commit is contained in:
宋文武 2025-01-07 14:16:28 +08:00
parent 11d0bdad96
commit e74040b73c
No known key found for this signature in database
GPG key ID: D415BF253B515976
3 changed files with 18 additions and 11 deletions

View file

@ -374,7 +374,6 @@ (define-public garcon
library called libxfce4menu, which, in contrast to garcon, was lacking menu library called libxfce4menu, which, in contrast to garcon, was lacking menu
merging features essential for loading menus modified with menu editors.") merging features essential for loading menus modified with menu editors.")
(license lgpl2.0+) (license lgpl2.0+)
;; FIXME: the 'generic-git' updater treat "rc" as pre-releases.
(properties `((release-tag-prefix . ,(string-append name "-")))))) (properties `((release-tag-prefix . ,(string-append name "-"))))))
(define-public tumbler (define-public tumbler
@ -915,7 +914,6 @@ (define-public thunar-archive-plugin
(description "The Thunar Archive Plugin allows you to create and extract (description "The Thunar Archive Plugin allows you to create and extract
archive files using the file context menus in the Thunar file manager.") archive files using the file context menus in the Thunar file manager.")
(license gpl2+) (license gpl2+)
;; FIXME: the 'generic-git' updater treat "rc" as pre-releases.
(properties `((release-tag-prefix . ,(string-append name "-")))))) (properties `((release-tag-prefix . ,(string-append name "-"))))))
(define-public thunar-shares-plugin (define-public thunar-shares-plugin
@ -2438,5 +2436,4 @@ (define-public xfce4-dev-tools
developers and people that want to build Xfce from Git In addition it contains developers and people that want to build Xfce from Git In addition it contains
the Xfce developer's handbook.") the Xfce developer's handbook.")
(license gpl2+) (license gpl2+)
;; FIXME: the 'generic-git' updater treat "dev" as pre-releases.
(properties `((release-tag-prefix . ,(string-append name "-")))))) (properties `((release-tag-prefix . ,(string-append name "-"))))))

View file

@ -138,9 +138,16 @@ (define (get-version tag)
(define (entry<? a b) (define (entry<? a b)
(eq? (version-compare (car a) (car 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) (stable-sort (filter-map (lambda (tag)
(let ((version (get-version tag))) (let ((version (get-version tag)))
(and version (cons version tag)))) (and version
(or pre-releases?
(not (pre-release? version)))
(cons version tag))))
tags) tags)
entry<?)) entry<?))
@ -149,16 +156,10 @@ (define* (latest-tag url
"Return the latest version and corresponding tag available from the Git "Return the latest version and corresponding tag available from the Git
repository at URL. Optionally include a VERSION string to fetch a specific repository at URL. Optionally include a VERSION string to fetch a specific
version." version."
(define (pre-release? tag)
(any (cut regexp-exec <> tag)
%pre-release-rx))
(let* ((tags (map (cut string-drop <> (string-length "refs/tags/")) (let* ((tags (map (cut string-drop <> (string-length "refs/tags/"))
(remote-refs url #:tags? #t))) (remote-refs url #:tags? #t)))
(versions->tags (versions->tags
(version-mapping (if pre-releases? (version-mapping tags
tags
(filter (negate pre-release?) tags))
#:prefix prefix #:prefix prefix
#:suffix suffix #:suffix suffix
#:delim delim #:delim delim

View file

@ -224,4 +224,13 @@ (define* (make-package directory version #:optional (properties '()))
(let ((package (make-package directory "1.0.0"))) (let ((package (make-package directory "1.0.0")))
(latest-git-tag-version package)))) (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") (test-end "git")