mirror of
https://github.com/NixOS/nix
synced 2025-07-06 21:41:48 +02:00
Use the hash modulo in the derivation outputs
Rather than storing the derivation outputs as `drvPath!outputName` internally, store them as `drvHashModulo!outputName` (or `outputHash!outputName` for fixed-output derivations). This makes the storage slightly more opaque, but enables an earlier cutoff in cases where a fixed-output dependency changes (but keeps the same output hash) − same as what we already do for input-addressed derivations.
This commit is contained in:
parent
8914e01e37
commit
bab1cda0e6
7 changed files with 93 additions and 89 deletions
|
@ -6,11 +6,15 @@
|
|||
namespace nix {
|
||||
|
||||
struct DrvOutput {
|
||||
StorePath drvPath;
|
||||
// The hash modulo of the derivation
|
||||
Hash drvHash;
|
||||
std::string outputName;
|
||||
|
||||
std::string to_string() const;
|
||||
|
||||
std::string strHash() const
|
||||
{ return drvHash.to_string(Base16, true); }
|
||||
|
||||
static DrvOutput parse(const std::string &);
|
||||
|
||||
bool operator<(const DrvOutput& other) const { return to_pair() < other.to_pair(); }
|
||||
|
@ -18,8 +22,8 @@ struct DrvOutput {
|
|||
|
||||
private:
|
||||
// Just to make comparison operators easier to write
|
||||
std::pair<StorePath, std::string> to_pair() const
|
||||
{ return std::make_pair(drvPath, outputName); }
|
||||
std::pair<Hash, std::string> to_pair() const
|
||||
{ return std::make_pair(drvHash, outputName); }
|
||||
};
|
||||
|
||||
struct Realisation {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue