aboutsummaryrefslogtreecommitdiff
path: root/src/nix-store/nix-store.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-11-23 15:13:37 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-11-23 15:13:37 +0000
commit5bbd693caedd5d50994938555b3a4b535875347e (patch)
tree19ea7d933118c3f40e0d096ceebc7e4f1a9eec6b /src/nix-store/nix-store.cc
parentab20af3e6f83f320232d0e5f6bcfcb279c0047c0 (diff)
* Add an API function exportPaths() that provides the functionality of
‘nix-store --export’. * Add a Perl module that provides the functionality of ‘nix-copy-closure --to’. This is used by build-remote.pl so it no longer needs to start a separate nix-copy-closure process. Also, it uses the Perl API to do the export, so it doesn't need to start a separate nix-store process either. As a result, nix-copy-closure and build-remote.pl should no longer fail on very large closures due to an "Argument list too long" error. (Note that having very many dependencies in a single derivation can still fail because the environment can become too large. Can't be helped though.)
Diffstat (limited to 'src/nix-store/nix-store.cc')
-rw-r--r--src/nix-store/nix-store.cc6
1 files changed, 1 insertions, 5 deletions
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc
index 371ca54af..84d3da032 100644
--- a/src/nix-store/nix-store.cc
+++ b/src/nix-store/nix-store.cc
@@ -594,11 +594,7 @@ static void opExport(Strings opFlags, Strings opArgs)
else throw UsageError(format("unknown flag `%1%'") % *i);
FdSink sink(STDOUT_FILENO);
- for (Strings::iterator i = opArgs.begin(); i != opArgs.end(); ++i) {
- writeInt(1, sink);
- store->exportPath(*i, sign, sink);
- }
- writeInt(0, sink);
+ exportPaths(*store, opArgs, sign, sink);
}