diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-01-25 11:55:43 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-01-25 11:55:43 +0000 |
commit | 581fc477838e9cf9e5d9657920ef63ea836050ee (patch) | |
tree | bac33c0720129205ed6baf25b12bbd9734946a90 /src | |
parent | 52bf9b86bb79369b7f7b5b8a5726b83ee154da6a (diff) |
* Fix the build hook mechanism; pass the pointer graph to the hook.
Diffstat (limited to 'src')
-rw-r--r-- | src/libstore/build.cc | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 8d9946add..1de50a140 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -769,15 +769,20 @@ DerivationGoal::HookReply DerivationGoal::tryBuildHook() /* Write the information that the hook needs to perform the build, i.e., the set of input paths, the set of output - paths, and [!!!]. */ + paths, and the references (pointer graph) in the input + paths. */ Path inputListFN = tmpDir + "/inputs"; Path outputListFN = tmpDir + "/outputs"; + Path referencesFN = tmpDir + "/references"; string s; for (PathSet::iterator i = inputPaths.begin(); i != inputPaths.end(); ++i) s += *i + "\n"; + for (DerivationInputs::iterator i = drv.inputDrvs.begin(); + i != drv.inputDrvs.end(); ++i) + s += i->first + "\n"; writeStringToFile(inputListFN, s); s = ""; @@ -785,7 +790,24 @@ DerivationGoal::HookReply DerivationGoal::tryBuildHook() i != drv.outputs.end(); ++i) s += i->second.path + "\n"; writeStringToFile(outputListFN, s); - + + s = ""; + for (PathSet::iterator i = inputPaths.begin(); + i != inputPaths.end(); ++i) + { + s += *i; + PathSet references; + queryReferences(*i, references); + for (PathSet::iterator j = references.begin(); + j != references.end(); ++j) + { + s += " "; + s += *j; + } + s += "\n"; + } + writeStringToFile(referencesFN, s); + /* Tell the hook to proceed. */ writeLine(toHook.writeSide, "okay"); |