daemon: Allow check builds of 'builtin:download' derivations.

Fixes <http://bugs.gnu.org/25089>.
Reported by Leo Famulari <leo@famulari.name>.

* nix/libstore/build.cc (DerivationGoal::runChild): In the 'isBuiltin'
case, check whether DRV's output is in 'redirectedOutputs', and pass an
'output' argument to the built-in builder.
(DerivationGoal::addHashRewrite): Add 'printMsg' call.
* nix/libstore/builtins.hh (derivationBuilder): Add 'output' parameter.
* nix/libstore/builtins.cc (builtinDownload): Likewise.
Add OUTPUT to ARGV.
* guix/scripts/perform-download.scm (perform-download): Add 'output'
parameter.
(guix-perform-download): Adjust 'match' clauses accordingly.
* tests/derivations.scm ("'download' built-in builder, check mode"): New
test.
This commit is contained in:
Ludovic Courtès 2017-01-11 17:06:31 +01:00
parent aa042770da
commit 9b5364a3af
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
5 changed files with 62 additions and 16 deletions

View file

@ -1,5 +1,5 @@
/* GNU Guix --- Functional package management for GNU
Copyright (C) 2016 Ludovic Courtès <ludo@gnu.org>
Copyright (C) 2016, 2017 Ludovic Courtès <ludo@gnu.org>
This file is part of GNU Guix.
@ -33,7 +33,8 @@ namespace nix {
/* Build DRV, which lives at DRVPATH. */
typedef void (*derivationBuilder) (const Derivation &drv,
const std::string &drvPath);
const std::string &drvPath,
const std::string &output);
/* Return the built-in builder called BUILDER, or NULL if none was
found. */