aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-12-01 20:51:18 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-12-01 20:51:18 +0000
commita824d58b566752b2a89a718fd628053754968d72 (patch)
treeff624d24dbbc61e199d699aa32e7bcf54773de39 /src/libstore
parentceb982a1be381d59532d0405451f38d263abb617 (diff)
* Merge addToStore and addToStoreFixed.
* addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath).
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/local-store.cc26
-rw-r--r--src/libstore/local-store.hh24
-rw-r--r--src/libstore/remote-store.cc32
-rw-r--r--src/libstore/remote-store.hh6
-rw-r--r--src/libstore/store-api.cc4
-rw-r--r--src/libstore/store-api.hh17
-rw-r--r--src/libstore/worker-protocol.hh1
7 files changed, 30 insertions, 80 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index ed948cf4e..2f2a1b436 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -619,20 +619,20 @@ static void invalidatePath(Transaction & txn, const Path & path)
}
-Path LocalStore::_addToStore(bool fixed, bool recursive,
- string hashAlgo, const Path & _srcPath)
+Path LocalStore::addToStore(const Path & _srcPath, bool fixed,
+ bool recursive, string hashAlgo)
{
Path srcPath(absPath(_srcPath));
debug(format("adding `%1%' to the store") % srcPath);
std::pair<Path, Hash> pr =
- computeStorePathForPath(fixed, recursive, hashAlgo, srcPath);
+ computeStorePathForPath(srcPath, fixed, recursive, hashAlgo);
Path & dstPath(pr.first);
Hash & h(pr.second);
- if (!readOnlyMode) addTempRoot(dstPath);
+ addTempRoot(dstPath);
- if (!readOnlyMode && !isValidPath(dstPath)) {
+ if (!isValidPath(dstPath)) {
/* The first check above is an optimisation to prevent
unnecessary lock acquisition. */
@@ -664,26 +664,14 @@ Path LocalStore::_addToStore(bool fixed, bool recursive,
}
-Path LocalStore::addToStore(const Path & srcPath)
-{
- return _addToStore(false, false, "", srcPath);
-}
-
-
-Path LocalStore::addToStoreFixed(bool recursive, string hashAlgo, const Path & srcPath)
-{
- return _addToStore(true, recursive, hashAlgo, srcPath);
-}
-
-
Path LocalStore::addTextToStore(const string & suffix, const string & s,
const PathSet & references)
{
Path dstPath = computeStorePathForText(suffix, s);
- if (!readOnlyMode) addTempRoot(dstPath);
+ addTempRoot(dstPath);
- if (!readOnlyMode && !isValidPath(dstPath)) {
+ if (!isValidPath(dstPath)) {
PathLocks outputLock(singleton<PathSet, Path>(dstPath));
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index e41e43683..3a7b22048 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -45,27 +45,19 @@ public:
Hash queryPathHash(const Path & path);
- void queryReferences(const Path & storePath,
- PathSet & references);
+ void queryReferences(const Path & path, PathSet & references);
- void queryReferrers(const Path & storePath,
- PathSet & referrers);
+ void queryReferrers(const Path & path, PathSet & referrers);
- Path addToStore(const Path & srcPath);
-
- Path addToStoreFixed(bool recursive, string hashAlgo,
- const Path & srcPath);
+ Path addToStore(const Path & srcPath, bool fixed = false,
+ bool recursive = false, string hashAlgo = "");
Path addTextToStore(const string & suffix, const string & s,
const PathSet & references);
void buildDerivations(const PathSet & drvPaths);
- void ensurePath(const Path & storePath);
-
-private:
- Path _addToStore(bool fixed, bool recursive,
- string hashAlgo, const Path & _srcPath);
+ void ensurePath(const Path & path);
};
@@ -120,16 +112,16 @@ bool isValidPathTxn(const Transaction & txn, const Path & path);
/* Sets the set of outgoing FS references for a store path. Use with
care! */
-void setReferences(const Transaction & txn, const Path & storePath,
+void setReferences(const Transaction & txn, const Path & path,
const PathSet & references);
/* Sets the deriver of a store path. Use with care! */
-void setDeriver(const Transaction & txn, const Path & storePath,
+void setDeriver(const Transaction & txn, const Path & path,
const Path & deriver);
/* Query the deriver of a store path. Return the empty string if no
deriver has been set. */
-Path queryDeriver(const Transaction & txn, const Path & storePath);
+Path queryDeriver(const Transaction & txn, const Path & path);
/* Delete a value from the nixStore directory. */
void deleteFromStore(const Path & path, unsigned long long & bytesFreed);
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index e04bb6713..bcae21bf7 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -3,7 +3,6 @@
#include "remote-store.hh"
#include "worker-protocol.hh"
#include "archive.hh"
-#include "globals.hh"
#include <iostream>
#include <unistd.h>
@@ -123,33 +122,14 @@ void RemoteStore::queryReferrers(const Path & path,
}
-Path RemoteStore::addToStore(const Path & srcPath)
+Path RemoteStore::addToStore(const Path & _srcPath, bool fixed,
+ bool recursive, string hashAlgo)
{
- if (readOnlyMode) {
- /* No sense in making a round trip, we can just compute the
- path here. */
- return computeStorePathForPath(false, false, "", srcPath).first;
- }
+ Path srcPath(absPath(_srcPath));
writeInt(wopAddToStore, to);
writeString(baseNameOf(srcPath), to);
- dumpPath(srcPath, to);
- Path path = readString(from);
- return path;
-}
-
-
-Path RemoteStore::addToStoreFixed(bool recursive, string hashAlgo,
- const Path & srcPath)
-{
- if (readOnlyMode) {
- /* No sense in making a round trip, we can just compute the
- path here. */
- return computeStorePathForPath(true, recursive, hashAlgo, srcPath).first;
- }
-
- writeInt(wopAddToStoreFixed, to);
- writeString(baseNameOf(srcPath), to);
+ writeInt(fixed ? 1 : 0, to);
writeInt(recursive ? 1 : 0, to);
writeString(hashAlgo, to);
dumpPath(srcPath, to);
@@ -161,10 +141,6 @@ Path RemoteStore::addToStoreFixed(bool recursive, string hashAlgo,
Path RemoteStore::addTextToStore(const string & suffix, const string & s,
const PathSet & references)
{
- if (readOnlyMode) {
- return computeStorePathForText(suffix, s);
- }
-
writeInt(wopAddTextToStore, to);
writeString(suffix, to);
writeString(s, to);
diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh
index eaa9b82ee..62feee0ea 100644
--- a/src/libstore/remote-store.hh
+++ b/src/libstore/remote-store.hh
@@ -37,10 +37,8 @@ public:
void queryReferrers(const Path & path, PathSet & referrers);
- Path addToStore(const Path & srcPath);
-
- Path addToStoreFixed(bool recursive, string hashAlgo,
- const Path & srcPath);
+ Path addToStore(const Path & srcPath, bool fixed = false,
+ bool recursive = false, string hashAlgo = "");
Path addTextToStore(const string & suffix, const string & s,
const PathSet & references);
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index e00f01bfd..a560b3f55 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -93,8 +93,8 @@ Path makeFixedOutputPath(bool recursive,
}
-std::pair<Path, Hash> computeStorePathForPath(bool fixed, bool recursive,
- string hashAlgo, const Path & srcPath)
+std::pair<Path, Hash> computeStorePathForPath(const Path & srcPath,
+ bool fixed, bool recursive, string hashAlgo)
{
Hash h(htSHA256);
{
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index cbf2f7ef2..6fbe97931 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -63,14 +63,11 @@ public:
PathSet & referrers) = 0;
/* Copy the contents of a path to the store and register the
- validity the resulting path. The resulting path is
- returned. */
- virtual Path addToStore(const Path & srcPath) = 0;
-
- /* Like addToStore(), but for pre-adding the outputs of
- fixed-output derivations. */
- virtual Path addToStoreFixed(bool recursive, string hashAlgo,
- const Path & srcPath) = 0;
+ validity the resulting path. The resulting path is returned.
+ If `fixed' is true, then the output of a fixed-output
+ derivation is pre-loaded into the Nix store. */
+ virtual Path addToStore(const Path & srcPath, bool fixed = false,
+ bool recursive = false, string hashAlgo = "") = 0;
/* Like addToStore, but the contents written to the output path is
a regular file containing the given string. */
@@ -119,8 +116,8 @@ Path makeFixedOutputPath(bool recursive,
it computes the store path to which srcPath is to be copied.
Returns the store path and the cryptographic hash of the
contents of srcPath. */
-std::pair<Path, Hash> computeStorePathForPath(bool fixed, bool recursive,
- string hashAlgo, const Path & srcPath);
+std::pair<Path, Hash> computeStorePathForPath(const Path & srcPath,
+ bool fixed = false, bool recursive = false, string hashAlgo = "");
/* Preparatory part of addTextToStore().
diff --git a/src/libstore/worker-protocol.hh b/src/libstore/worker-protocol.hh
index 16b616c80..65f5fc100 100644
--- a/src/libstore/worker-protocol.hh
+++ b/src/libstore/worker-protocol.hh
@@ -15,7 +15,6 @@ typedef enum {
wopQueryReferences,
wopQueryReferrers,
wopAddToStore,
- wopAddToStoreFixed,
wopAddTextToStore,
wopBuildDerivations,
wopEnsurePath,