GNU bug report logs -
#35684
import: github: Sort releases before picking the latest one.
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 35684 in the body.
You can then email your comments to 35684 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#35684
; Package
guix-patches
.
(Sat, 11 May 2019 11:24:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Arun Isaac <arunisaac <at> systemreboot.net>
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Sat, 11 May 2019 11:24:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Prior to this, for some packages (e.g., osc in (gnu packages
build-tools)), `guix refresh' could not find the latest version
correctly.
[0001-import-github-Sort-releases-before-picking-the-lates.patch (text/x-patch, inline)]
From 33f42ea8a33c6e502062708336a5ab8be871c92b Mon Sep 17 00:00:00 2001
From: Arun Isaac <arunisaac <at> systemreboot.net>
Date: Sat, 11 May 2019 16:40:38 +0530
Subject: [PATCH] import: github: Sort releases before picking the latest one.
* guix/import/github.scm (latest-released-version): Sort releases before
picking the first one as the latest.
---
guix/import/github.scm | 55 ++++++++++++++++++++++--------------------
1 file changed, 29 insertions(+), 26 deletions(-)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 4d12339204..a8af318bc8 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -183,32 +183,35 @@ API when using a GitHub token")
API. This may be fixed by using an access token and setting the environment
variable GUIX_GITHUB_TOKEN, for instance one procured from
https://github.com/settings/tokens"))
- (any
- (lambda (release)
- (let ((tag (or (hash-ref release "tag_name") ;a "release"
- (hash-ref release "name"))) ;a tag
- (name-length (string-length package-name)))
- (cond
- ;; some tags include the name of the package e.g. "fdupes-1.51"
- ;; so remove these
- ((and (< name-length (string-length tag))
- (string=? (string-append package-name "-")
- (substring tag 0 (+ name-length 1))))
- (substring tag (+ name-length 1)))
- ;; some tags start with a "v" e.g. "v0.25.0"
- ;; where some are just the version number
- ((string-prefix? "v" tag)
- (substring tag 1))
- ;; Finally, reject tags that don't start with a digit:
- ;; they may not represent a release.
- ((and (not (string-null? tag))
- (char-set-contains? char-set:digit
- (string-ref tag 0)))
- tag)
- (else #f))))
- (match (remove pre-release? json)
- (() json) ; keep everything
- (releases releases))))))
+ (first
+ (sort
+ (filter-map
+ (lambda (release)
+ (let ((tag (or (hash-ref release "tag_name") ;a "release"
+ (hash-ref release "name"))) ;a tag
+ (name-length (string-length package-name)))
+ (cond
+ ;; some tags include the name of the package e.g. "fdupes-1.51"
+ ;; so remove these
+ ((and (< name-length (string-length tag))
+ (string=? (string-append package-name "-")
+ (substring tag 0 (+ name-length 1))))
+ (substring tag (+ name-length 1)))
+ ;; some tags start with a "v" e.g. "v0.25.0"
+ ;; where some are just the version number
+ ((string-prefix? "v" tag)
+ (substring tag 1))
+ ;; Finally, reject tags that don't start with a digit:
+ ;; they may not represent a release.
+ ((and (not (string-null? tag))
+ (char-set-contains? char-set:digit
+ (string-ref tag 0)))
+ tag)
+ (else #f))))
+ (match (remove pre-release? json)
+ (() json) ; keep everything
+ (releases releases)))
+ version>?)))))
(define (latest-release pkg)
"Return an <upstream-source> for the latest release of PKG."
--
2.21.0
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#35684
; Package
guix-patches
.
(Sun, 12 May 2019 21:48:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 35684 <at> debbugs.gnu.org (full text, mbox):
Arun Isaac <arunisaac <at> systemreboot.net> skribis:
> Prior to this, for some packages (e.g., osc in (gnu packages
> build-tools)), `guix refresh' could not find the latest version
> correctly.
Good catch.
> From 33f42ea8a33c6e502062708336a5ab8be871c92b Mon Sep 17 00:00:00 2001
> From: Arun Isaac <arunisaac <at> systemreboot.net>
> Date: Sat, 11 May 2019 16:40:38 +0530
> Subject: [PATCH] import: github: Sort releases before picking the latest one.
>
> * guix/import/github.scm (latest-released-version): Sort releases before
> picking the first one as the latest.
[...]
> + (first
> + (sort
> + (filter-map
> + (lambda (release)
> + (let ((tag (or (hash-ref release "tag_name") ;a "release"
> + (hash-ref release "name"))) ;a tag
> + (name-length (string-length package-name)))
> + (cond
> + ;; some tags include the name of the package e.g. "fdupes-1.51"
> + ;; so remove these
> + ((and (< name-length (string-length tag))
> + (string=? (string-append package-name "-")
> + (substring tag 0 (+ name-length 1))))
> + (substring tag (+ name-length 1)))
> + ;; some tags start with a "v" e.g. "v0.25.0"
> + ;; where some are just the version number
> + ((string-prefix? "v" tag)
> + (substring tag 1))
> + ;; Finally, reject tags that don't start with a digit:
> + ;; they may not represent a release.
> + ((and (not (string-null? tag))
> + (char-set-contains? char-set:digit
> + (string-ref tag 0)))
> + tag)
> + (else #f))))
> + (match (remove pre-release? json)
> + (() json) ; keep everything
> + (releases releases)))
> + version>?)))))
LGTM, but…
… while you’re at it, would you mind cleaning this up a bit? :-)
Namely, I think this big ‘lambda’ could be given a name and moved out of
the way to make ‘latest-released-version’ easier to read. Also, it
would probably be reasonable to avoid ‘first’ and instead write:
(match (sort …)
((first . _) first)
(()
(leave (G_ "no releases found etc.~%"))))
WDYT? :-)
If you’d rather leave that for later, you can also just go ahead and
commit your patch.
Thanks,
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#35684
; Package
guix-patches
.
(Mon, 13 May 2019 08:10:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 35684 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
> Namely, I think this big ‘lambda’ could be given a name and moved out of
> the way to make ‘latest-released-version’ easier to read. Also, it
> would probably be reasonable to avoid ‘first’ and instead write:
>
> (match (sort …)
> ((first . _) first)
> (()
> (leave (G_ "no releases found etc.~%"))))
>
> WDYT? :-)
>
> If you’d rather leave that for later, you can also just go ahead and
> commit your patch.
No problem! :-) Here is the updated patch.
[0001-import-github-Sort-releases-before-picking-the-lates.patch (text/x-patch, inline)]
From d3f28de8fedc41732a07edf2ea91222208ccc73f Mon Sep 17 00:00:00 2001
From: Arun Isaac <arunisaac <at> systemreboot.net>
Date: Sat, 11 May 2019 16:40:38 +0530
Subject: [PATCH] import: github: Sort releases before picking the latest one.
* guix/import/github.scm (latest-released-version): Sort releases before
picking the first one as the latest.
---
guix/import/github.scm | 56 ++++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 26 deletions(-)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 4d12339204..cdac70420a 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -174,6 +174,29 @@ the package e.g. 'bedtools2'. Return #f if there is no releases"
(define (pre-release? x)
(hash-ref x "prerelease"))
+ (define (release->version release)
+ (let ((tag (or (hash-ref release "tag_name") ;a "release"
+ (hash-ref release "name"))) ;a tag
+ (name-length (string-length package-name)))
+ (cond
+ ;; some tags include the name of the package e.g. "fdupes-1.51"
+ ;; so remove these
+ ((and (< name-length (string-length tag))
+ (string=? (string-append package-name "-")
+ (substring tag 0 (+ name-length 1))))
+ (substring tag (+ name-length 1)))
+ ;; some tags start with a "v" e.g. "v0.25.0"
+ ;; where some are just the version number
+ ((string-prefix? "v" tag)
+ (substring tag 1))
+ ;; Finally, reject tags that don't start with a digit:
+ ;; they may not represent a release.
+ ((and (not (string-null? tag))
+ (char-set-contains? char-set:digit
+ (string-ref tag 0)))
+ tag)
+ (else #f))))
+
(let* ((json (fetch-releases-or-tags url)))
(if (eq? json #f)
(if (%github-token)
@@ -183,32 +206,13 @@ API when using a GitHub token")
API. This may be fixed by using an access token and setting the environment
variable GUIX_GITHUB_TOKEN, for instance one procured from
https://github.com/settings/tokens"))
- (any
- (lambda (release)
- (let ((tag (or (hash-ref release "tag_name") ;a "release"
- (hash-ref release "name"))) ;a tag
- (name-length (string-length package-name)))
- (cond
- ;; some tags include the name of the package e.g. "fdupes-1.51"
- ;; so remove these
- ((and (< name-length (string-length tag))
- (string=? (string-append package-name "-")
- (substring tag 0 (+ name-length 1))))
- (substring tag (+ name-length 1)))
- ;; some tags start with a "v" e.g. "v0.25.0"
- ;; where some are just the version number
- ((string-prefix? "v" tag)
- (substring tag 1))
- ;; Finally, reject tags that don't start with a digit:
- ;; they may not represent a release.
- ((and (not (string-null? tag))
- (char-set-contains? char-set:digit
- (string-ref tag 0)))
- tag)
- (else #f))))
- (match (remove pre-release? json)
- (() json) ; keep everything
- (releases releases))))))
+ (match (sort (filter-map release->version
+ (match (remove pre-release? json)
+ (() json) ; keep everything
+ (releases releases)))
+ version>?)
+ ((latest-release . _) latest-release)
+ (() #f)))))
(define (latest-release pkg)
"Return an <upstream-source> for the latest release of PKG."
--
2.21.0
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#35684
; Package
guix-patches
.
(Mon, 13 May 2019 13:44:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 35684 <at> debbugs.gnu.org (full text, mbox):
Arun Isaac <arunisaac <at> systemreboot.net> skribis:
> From d3f28de8fedc41732a07edf2ea91222208ccc73f Mon Sep 17 00:00:00 2001
> From: Arun Isaac <arunisaac <at> systemreboot.net>
> Date: Sat, 11 May 2019 16:40:38 +0530
> Subject: [PATCH] import: github: Sort releases before picking the latest one.
>
> * guix/import/github.scm (latest-released-version): Sort releases before
> picking the first one as the latest.
Very nice, LGTM! If you don’t mind, you can make it two patches for
clarity (one that defines ‘release->version’, and one that adds the call
to ‘sort’); otherwise just amend the commit log above to mention
‘release->version’.
Thank you!
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#35684
; Package
guix-patches
.
(Tue, 14 May 2019 10:20:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 35684 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
> If you don’t mind, you can make it two patches for clarity (one that
> defines ‘release->version’, and one that adds the call to ‘sort’)
Sure, pleae find attached.
[0001-import-github-Improve-readability.patch (text/x-patch, inline)]
From c96956bc6e944f9691773640e402c15215078943 Mon Sep 17 00:00:00 2001
From: Arun Isaac <arunisaac <at> systemreboot.net>
Date: Tue, 14 May 2019 15:44:46 +0530
Subject: [PATCH 1/2] import: github: Improve readability.
* guix/import/github.scm (latest-released-version)[release->version]: Separate
out release->version as a new function.
---
guix/import/github.scm | 53 +++++++++++++++++++++---------------------
1 file changed, 27 insertions(+), 26 deletions(-)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 4d12339204..5f4d9c7267 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -174,6 +174,29 @@ the package e.g. 'bedtools2'. Return #f if there is no releases"
(define (pre-release? x)
(hash-ref x "prerelease"))
+ (define (release->version release)
+ (let ((tag (or (hash-ref release "tag_name") ;a "release"
+ (hash-ref release "name"))) ;a tag
+ (name-length (string-length package-name)))
+ (cond
+ ;; some tags include the name of the package e.g. "fdupes-1.51"
+ ;; so remove these
+ ((and (< name-length (string-length tag))
+ (string=? (string-append package-name "-")
+ (substring tag 0 (+ name-length 1))))
+ (substring tag (+ name-length 1)))
+ ;; some tags start with a "v" e.g. "v0.25.0"
+ ;; where some are just the version number
+ ((string-prefix? "v" tag)
+ (substring tag 1))
+ ;; Finally, reject tags that don't start with a digit:
+ ;; they may not represent a release.
+ ((and (not (string-null? tag))
+ (char-set-contains? char-set:digit
+ (string-ref tag 0)))
+ tag)
+ (else #f))))
+
(let* ((json (fetch-releases-or-tags url)))
(if (eq? json #f)
(if (%github-token)
@@ -183,32 +206,10 @@ API when using a GitHub token")
API. This may be fixed by using an access token and setting the environment
variable GUIX_GITHUB_TOKEN, for instance one procured from
https://github.com/settings/tokens"))
- (any
- (lambda (release)
- (let ((tag (or (hash-ref release "tag_name") ;a "release"
- (hash-ref release "name"))) ;a tag
- (name-length (string-length package-name)))
- (cond
- ;; some tags include the name of the package e.g. "fdupes-1.51"
- ;; so remove these
- ((and (< name-length (string-length tag))
- (string=? (string-append package-name "-")
- (substring tag 0 (+ name-length 1))))
- (substring tag (+ name-length 1)))
- ;; some tags start with a "v" e.g. "v0.25.0"
- ;; where some are just the version number
- ((string-prefix? "v" tag)
- (substring tag 1))
- ;; Finally, reject tags that don't start with a digit:
- ;; they may not represent a release.
- ((and (not (string-null? tag))
- (char-set-contains? char-set:digit
- (string-ref tag 0)))
- tag)
- (else #f))))
- (match (remove pre-release? json)
- (() json) ; keep everything
- (releases releases))))))
+ (any release->version
+ (match (remove pre-release? json)
+ (() json) ; keep everything
+ (releases releases))))))
(define (latest-release pkg)
"Return an <upstream-source> for the latest release of PKG."
--
2.21.0
[0002-import-github-Sort-releases-before-picking-the-lates.patch (text/x-patch, inline)]
From 8192712f8108d0abcd527ff6b16af073c453b780 Mon Sep 17 00:00:00 2001
From: Arun Isaac <arunisaac <at> systemreboot.net>
Date: Tue, 14 May 2019 15:46:19 +0530
Subject: [PATCH 2/2] import: github: Sort releases before picking the latest
one.
* guix/import/github.scm (latest-released-version): Sort releases before
picking the first one as the latest.
---
guix/import/github.scm | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 5f4d9c7267..cdac70420a 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -206,10 +206,13 @@ API when using a GitHub token")
API. This may be fixed by using an access token and setting the environment
variable GUIX_GITHUB_TOKEN, for instance one procured from
https://github.com/settings/tokens"))
- (any release->version
- (match (remove pre-release? json)
- (() json) ; keep everything
- (releases releases))))))
+ (match (sort (filter-map release->version
+ (match (remove pre-release? json)
+ (() json) ; keep everything
+ (releases releases)))
+ version>?)
+ ((latest-release . _) latest-release)
+ (() #f)))))
(define (latest-release pkg)
"Return an <upstream-source> for the latest release of PKG."
--
2.21.0
[signature.asc (application/pgp-signature, inline)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#35684
; Package
guix-patches
.
(Tue, 14 May 2019 21:00:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 35684 <at> debbugs.gnu.org (full text, mbox):
Arun Isaac <arunisaac <at> systemreboot.net> skribis:
>> If you don’t mind, you can make it two patches for clarity (one that
>> defines ‘release->version’, and one that adds the call to ‘sort’)
>
> Sure, pleae find attached.
Thank you, it still LGTM. :-)
Ludo’.
Reply sent
to
Arun Isaac <arunisaac <at> systemreboot.net>
:
You have taken responsibility.
(Wed, 15 May 2019 08:26:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Arun Isaac <arunisaac <at> systemreboot.net>
:
bug acknowledged by developer.
(Wed, 15 May 2019 08:26:02 GMT)
Full text and
rfc822 format available.
Message #25 received at 35684-done <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Pushed to master, thanks!
[signature.asc (application/pgp-signature, inline)]
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Wed, 12 Jun 2019 11:24:07 GMT)
Full text and
rfc822 format available.
This bug report was last modified 4 years and 311 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.