diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-01-19T16·39+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-01-19T16·39+0000 |
commit | 96de272b48f8e9bdabffddb699ed4f2292d4f1d7 (patch) | |
tree | 6121797dd02605b2f01e2c28de0bef54e7446e8b /src/libstore/derivations.hh | |
parent | ef5f254a55a2d6db09d3d0549ed45701558027e0 (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/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 */ |