mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 22:16:16 +02:00
Merge pull request #9563 from obsidiansystems/tryResolve-evalStore
Give `Derivation::tryResolve` an `evalStore` argument
This commit is contained in:
commit
36ca6adc60
3 changed files with 4 additions and 4 deletions
|
@ -558,7 +558,7 @@ void DerivationGoal::inputsRealised()
|
||||||
inputDrvOutputs statefully, sometimes it gets out of sync with
|
inputDrvOutputs statefully, sometimes it gets out of sync with
|
||||||
the real source of truth (store). So we query the store
|
the real source of truth (store). So we query the store
|
||||||
directly if there's a problem. */
|
directly if there's a problem. */
|
||||||
attempt = fullDrv.tryResolve(worker.store);
|
attempt = fullDrv.tryResolve(worker.store, &worker.evalStore);
|
||||||
}
|
}
|
||||||
assert(attempt);
|
assert(attempt);
|
||||||
Derivation drvResolved { std::move(*attempt) };
|
Derivation drvResolved { std::move(*attempt) };
|
||||||
|
|
|
@ -1002,13 +1002,13 @@ static void rewriteDerivation(Store & store, BasicDerivation & drv, const String
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<BasicDerivation> Derivation::tryResolve(Store & store) const
|
std::optional<BasicDerivation> Derivation::tryResolve(Store & store, Store * evalStore) const
|
||||||
{
|
{
|
||||||
std::map<std::pair<StorePath, std::string>, StorePath> inputDrvOutputs;
|
std::map<std::pair<StorePath, std::string>, StorePath> inputDrvOutputs;
|
||||||
|
|
||||||
std::function<void(const StorePath &, const DerivedPathMap<StringSet>::ChildNode &)> accum;
|
std::function<void(const StorePath &, const DerivedPathMap<StringSet>::ChildNode &)> accum;
|
||||||
accum = [&](auto & inputDrv, auto & node) {
|
accum = [&](auto & inputDrv, auto & node) {
|
||||||
for (auto & [outputName, outputPath] : store.queryPartialDerivationOutputMap(inputDrv)) {
|
for (auto & [outputName, outputPath] : store.queryPartialDerivationOutputMap(inputDrv, evalStore)) {
|
||||||
if (outputPath) {
|
if (outputPath) {
|
||||||
inputDrvOutputs.insert_or_assign({inputDrv, outputName}, *outputPath);
|
inputDrvOutputs.insert_or_assign({inputDrv, outputName}, *outputPath);
|
||||||
if (auto p = get(node.childMap, outputName))
|
if (auto p = get(node.childMap, outputName))
|
||||||
|
|
|
@ -342,7 +342,7 @@ struct Derivation : BasicDerivation
|
||||||
* 2. Input placeholders are replaced with realized input store
|
* 2. Input placeholders are replaced with realized input store
|
||||||
* paths.
|
* paths.
|
||||||
*/
|
*/
|
||||||
std::optional<BasicDerivation> tryResolve(Store & store) const;
|
std::optional<BasicDerivation> tryResolve(Store & store, Store * evalStore = nullptr) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Like the above, but instead of querying the Nix database for
|
* Like the above, but instead of querying the Nix database for
|
||||||
|
|
Loading…
Reference in a new issue