aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/normalise.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/normalise.hh')
-rw-r--r--src/libstore/normalise.hh46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/libstore/normalise.hh b/src/libstore/normalise.hh
new file mode 100644
index 000000000..bbe846404
--- /dev/null
+++ b/src/libstore/normalise.hh
@@ -0,0 +1,46 @@
+#ifndef __NORMALISE_H
+#define __NORMALISE_H
+
+#include "expr.hh"
+
+
+/* Normalise a Nix expression. That is, if the expression is a
+ derivation, a path containing an equivalent closure expression is
+ returned. This requires that the derivation is performed, unless a
+ successor is known. */
+Path normaliseNixExpr(const Path & nePath, PathSet pending = PathSet());
+
+/* Realise a closure expression in the file system.
+
+ The pending paths are those that are already being realised. This
+ prevents infinite recursion for paths realised through a substitute
+ (since when we build the substitute, we would first try to realise
+ its output paths through substitutes... kaboom!). */
+void realiseClosure(const Path & nePath, PathSet pending = PathSet());
+
+/* Ensure that a path exists, possibly by instantiating it by
+ realising a substitute. */
+void ensurePath(const Path & path, PathSet pending = PathSet());
+
+/* Read a Nix expression, after ensuring its existence through
+ ensurePath(). */
+NixExpr exprFromPath(const Path & path, PathSet pending = PathSet());
+
+/* Get the list of root (output) paths of the given Nix expression. */
+PathSet nixExprRoots(const Path & nePath);
+
+/* Get the list of paths that are required to realise the given
+ expression. For a derive expression, this is the union of
+ requisites of the inputs; for a closure expression, it is the path of
+ each element in the closure. If `includeExprs' is true, include the
+ paths of the Nix expressions themselves. If `includeSuccessors' is
+ true, include the requisites of successors. */
+PathSet nixExprRequisites(const Path & nePath,
+ bool includeExprs, bool includeSuccessors);
+
+/* Return the list of the paths of all known Nix expressions whose
+ output paths are completely contained in the set `outputs'. */
+PathSet findGenerators(const PathSet & outputs);
+
+
+#endif /* !__NORMALISE_H */