From 3f236f01ae7e9abe58a591071698a9a9840af7c2 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 23 Mar 2005 13:07:28 +0000 Subject: * `nix-store --register-validity': allow a path to refer to a path listed later in the list of new valid paths. --- src/nix-store/main.cc | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/nix-store') diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc index 956cbb4fbbe4..42783e108a2f 100644 --- a/src/nix-store/main.cc +++ b/src/nix-store/main.cc @@ -405,31 +405,32 @@ 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); - + ValidPathInfos infos; + while (1) { - Path path; - Path deriver; - PathSet references; - getline(cin, path); + ValidPathInfo info; + getline(cin, info.path); if (cin.eof()) break; - getline(cin, deriver); + getline(cin, info.deriver); string s; int n; getline(cin, s); if (!string2Int(s, n)) throw Error("number expected"); while (n--) { getline(cin, s); - references.insert(s); + info.references.insert(s); } if (!cin || cin.eof()) throw Error("missing input"); - if (!isValidPathTxn(txn, path)) { + if (!isValidPath(info.path)) { /* !!! races */ - canonicalisePathMetaData(path); - registerValidPath(txn, path, hashPath(htSHA256, path), references, deriver); + canonicalisePathMetaData(info.path); + info.hash = hashPath(htSHA256, info.path); + infos.push_back(info); } } + Transaction txn; + createStoreTransaction(txn); + registerValidPaths(txn, infos); txn.commit(); } -- cgit 1.4.1