Subject: [bug#34108] [PATCH] import: github: Use prereleases when package has no releases.

From: Ludovic Courtès <[email-masked]>
Date: Fri, 18 Jan 2019 16:55:31 +0100

Hello,

Arun Isaac <[email-masked]> skribis:

> For github packages with only prereleases (that is, no releases), `guix
> refresh PACKAGE` prints out the no-updater warning. This is incorrect
> behavior. It should instead fall back to using preleases. This patch
> fixes that.
>
> For an example, see the package quaternion in (gnu packages messaging).

Makes sense.

> From df660be0d7756b792a8356c7b02855cc327a7494 Mon Sep 17 00:00:00 2001
> From: Arun Isaac <[email-masked]>
> Date: Thu, 17 Jan 2019 01:34:07 +0530
> Subject: [PATCH] import: github: Use prereleases when package has no releases.
>
> * guix/import/github.scm (latest-released-version): Use preleases when package
> has no releases.
> ---
>  guix/import/github.scm | 18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/guix/import/github.scm b/guix/import/github.scm
> index b287313d98..624b8c5a66 100644
> --- a/guix/import/github.scm
> +++ b/guix/import/github.scm
> @@ -179,14 +179,16 @@ 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"))
>          (let loop ((releases
> -                    (filter
> -                     (lambda (x)
> -                       ;; example pre-release:
> -                       ;; https://github.com/wwood/OrfM/releases/tag/v0.5.1
> -                       ;; or an all-prerelease set
> -                       ;; https://github.com/powertab/powertabeditor/releases
> -                       (not (hash-ref x "prerelease")))
> -                     json)))
> +                    (if (null?
> +                         (filter
> +                          (lambda (x)
> +                            ;; example pre-release:
> +                            ;; https://github.com/wwood/OrfM/releases/tag/v0.5.1
> +                            ;; or an all-prerelease set
> +                            ;; https://github.com/powertab/powertabeditor/releases
> +                            (not (hash-ref x "prerelease")))
> +                          json))
> +                        json)))

To improve readability, could you define a ‘pre-release?’ procedure so
we can write:

  let ((releases (match (remove pre-release? json)
                   (() json)  ;keep everything
                   (releases releases))))

OK with a change along these lines, thank you!

Ludo’.