Subject: Re: bug#46650: Extending package transformation options

From: zimoun <[email-masked]>
Date: Wed, 24 Feb 2021 14:43:56 +0100

Hi Ludo,

On Wed, 24 Feb 2021 at 12:11, Ludovic Courtès <[email-masked]> wrote:
> > On Sat, 20 Feb 2021 at 14:57, Ludovic Courtès <[email-masked]> wrote:
> >
> >> Guix as returned by ‘guix pull’ and ‘guix time-machine’ depends on
> >> GnuTLS.  So here, we have a special case: to build Guix itself, you need
> >> to build GnuTLS first, and there’s no way to pass ‘--without-tests’ at
> >> that level.
> >>
> >> I’m not sure how to change that because unfortunately, ‘guix pull’ and
> >> ‘time-machine’ don’t even know that Guix depends on GnuTLS; only the
> >> target Guix knows about this.  :-/
> >
> > If  «“guix pull” and ’time-machine’ don’t even know that Guix depends on
> > GnuTLS» and «to build Guix itself, you need to build GnuTLS first», how
> > does it work?  How does «you» know that they needs to build GnuTLS
> > first?
>
> ‘guix pull’ builds Guix using the method implemented in (guix self).
> The entry point there is ‘compiled-guix’, which returns a compiled Guix.

Thanks.  It perfectly answer to my question. :-)

> It’s not a package so the package API doesn’t apply.

I am confused.  The 'specification->package' returns a regular
package, right?.  And then,

--8<---------------cut here---------------start------------->8---
  (define gnutls
    (specification->package "gnutls"))

  (define dependencies
    (append-map transitive-package-dependencies
                (list guile-gcrypt gnutls guile-git guile-avahi
                      guile-json guile-semver guile-ssh guile-sqlite3
                      guile-zlib guile-lzlib guile-zstd)))
--8<---------------cut here---------------end--------------->8---

So here, a transformation could be applied.  For example, build all
the dependencies without testing them;  at the 'define gnutls' (&co)
step or in the map.  Why not?

Well, just to be able to travel back in time if some expiration changed.

Cheers,
simon