[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#48999] [PATCH] import: hackage: Accept local source for package.
From: |
Ludovic Courtès |
Subject: |
[bug#48999] [PATCH] import: hackage: Accept local source for package. |
Date: |
Wed, 30 Jun 2021 11:17:11 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hi,
Xinglu Chen <public@yoctocell.xyz> skribis:
> On Tue, Jun 29 2021, Ludovic Courtès wrote:
>
>> Hi,
>>
>> Xinglu Chen <public@yoctocell.xyz> skribis:
>>
>>> When developing a Haskell package it is often useful to have a Guix package
>>> definition for that package, previously one would have to write that package
>>> definition by hand, and if the .cabal file changed one would manually update
>>> the Guix package definition.
>>>
>>> This commit allows one to specify a custom source for their package, meaning
>>> that one could programatically generate a Guix package definition for their
>>> local Haskell package. If the .cabal file changes, the generated package
>>> definition will also change accordingly. One could for instance write the
>>> following in a guix.scm file:
>>>
>>> (define-values (ghc-haskeme deps)
>>> (call-with-input-file "haskeme.cabal"
>>> (lambda (port)
>>> (hackage->guix-package
>>> "haskeme"
>>> #:port port
>>> #:source (local-file "." "haskeme-checkout"
>>> #:recursive? #t
>>> #:select? hg-predicate)))))
>>>
>>> ghc-haskeme
>>>
>>> Invoking ‘guix build -f guix.scm’ would then always build an up-to-date
>>> version of the package.
>>>
>>> * guix/import/hackage.scm (hackage-module->sexp): Add optional keyword
>>> argument ‘source’
>>> (hackage->guix-package): Likewise.
>>> * tests/hackage.scm (eval-test-with-cabal): Likewise.
>>> ("hackage->guix-package local source"): New test.
>>
>> Looks like a nice improvement.
>>
>> What I don’t get is that this functionality doesn’t seem to be available
>> from the CLI, which the patch doesn’t change. Or am I missing
>> something?
>
> No, I don’t think this functionality is available from the CLI since
> ‘hackage->guix-package’ is not called with the #:source keyword
> argument.
IOW, this functionality is not accessible, unless you use the Scheme API
as in the example above, right?
> Once all the other importers (or those where it makes sense to do
> this) get this functionality, it would be a good idea to add an option
> for reading a .cabal/setup.py/whatever file and generating a package
> definition from that.
‘guix import hackage’ could support it even if other importers don’t
have equivalent functionality, no?
Thanks,
Ludo’.