guix-devel/nix/libstore
Ludovic Courtès 94d92c7796
daemon: Add "builtin:download" derivation builder.
This ensures that 1) the derivation doesn't change when Guix changes;
2) the derivation closure doesn't contain Guix and its dependencies; 3)
we don't have to rely on ugly chroot hacks.

Adapted from Nix commit 0a2bee307b20411f5b0dda0c662b1f9bb9e0e131.

* nix/libstore/build.cc (DerivationGoal::runChild): Add special case for
'isBuiltin(drv)'.  Disable chroot when 'isBuiltin(drv)'.
* nix/libstore/builtins.cc, nix/libstore/builtins.hh,
nix/scripts/download.in, guix/scripts/perform-download.scm: New files.
* guix/ui.scm (show-guix-help)[internal?]: Add 'perform-download'.
* nix/local.mk (libstore_a_SOURCES): Add builtins.cc.
(libstore_headers): Add builtins.hh.
(nodist_pkglibexec_SCRIPTS): Add 'scripts/download'.
* config-daemon.ac: Emit 'scripts/download'.
* Makefile.am (MODULES): Add 'guix/scripts/perform-download.scm'.
* tests/derivations.scm ("unknown built-in builder")
("'download' built-in builder")
("'download' built-in builder, invalid hash")
("'download' built-in builder, not found")
("'download' built-in builder, not fixed-output"): New tests.

Co-authored-by: Eelco Dolstra <eelco.dolstra@logicblox.com>
2016-11-16 18:19:47 +01:00
..
.gitignore build: Include a copy of Nix's libstore and daemon; build it. 2012-12-03 23:05:08 +01:00
build.cc daemon: Add "builtin:download" derivation builder. 2016-11-16 18:19:47 +01:00
builtins.cc daemon: Add "builtin:download" derivation builder. 2016-11-16 18:19:47 +01:00
builtins.hh daemon: Add "builtin:download" derivation builder. 2016-11-16 18:19:47 +01:00
derivations.cc Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
derivations.hh Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
gc.cc Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
globals.cc daemon: Rename 'NIX_CONF_DIR' to 'GUIX_CONFIGURATION_DIRECTORY'. 2016-06-26 23:11:07 +02:00
globals.hh daemon: Allow builds to be repeated. 2015-12-08 23:58:12 +01:00
local-store.cc daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
local-store.hh daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
misc.cc Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
misc.hh Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
optimise-store.cc daemon: Do not error out when deduplication fails due to ENOSPC. 2016-10-28 22:30:17 +02:00
pathlocks.cc daemon: ~PathLocks(): Handle exceptions. 2016-05-31 14:25:28 +02:00
pathlocks.hh Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
references.cc Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
references.hh Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
schema.sql Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
sqlite.cc daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
sqlite.hh daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
store-api.cc daemon: Remove unused 'RemoteStore' class. 2015-12-30 01:20:41 +01:00
store-api.hh daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
worker-protocol.hh daemon: Add 'buildMode' parameter to 'buildPaths' RPC. 2015-12-02 19:37:59 +02:00