aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-03-23 11:25:20 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-03-23 11:25:20 +0000
commitf20f08156031f04a60025bc7a41dd3fcc117baa7 (patch)
tree92fc4f9a07f3504ffc936a2b5b796d527fdd6436
parenta1e00bf6aa8eb581ff4d47a6287800cf224c6a41 (diff)
* nix-store: `--isvalid' -> `--check-validity', `--validpath' ->
`--register-validity'. * `nix-store --register-validity': read arguments from stdin, and allow the references and deriver to be set.
-rw-r--r--src/libstore/store.cc2
-rw-r--r--src/libstore/store.hh1
-rw-r--r--src/nix-store/help.txt4
-rw-r--r--src/nix-store/main.cc44
4 files changed, 34 insertions, 17 deletions
diff --git a/src/libstore/store.cc b/src/libstore/store.cc
index 03855408e..e9d654044 100644
--- a/src/libstore/store.cc
+++ b/src/libstore/store.cc
@@ -247,7 +247,7 @@ void canonicalisePathMetaData(const Path & path)
}
-static bool isValidPathTxn(const Transaction & txn, const Path & path)
+bool isValidPathTxn(const Transaction & txn, const Path & path)
{
string s;
return nixDB.queryString(txn, dbValidPaths, path, s);
diff --git a/src/libstore/store.hh b/src/libstore/store.hh
index d5d8ea81e..4a37a6632 100644
--- a/src/libstore/store.hh
+++ b/src/libstore/store.hh
@@ -87,6 +87,7 @@ Path toStorePath(const Path & path);
void canonicalisePathMetaData(const Path & path);
/* Checks whether a path is valid. */
+bool isValidPathTxn(const Transaction & txn, const Path & path);
bool isValidPath(const Path & path);
/* Queries the hash of a valid path. */
diff --git a/src/nix-store/help.txt b/src/nix-store/help.txt
index b7d71ec48..30f94a051 100644
--- a/src/nix-store/help.txt
+++ b/src/nix-store/help.txt
@@ -11,8 +11,8 @@ Operations:
--substitute: register a substitute expression (dangerous!)
--clear-substitutes: clear all substitutes
- --validpath: register path validity (dangerous!)
- --isvalid: check path validity
+ --register-validity: register path validity (dangerous!)
+ --check-validity: check path validity
--dump: dump a path as a Nix archive
--restore: restore a path from a Nix archive
diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc
index 543a84210..f7b2233e4 100644
--- a/src/nix-store/main.cc
+++ b/src/nix-store/main.cc
@@ -355,8 +355,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
static void opSubstitute(Strings opFlags, Strings opArgs)
{
if (!opFlags.empty()) throw UsageError("unknown flag");
- if (!opArgs.empty())
- throw UsageError("no arguments expected");
+ if (!opArgs.empty()) throw UsageError("no arguments expected");
Transaction txn;
createStoreTransaction(txn);
@@ -369,8 +368,7 @@ static void opSubstitute(Strings opFlags, Strings opArgs)
if (cin.eof()) break;
getline(cin, sub.deriver);
getline(cin, sub.program);
- string s;
- int n;
+ string s; int n;
getline(cin, s);
if (!string2Int(s, n)) throw Error("number expected");
while (n--) {
@@ -402,20 +400,38 @@ static void opClearSubstitutes(Strings opFlags, Strings opArgs)
}
-static void opValidPath(Strings opFlags, Strings opArgs)
+static void opRegisterValidity(Strings opFlags, Strings opArgs)
{
if (!opFlags.empty()) throw UsageError("unknown flag");
-
+ if (!opArgs.empty()) throw UsageError("no arguments expected");
+
Transaction txn;
createStoreTransaction(txn);
- for (Strings::iterator i = opArgs.begin();
- i != opArgs.end(); ++i)
- registerValidPath(txn, *i, hashPath(htSHA256, *i), PathSet(), "");
+
+ while (1) {
+ Path path;
+ Path deriver;
+ PathSet references;
+ getline(cin, path);
+ if (cin.eof()) break;
+ getline(cin, deriver);
+ string s; int n;
+ getline(cin, s);
+ if (!string2Int(s, n)) throw Error("number expected");
+ while (n--) {
+ getline(cin, s);
+ references.insert(s);
+ }
+ if (!cin || cin.eof()) throw Error("missing input");
+ if (!isValidPathTxn(txn, path))
+ registerValidPath(txn, path, hashPath(htSHA256, path), references, deriver);
+ }
+
txn.commit();
}
-static void opIsValid(Strings opFlags, Strings opArgs)
+static void opCheckValidity(Strings opFlags, Strings opArgs)
{
if (!opFlags.empty()) throw UsageError("unknown flag");
@@ -545,10 +561,10 @@ void run(Strings args)
op = opSubstitute;
else if (arg == "--clear-substitutes")
op = opClearSubstitutes;
- else if (arg == "--validpath")
- op = opValidPath;
- else if (arg == "--isvalid")
- op = opIsValid;
+ else if (arg == "--register-validity")
+ op = opRegisterValidity;
+ else if (arg == "--check-validity")
+ op = opCheckValidity;
else if (arg == "--gc")
op = opGC;
else if (arg == "--dump")