2005-01-19 17:39:47 +01:00
|
|
|
#ifndef __BUILD_H
|
|
|
|
#define __BUILD_H
|
2003-07-20 21:29:38 +02:00
|
|
|
|
2005-01-19 17:39:47 +01:00
|
|
|
#include "derivations.hh"
|
2003-07-20 21:29:38 +02:00
|
|
|
|
2005-01-20 17:01:07 +01:00
|
|
|
/* Ensure that the output paths of the derivation are valid. If they
|
|
|
|
are already valid, this is a no-op. Otherwise, validity can
|
|
|
|
be reached in two ways. First, if the output paths have
|
|
|
|
substitutes, then those can be used. Second, the output paths can
|
|
|
|
be created by running the builder, after recursively building any
|
|
|
|
sub-derivations. */
|
2005-01-19 16:02:02 +01:00
|
|
|
void buildDerivations(const PathSet & drvPaths);
|
2003-07-20 21:29:38 +02:00
|
|
|
|
2005-01-20 17:01:07 +01:00
|
|
|
/* Ensure that a path is valid. If it is not currently valid, it may
|
|
|
|
be made valid by running a substitute (if defined for the path). */
|
2005-01-19 12:16:11 +01:00
|
|
|
void ensurePath(const Path & storePath);
|
2003-10-16 18:29:57 +02:00
|
|
|
|
2005-01-20 17:01:07 +01:00
|
|
|
/* Read a derivation, after ensuring its existence through
|
|
|
|
ensurePath(). */
|
2005-01-19 12:16:11 +01:00
|
|
|
Derivation derivationFromPath(const Path & drvPath);
|
2003-10-16 18:29:57 +02:00
|
|
|
|
2005-01-19 15:36:00 +01:00
|
|
|
/* Place in `paths' the set of all store paths in the file system
|
2005-01-19 12:16:11 +01:00
|
|
|
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);
|
|
|
|
|
2005-01-19 15:36:00 +01:00
|
|
|
/* 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);
|
2003-07-20 21:29:38 +02:00
|
|
|
|
2005-01-19 17:39:47 +01:00
|
|
|
#endif /* !__BUILD_H */
|