about summary refs log tree commit diff
path: root/src/libstore/build.hh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-01-19T16·39+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-01-19T16·39+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 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 */