Require ca-derivations everywhere we create a CA derivation

"create" as in read one in from a serialized form, or build one from
scratch in memory.
This commit is contained in:
John Ericson 2020-07-27 17:56:36 +00:00
parent e32a9e124b
commit 951415b568
2 changed files with 10 additions and 6 deletions

View file

@ -640,8 +640,10 @@ static void prim_derivationStrict(EvalState & state, const Pos & pos, Value * *
if (i->value->type == tNull) continue;
}
if (i->name == state.sContentAddressed)
if (i->name == state.sContentAddressed) {
settings.requireExperimentalFeature("ca-derivations");
contentAddressed = state.forceBool(*i->value, pos);
}
/* The `args' attribute is special: it supplies the
command-line arguments to the builder. */

View file

@ -163,12 +163,13 @@ static DerivationOutput parseDerivationOutput(const Store & store, std::istrings
},
}
}
: DerivationOutput {
.output = DerivationOutputFloating {
: (settings.requireExperimentalFeature("ca-derivations"),
DerivationOutput {
.output = DerivationOutputFloating {
.method = std::move(method),
.hashType = std::move(hashType),
},
};
});
} else
return DerivationOutput {
.output = DerivationOutputInputAddressed {
@ -559,12 +560,13 @@ static DerivationOutput readDerivationOutput(Source & in, const Store & store)
},
}
}
: DerivationOutput {
: (settings.requireExperimentalFeature("ca-derivations"),
DerivationOutput {
.output = DerivationOutputFloating {
.method = std::move(method),
.hashType = std::move(hashType),
},
};
});
} else
return DerivationOutput {
.output = DerivationOutputInputAddressed {