2003-07-20 19:29:38 +00:00
|
|
|
#ifndef __NORMALISE_H
|
|
|
|
#define __NORMALISE_H
|
|
|
|
|
2003-11-18 11:22:29 +00:00
|
|
|
#include "storeexpr.hh"
|
2003-07-20 19:29:38 +00:00
|
|
|
|
|
|
|
|
2005-01-19 11:16:11 +00:00
|
|
|
/* Perform the specified derivation, 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 buildDerivation(const Path & drvPath);
|
2003-07-20 19:29:38 +00:00
|
|
|
|
2003-10-16 16:29:57 +00:00
|
|
|
/* Ensure that a path exists, possibly by instantiating it by
|
|
|
|
realising a substitute. */
|
2005-01-19 11:16:11 +00:00
|
|
|
void ensurePath(const Path & storePath);
|
2003-10-16 16:29:57 +00:00
|
|
|
|
2005-01-19 11:16:11 +00:00
|
|
|
/* Read a derivation store expression, after ensuring its existence
|
|
|
|
through ensurePath(). */
|
|
|
|
Derivation derivationFromPath(const Path & drvPath);
|
2003-10-16 16:29:57 +00:00
|
|
|
|
2005-01-19 11:16:11 +00:00
|
|
|
|
|
|
|
/* Places 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);
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
2003-11-18 11:22:29 +00:00
|
|
|
/* Get the list of root (output) paths of the given store
|
|
|
|
expression. */
|
|
|
|
PathSet storeExprRoots(const Path & nePath);
|
2003-07-20 19:29:38 +00:00
|
|
|
|
2003-11-18 11:22:29 +00:00
|
|
|
/* Get the list of paths that are required to realise the given store
|
2003-07-29 14:28:17 +00:00
|
|
|
expression. For a derive expression, this is the union of
|
2003-11-18 11:22:29 +00:00
|
|
|
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 store expressions themselves. If
|
|
|
|
`includeSuccessors' is true, include the requisites of
|
|
|
|
successors. */
|
|
|
|
PathSet storeExprRequisites(const Path & nePath,
|
2003-07-29 14:28:17 +00:00
|
|
|
bool includeExprs, bool includeSuccessors);
|
2005-01-19 11:16:11 +00:00
|
|
|
#endif
|
2003-07-21 14:46:01 +00:00
|
|
|
|
2003-07-20 19:29:38 +00:00
|
|
|
|
|
|
|
#endif /* !__NORMALISE_H */
|