aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2022-03-31 16:56:44 +0200
committerEelco Dolstra <edolstra@gmail.com>2022-03-31 16:56:44 +0200
commit75370972847a1b992055085f39b38f1f659e5275 (patch)
treebfb7cf9c450abd2b06608a0bdbfdd4f619aae2ff /src
parenta99af85a770df462985b621c4c3dd710b8487f44 (diff)
Provide default values for outputHashAlgo and outputHashMode
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/primops.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index eaf04320e..969391725 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -991,8 +991,8 @@ static void prim_derivationStrict(EvalState & state, const Pos & pos, Value * *
bool contentAddressed = false;
bool isImpure = false;
std::optional<std::string> outputHash;
- std::string outputHashAlgo;
- auto ingestionMethod = FileIngestionMethod::Flat;
+ std::optional<std::string> outputHashAlgo;
+ std::optional<FileIngestionMethod> ingestionMethod;
StringSet outputs;
outputs.insert("out");
@@ -1190,15 +1190,16 @@ static void prim_derivationStrict(EvalState & state, const Pos & pos, Value * *
.errPos = posDrvName
});
- std::optional<HashType> ht = parseHashTypeOpt(outputHashAlgo);
+ std::optional<HashType> ht = parseHashTypeOpt(outputHashAlgo.value_or("sha256"));
Hash h = newHashAllowEmpty(*outputHash, ht);
- auto outPath = state.store->makeFixedOutputPath(ingestionMethod, h, drvName);
+ auto method = ingestionMethod.value_or(FileIngestionMethod::Flat);
+ auto outPath = state.store->makeFixedOutputPath(method, h, drvName);
drv.env["out"] = state.store->printStorePath(outPath);
drv.outputs.insert_or_assign("out",
DerivationOutput::CAFixed {
.hash = FixedOutputHash {
- .method = ingestionMethod,
+ .method = method,
.hash = std::move(h),
},
});
@@ -1211,19 +1212,21 @@ static void prim_derivationStrict(EvalState & state, const Pos & pos, Value * *
.errPos = posDrvName
});
- HashType ht = parseHashType(outputHashAlgo);
+ auto ht = parseHashType(outputHashAlgo.value_or("sha256"));
+ auto method = ingestionMethod.value_or(FileIngestionMethod::Recursive);
+
for (auto & i : outputs) {
drv.env[i] = hashPlaceholder(i);
if (isImpure)
drv.outputs.insert_or_assign(i,
DerivationOutput::Impure {
- .method = ingestionMethod,
+ .method = method,
.hashType = ht,
});
else
drv.outputs.insert_or_assign(i,
DerivationOutput::CAFloating {
- .method = ingestionMethod,
+ .method = method,
.hashType = ht,
});
}