guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] import: Add stackage importer and updater.


From: Ludovic Courtès
Subject: Re: [PATCH 2/2] import: Add stackage importer and updater.
Date: Wed, 08 Feb 2017 16:30:27 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Hello Federico,

Federico Beffa <address@hidden> skribis:

> From 50891dc929a21327405c6a3b58638126456deeed Mon Sep 17 00:00:00 2001
> From: Federico Beffa <address@hidden>
> Date: Mon, 6 Feb 2017 18:19:26 +0100
> Subject: [PATCH 2/2] import: Add stackage importer and updater.
>
> * guix/import/stackage.scm: New file.
> * guix/scripts/import/stackage.scm: New file.
> * Makefile.am (MODULES): Add new files.
> * guix/scripts/import.scm (importers): Add "stackage".
> * guix/scripts/refresh.scm (%updaters): Add %stackage-updater.
> * doc/guix.texi (Invoking 'guix import'): Document the importer.
>   (Invoking 'guix refresh'): Add stackage to option --type valid values.

Neat!

[...]

> address@hidden stackage
> address@hidden stackage
> +The @code{stackage} importer is a wrapper around the @code{hackage} one.
> +It takes a package name, looks up the package version included in an LTS

For the first occurrence of “LTS”:
s/LTS/long-term support (LTS)/

> +;;;
> +;;; Hackage importer low-level help functions
> +;;;
> +
> +(define guix-package->hackage-name
> +  (@@ (guix import hackage) guix-package->hackage-name))
> +
> +(define hackage-fetch
> +  (@@ (guix import hackage) hackage-fetch))
> +
> +(define hackage-source-url
> +  (@@ (guix import hackage) hackage-source-url))
> +
> +(define hackage-cabal-url
> +  (@@ (guix import hackage) hackage-cabal-url))

I’d suggest exporting these procedures from (guix import hackage) rather
than using ‘@@’, which should really be a last resort.

> +(define %stackage-updater
> +  (upstream-updater
> +   (name 'stackage)
> +   (description "Updater for Stackage LTS packages")
> +   (pred (@@ (guix import hackage) hackage-package?))

Likewise here, or use (upstream-updater-predicate hackage-updater).

> +    (if name-version
> +        (hackage->guix-package name-version
> +                               #:include-test-dependencies?
> +                               include-test-dependencies?)
> +        (begin
> +          (format (current-error-port)
> +                  "guix import stackage: package not found: ~a~%" 
> package-name)
> +          #f))))

The ‘if’ is unnecessary here: (guix scripts import) produces an error
message when an importer returns something other than a ‘package’ sexp.

> --- a/guix/scripts/refresh.scm
> +++ b/guix/scripts/refresh.scm
> @@ -40,6 +40,7 @@
>    #:use-module (guix import elpa)
>    #:use-module (guix import cran)
>    #:use-module (guix import hackage)
> +  #:use-module (guix import stackage)
>    #:use-module (guix gnupg)
>    #:use-module (gnu packages)
>    #:use-module ((gnu packages commencement) #:select (%final-inputs))
> @@ -205,6 +206,7 @@ unavailable optional dependencies such as Guile-JSON."
>                   %elpa-updater
>                   %cran-updater
>                   %bioconductor-updater
> +                 %stackage-updater

Because the dependency on Guile-JSON is still optional, you should
remove the #:use-module above and this line and write:

  ((guix import stackage) => %stackage-updater)

I haven’t tested it, but this LGTM.

Thank you!

Ludo’.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]