diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-01-19T16·39+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-01-19T16·39+0000 |
commit | 96de272b48f8e9bdabffddb699ed4f2292d4f1d7 (patch) | |
tree | 6121797dd02605b2f01e2c28de0bef54e7446e8b /src/libstore/build.hh | |
parent | ef5f254a55a2d6db09d3d0549ed45701558027e0 (diff) |
* Renamed `normalise.cc' -> `build.cc', `storeexprs.cc' ->
`derivations.cc', etc. * Store the SHA-256 content hash of store paths in the database after they have been built/added. This is so that we can check whether the store has been messed with (a la `rpm --verify'). * When registering path validity, verify that the closure property holds.
Diffstat (limited to 'src/libstore/build.hh')
-rw-r--r-- | src/libstore/build.hh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/libstore/build.hh b/src/libstore/build.hh new file mode 100644 index 000000000000..bfc0157330f7 --- /dev/null +++ b/src/libstore/build.hh @@ -0,0 +1,47 @@ +#ifndef __BUILD_H +#define __BUILD_H + +#include "derivations.hh" + +/* Perform the specified derivations, if necessary. That is, do + whatever is necessary to create the output paths of the derivation. + If the output paths already exists, we're done. If they have + substitutes, we can use those instead. Otherwise, the build action + described by the derivation is performed, after recursively + building any sub-derivations. */ +void buildDerivations(const PathSet & drvPaths); + +/* Ensure that a path exists, possibly by instantiating it by + realising a substitute. */ +void ensurePath(const Path & storePath); + +/* Read a derivation store expression, after ensuring its existence + through ensurePath(). */ +Derivation derivationFromPath(const Path & drvPath); + +/* Place in `paths' the set of all store paths in the file system + closure of `storePath'; that is, all paths than can be directly or + indirectly reached from it. `paths' is not cleared. */ +void computeFSClosure(const Path & storePath, + PathSet & paths); + +/* Place in `paths' the set of paths that are required to `realise' + the given store path, i.e., all paths necessary for valid + deployment of the path. For a derivation, this is the union of + requisites of the inputs, plus the derivation; for other store + paths, it is the set of paths in the FS closure of the path. If + `includeOutputs' is true, include the requisites of the output + paths of derivations as well. + + Note that this function can be used to implement three different + deployment policies: + + - Source deployment (when called on a derivation). + - Binary deployment (when called on an output path). + - Source/binary deployment (when called on a derivation with + `includeOutputs' set to true). +*/ +void storePathRequisites(const Path & storePath, + bool includeOutputs, PathSet & paths); + +#endif /* !__BUILD_H */ |