aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-01-19 16:39:47 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-01-19 16:39:47 +0000
commit96de272b48f8e9bdabffddb699ed4f2292d4f1d7 (patch)
tree6121797dd02605b2f01e2c28de0bef54e7446e8b /src/libstore/build.hh
parentef5f254a55a2d6db09d3d0549ed45701558027e0 (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.hh47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/libstore/build.hh b/src/libstore/build.hh
new file mode 100644
index 000000000..bfc015733
--- /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 */