Subject: Re: bug#22774: Bootstrapping issue with HTTPS downloads

From: [email-masked] (Ludovic Courtès)
Date: Mon, 14 Nov 2016 00:02:38 +0100

[email-masked] (Ludovic Courtès) skribis:

> The ‘wip-oob-download’ implements “out-of-band downloads”, whereby
> downloads are performed by the daemon on behalf of clients.
>
> This works by adding a “built-in builder” in the daemon (idea stolen
> from the Nix daemon): if you specify “builtin:download” as the builder
> of your derivation, then guix-daemon invokes ‘guix download’ to download
> the thing.  The derivation has to be fixed-output, of course.
>
> The branch is not ready yet, notably because we’d need a way to pass
> mirror lists to ‘guix download’, as an attribute of the derivation.

Fixed!

> Another question is compatibility: what if a recent client creates a
> “builtin:download” derivation on an old daemon?  The problem is that
> currently old daemons do not check the builder of the .drv file until
> you call ‘build-derivations’.  So I think we’ll need to bump the
> protocol version so client code can check whether the daemon is new
> enough.

To address that, I bumped the protocol number in worker-protocol.hh and
added a ‘built-in-builders’ RPC that returns the list of supported
built-in builders (a list of strings.)

That way, clients can check what the daemon supports.  For instance,
‘url-fetch’ can return either a “normal” fixed-output derivation or one
that uses “builtin:download”, depending on what the daemon supports.

Feedback welcome.

Ludo’.