mirror of
https://github.com/NixOS/nix.git
synced 2025-12-14 21:11:04 +01:00
Allow non-CA derivations to depend on CA derivations
This commit is contained in:
parent
e0ca98c207
commit
c092fa4702
8 changed files with 124 additions and 23 deletions
|
|
@ -493,7 +493,8 @@ void DerivationGoal::inputsRealised()
|
|||
if (useDerivation) {
|
||||
auto & fullDrv = *dynamic_cast<Derivation *>(drv.get());
|
||||
|
||||
if (!fullDrv.inputDrvs.empty() && fullDrv.type() == DerivationType::CAFloating) {
|
||||
if ((!fullDrv.inputDrvs.empty() &&
|
||||
fullDrv.type() == DerivationType::CAFloating) || fullDrv.type() == DerivationType::DeferredInputAddressed) {
|
||||
/* We are be able to resolve this derivation based on the
|
||||
now-known results of dependencies. If so, we become a stub goal
|
||||
aliasing that resolved derivation goal */
|
||||
|
|
@ -3166,6 +3167,15 @@ void DerivationGoal::registerOutputs()
|
|||
[&](DerivationOutputCAFloating dof) {
|
||||
return newInfoFromCA(dof);
|
||||
},
|
||||
[&](DerivationOutputDeferred) {
|
||||
// No derivation should reach that point without having been
|
||||
// rewritten first
|
||||
assert(false);
|
||||
// Ugly, but the compiler insists on having this return a value
|
||||
// of type `ValidPathInfo` despite the `assert(false)`, so
|
||||
// let's provide it
|
||||
return *(ValidPathInfo*)0;
|
||||
},
|
||||
}, output.output);
|
||||
|
||||
/* Calculate where we'll move the output files. In the checking case we
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue