1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-06 21:41:48 +02:00

* Propagate the deriver of a path through the substitute mechanism.

* Removed some dead code (successor stuff) from nix-push.
* Updated terminology in the tests (store expr -> drv path).
* Check that the deriver is set properly in the tests.
This commit is contained in:
Eelco Dolstra 2005-02-09 12:57:13 +00:00
parent 582e01c06f
commit 98df735b51
18 changed files with 86 additions and 74 deletions

View file

@ -1502,7 +1502,8 @@ void SubstitutionGoal::finished()
Transaction txn;
createStoreTransaction(txn);
registerValidPath(txn, storePath, contentHash, references, "");
registerValidPath(txn, storePath, contentHash,
references, sub.deriver);
txn.commit();
outputLock->setDeletion(true);

View file

@ -391,6 +391,9 @@ Path queryDeriver(const Transaction & txn, const Path & storePath)
}
const int substituteVersion = 2;
static Substitutes readSubstitutes(const Transaction & txn,
const Path & srcPath)
{
@ -406,13 +409,15 @@ static Substitutes readSubstitutes(const Transaction & txn,
break;
}
Strings ss2 = unpackStrings(*i);
if (ss2.size() == 3) {
/* Another old-style substitute. */
continue;
}
if (ss2.size() != 2) throw Error("malformed substitute");
if (ss2.size() == 0) continue;
int version;
if (!string2Int(ss2.front(), version)) continue;
if (version != substituteVersion) continue;
if (ss2.size() != 4) throw Error("malformed substitute");
Strings::iterator j = ss2.begin();
j++;
Substitute sub;
sub.deriver = *j++;
sub.program = *j++;
sub.args = unpackStrings(*j++);
subs.push_back(sub);
@ -431,6 +436,8 @@ static void writeSubstitutes(const Transaction & txn,
i != subs.end(); ++i)
{
Strings ss2;
ss2.push_back((format("%1%") % substituteVersion).str());
ss2.push_back(i->deriver);
ss2.push_back(i->program);
ss2.push_back(packStrings(i->args));
ss.push_back(packStrings(ss2));

View file

@ -16,7 +16,10 @@ const int nixSchemaVersion = 2;
path (typically by fetching it from somewhere, e.g., from the
network). */
struct Substitute
{
{
/* The derivation that built this store path (empty if none). */
Path deriver;
/* Program to be executed to create the store path. Must be in
the output path of `storeExpr'. */
Path program;

View file

@ -280,6 +280,7 @@ static void opSubstitute(Strings opFlags, Strings opArgs)
PathSet references;
getline(cin, srcPath);
if (cin.eof()) break;
getline(cin, sub.deriver);
getline(cin, sub.program);
string s;
int n;