tvl-depot/src
Eelco Dolstra 1511aa9f48 Allow remote builds without sending the derivation closure
Previously, to build a derivation remotely, we had to copy the entire
closure of the .drv file to the remote machine, even though we only
need the top-level derivation. This is very wasteful: the closure can
contain thousands of store paths, and in some Hydra use cases, include
source paths that are very large (e.g. Git/Mercurial checkouts).

So now there is a new operation, StoreAPI::buildDerivation(), that
performs a build from an in-memory representation of a derivation
(BasicDerivation) rather than from a on-disk .drv file. The only files
that need to be in the Nix store are the sources of the derivation
(drv.inputSrcs), and the needed output paths of the dependencies (as
described by drv.inputDrvs). "nix-store --serve" exposes this
interface.

Note that this is a privileged operation, because you can construct a
derivation that builds any store path whatsoever. Fixing this will
require changing the hashing scheme (i.e., the output paths should be
computed from the other fields in BasicDerivation, allowing them to be
verified without access to other derivations). However, this would be
quite nice because it would allow .drv-free building (e.g. "nix-env
-i" wouldn't have to write any .drv files to disk).

Fixes #173.
2015-07-17 17:57:40 +02:00
..
boost boost::shared_ptr -> std::shared_ptr 2014-03-30 00:49:23 +01:00
bsdiff-4.3 Fix "make dist" 2014-02-01 14:38:12 +01:00
download-via-ssh Pedantry 2014-12-14 01:51:14 +01:00
libexpr Make printValue() interruptible 2015-07-17 11:33:39 +02:00
libmain nix-collect-garbage: Call collectGarbage() internally 2015-05-21 15:21:38 +02:00
libstore Allow remote builds without sending the derivation closure 2015-07-17 17:57:40 +02:00
libutil Allow remote builds without sending the derivation closure 2015-07-17 17:57:40 +02:00
nix-collect-garbage nix-collect-garbage: Handle ENOENT 2015-07-17 11:24:25 +02:00
nix-daemon Don't let unprivileged users repair paths 2015-06-02 02:21:54 +02:00
nix-env nix-collect-garbage: Don't call nix-env 2015-05-21 16:28:30 +02:00
nix-hash Use proper quotes everywhere 2014-08-20 18:03:48 +02:00
nix-instantiate nix-env/nix-instantiate/nix-build: Support URIs 2015-05-06 14:54:31 +02:00
nix-log2xml nix-log2xml: Handle newlines 2014-08-13 19:06:20 +02:00
nix-store Allow remote builds without sending the derivation closure 2015-07-17 17:57:40 +02:00