aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/derivations.hh
AgeCommit message (Collapse)Author
2020-12-17Fix the detection of already built drv outputsregnat
PRs #4370 and #4348 had a bad interaction in that the second broke the fist one in a not trivial way. The issue was that since #4348 the logic for detecting whether a derivation output is already built requires some logic that was specific to the `LocalStore`. It happens though that most of this logic could be upstreamed to any `Store`, which is what this commit does.
2020-12-11Use the hash modulo in the derivation outputsregnat
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.
2020-11-19Make drv hash modulo memo table thread-safeJohn Ericson
Let's get one step closer to the daemon not needing to fork.
2020-10-27Allow non-CA derivations to depend on CA derivationsregnat
2020-10-09Remove stray DerivationOutputsAndPaths typeEelco Dolstra
2020-09-28Clarify comment a bitJohn Ericson
2020-09-16Ensure resolved CA derivations are writtenJohn Ericson
so we can link outputs to deriver and thus properly cache.
2020-09-16Merge remote-tracking branch 'upstream/master' into ca-floating-upstreamJohn Ericson
2020-09-15Rename `Derivation::pathOpt` to `Derivation::path`John Ericson
We no longer need the `*Opt` to disambiguate.
2020-09-04Fix querying outputs for CA derivations some moreJohn Ericson
If we resolve using the known path of a derivation whose output we didn't have, we previously blew up. Now we just fail gracefully, returning the map of all outputs unknown.
2020-09-04Merge remote-tracking branch 'obsidian/single-ca-drv-build' into ↵John Ericson
ca-floating-upstream
2020-09-04Fix some of the issues raised by @edolstraJohn Ericson
- More and better comments - The easier renames
2020-09-04Fix floating CA testsJohn Ericson
We will sometimes try to query the outputs of derivations we can't resolve. That's fine; it just means we don't know what those outputs are yet.
2020-08-28Merge remote-tracking branch 'obsidian/single-ca-drv-build' into ↵John Ericson
ca-floating-upstream
2020-08-28Merge remote-tracking branch 'upstream/master' into single-ca-drv-buildJohn Ericson
2020-08-27Merge pull request #3434 from Ericson2314/derivation-header-include-orderEelco Dolstra
Revise division of labor in deserialization of derivations
2020-08-24CA derivations that depend on other CA derivationsJohn Ericson
Co-authored-by: Théophane Hufschmitt <regnat@users.noreply.github.com>
2020-08-24Add constructor for BasicDerivation -> DerivationJohn Ericson
2020-08-23Merge remote-tracking branch 'obsidian/write-derivation-borrow' into HEADJohn Ericson
2020-08-23`writeDerivation` just needs a plain store referenceJohn Ericson
2020-08-21"Downstream placeholders" should not be store pathsJohn Ericson
Insead they should be opaque `/<hash>` like the placeholders we already have.
2020-08-18Merge remote-tracking branch 'upstream/master' into ↵John Ericson
derivation-header-include-order
2020-08-14Merge remote-tracking branch 'upstream/master' into single-ca-drv-buildJohn Ericson
2020-08-14Merge pull request #3875 from obsidiansystems/new-interface-for-path-pathOptEelco Dolstra
Offer a safer interface for path and pathOpt
2020-08-10Merge branch 'small-drv-serialize-cleanup' of github.com:obsidiansystems/nix ↵John Ericson
into single-ca-drv-build
2020-08-10Remove name parameter from `writeDerivation`John Ericson
The name is now stored with the derivation itself.
2020-08-07Squashed get CA derivations buildingJohn Ericson
2020-08-05Merge branch 'master' of github.com:NixOS/nix into ↵Carlo Nucera
new-interface-for-path-pathOpt
2020-08-05Reanme `DerivationType::Regular` defintion tooJohn Ericson
This is the one non-prefixed occurence
2020-08-05Make names more consistentJohn Ericson
2020-08-01Merge remote-tracking branch 'upstream/master' into ↵John Ericson
derivation-header-include-order
2020-07-28Offer a safer interface for pathOptCarlo Nucera
The new interface we offer provides a way of getting all the DerivationOutputs with the storePaths directly, based on the observation that it's the most common usecase.
2020-07-27Merge remote-tracking branch 'upstream/master' into ↵John Ericson
optional-derivation-output-storepath
2020-07-23Merge remote-tracking branch 'upstream/master' into misc-caJohn Ericson
2020-07-23Get rid of `basicDerivation::findOutput`John Ericson
It's a tiny function which is: - hardly worth abstrating over, and also only used once. - doesn't work once we get CA drvs I rewrote the one callsite to be forwards compatable with CA derivations, and also potentially more performant: instead of reading in the derivation it can ust consult the SQLite DB in the common case.
2020-07-20Merge branch 'ca-derivation-data-types' of github.com:obsidiansystems/nix ↵Carlo Nucera
into misc-ca
2020-07-20Add UnimplementedError to ease grepping for theseCarlo Nucera
2020-07-17Add `DerivationType::CAFloating`John Ericson
2020-07-17Merge branch 'ca-drv' of github.com:Ericson2314/nix into misc-caCarlo Nucera
2020-07-17Merge branch 'multi-output-hashDerivationModulo' of ↵Carlo Nucera
github.com:Ericson2314/nix into misc-ca
2020-07-16Small namespace fixCarlo Nucera
2020-07-15Merge branch 'master' of github.com:NixOS/nix into ↵Carlo Nucera
derivation-header-include-order
2020-07-12Change types to prepare the way for CA derivationsJohn Ericson
We've added the variant to `DerivationOutput` to support them, but made `DerivationOutput::path` partial to avoid actually implementing them. With this chage, we can all collaborate on "just" removing `DerivationOutput::path` calls to implement CA derivations.
2020-07-12Use more std::visit to prepare for new variantJohn Ericson
N.B. not using `std::visit` for fetchurl because there is no attempt to handle all the cases (e.g. no `else`) and lambda complicates early return.
2020-07-12DerivationOutputExtensional -> DerivationOutputInputAddressedJohn Ericson
Thanks @regnat for the great name.
2020-07-12String .drv suffix to create derivation nameJohn Ericson
2020-07-12std::string_view for new derivation name parametersJohn Ericson
2020-07-12BasicDerivation::findOutput cannot return reference anymoreJohn Ericson
2020-07-09Fix DerivationOutputExtensional nameMatthew Bauer
2020-07-08Only store hash of fixed derivation outputMatthew Bauer
we don’t need a full storepath for a fixedoutput derivation. So just putting the ingestion method + the hash is sufficient.