diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2023-04-17 11:22:31 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2023-04-17 17:36:12 -0400 |
commit | aa74c7b0bcd31a6c0f75f5fa09f417bcbef4ad14 (patch) | |
tree | 719c00d6fac1b6c4748749f2e035ff7819210080 /src/libstore/derivations.cc | |
parent | 64ee02890c965bc5d8747f78e6298205c9307335 (diff) |
Gate experimental features in `DerivationOutput::fromJSON`
This is an entry point for outside data, so we need to check enabled
experimental features here.
Diffstat (limited to 'src/libstore/derivations.cc')
-rw-r--r-- | src/libstore/derivations.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc index 0de36504b..15f3908ed 100644 --- a/src/libstore/derivations.cc +++ b/src/libstore/derivations.cc @@ -989,7 +989,8 @@ nlohmann::json DerivationOutput::toJSON( DerivationOutput DerivationOutput::fromJSON( const Store & store, std::string_view drvName, std::string_view outputName, - const nlohmann::json & _json) + const nlohmann::json & _json, + const ExperimentalFeatureSettings & xpSettings) { std::set<std::string_view> keys; auto json = (std::map<std::string, nlohmann::json>) _json; @@ -1028,6 +1029,7 @@ DerivationOutput DerivationOutput::fromJSON( } else if (keys == (std::set<std::string_view> { "hashAlgo" })) { + xpSettings.require(Xp::CaDerivations); auto [method, hashType] = methodAlgo(); return DerivationOutput::CAFloating { .method = method, @@ -1040,6 +1042,7 @@ DerivationOutput DerivationOutput::fromJSON( } else if (keys == (std::set<std::string_view> { "hashAlgo", "impure" })) { + xpSettings.require(Xp::ImpureDerivations); auto [method, hashType] = methodAlgo(); return DerivationOutput::Impure { .method = method, |