On Tue, Jun 29 2021, Ludovic Courtès wrote: > Hi, > > Xinglu Chen 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. 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.