diff options
Diffstat (limited to 'src/libstore/derivations.hh')
-rw-r--r-- | src/libstore/derivations.hh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/libstore/derivations.hh b/src/libstore/derivations.hh new file mode 100644 index 000000000000..c264981d265c --- /dev/null +++ b/src/libstore/derivations.hh @@ -0,0 +1,62 @@ +#ifndef __DERIVATIONS_H +#define __DERIVATIONS_H + +#include "aterm.hh" +#include "store.hh" + + +/* Extension of derivations in the Nix store. */ +const string drvExtension = ".drv"; + + +/* Abstract syntax of derivations. */ + +struct DerivationOutput +{ + Path path; + string hashAlgo; /* hash used for expected hash computation */ + string hash; /* expected hash, may be null */ + DerivationOutput() + { + } + DerivationOutput(Path path, string hashAlgo, string hash) + { + this->path = path; + this->hashAlgo = hashAlgo; + this->hash = hash; + } +}; + +typedef map<string, DerivationOutput> DerivationOutputs; +typedef map<string, string> StringPairs; + +struct Derivation +{ + DerivationOutputs outputs; /* keyed on symbolic IDs */ + PathSet inputDrvs; /* inputs that are sub-derivations */ + PathSet inputSrcs; /* inputs that are sources */ + string platform; + Path builder; + Strings args; + StringPairs env; +}; + + +/* Hash an aterm. */ +Hash hashTerm(ATerm t); + +/* Write a derivation to the Nix store, and return its path. */ +Path writeDerivation(const Derivation & drv, const string & name); + +/* Parse a derivation. */ +Derivation parseDerivation(ATerm t); + +/* Parse a derivation. */ +ATerm unparseDerivation(const Derivation & drv); + +/* Check whether a file name ends with the extensions for + derivations. */ +bool isDerivation(const string & fileName); + + +#endif /* !__DERIVATIONS_H */ |