about summary refs log tree commit diff
path: root/src/libstore/local-store.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2007-02-20T23·17+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2007-02-20T23·17+0000
commitb824a1daeefd1611c8d84432dc0b2b38f24bbbfd (patch)
tree85e67cde3c6efea8a1ecd9170c09bc66ac248852 /src/libstore/local-store.cc
parent3390c1be76f648ac0b18199c6204a32d1d6d5fbb (diff)
* Start of `nix-store --export' operation for serialising a store
  path.  This is like `nix-store --dump', only it also dumps the
  meta-information of the store path (references, deriver).  Will add
  a `--sign' flag later to add a cryptographic signature, which we
  will use for exchanging store paths between build farm machines in a
  secure manner.

Diffstat (limited to 'src/libstore/local-store.cc')
-rw-r--r--src/libstore/local-store.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index cace5cb60b..dcb430a0fc 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -696,6 +696,24 @@ Path LocalStore::addTextToStore(const string & suffix, const string & s,
 }
 
 
+void LocalStore::exportPath(const Path & path, bool sign,
+    Sink & sink)
+{
+    assertStorePath(path);
+    
+    dumpPath(path, sink);
+
+    writeString(path, sink);
+    
+    PathSet references;
+    queryReferences(path, references);
+    writeStringSet(references, sink);
+
+    Path deriver = queryDeriver(noTxn, path);
+    writeString(deriver, sink);
+}
+
+
 void deleteFromStore(const Path & _path, unsigned long long & bytesFreed)
 {
     bytesFreed = 0;