diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-02-09T12·57+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-02-09T12·57+0000 |
commit | 98df735b5149bc1e39ce6b0bae13fbf7cebcdc05 (patch) | |
tree | 9a9549e0689400b71e230ba51317a2590969b63d /src/libstore/store.cc | |
parent | 582e01c06f9ecee25a31c34562926b41dc2856eb (diff) |
* 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.
Diffstat (limited to 'src/libstore/store.cc')
-rw-r--r-- | src/libstore/store.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/libstore/store.cc b/src/libstore/store.cc index 83577e4fb744..5516dc8016c1 100644 --- a/src/libstore/store.cc +++ b/src/libstore/store.cc @@ -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)); |