mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 14:06:16 +02:00
LockedFlake::getFingerprint(): Use Input::getFingerprint()
This commit is contained in:
parent
29049d2653
commit
6558da45f5
3 changed files with 10 additions and 11 deletions
|
@ -443,10 +443,10 @@ ref<eval_cache::EvalCache> openEvalCache(
|
||||||
EvalState & state,
|
EvalState & state,
|
||||||
std::shared_ptr<flake::LockedFlake> lockedFlake)
|
std::shared_ptr<flake::LockedFlake> lockedFlake)
|
||||||
{
|
{
|
||||||
auto fingerprint = lockedFlake->getFingerprint();
|
auto fingerprint = lockedFlake->getFingerprint(state.store);
|
||||||
return make_ref<nix::eval_cache::EvalCache>(
|
return make_ref<nix::eval_cache::EvalCache>(
|
||||||
evalSettings.useEvalCache && evalSettings.pureEval
|
evalSettings.useEvalCache && evalSettings.pureEval
|
||||||
? std::optional { std::cref(fingerprint) }
|
? fingerprint
|
||||||
: std::nullopt,
|
: std::nullopt,
|
||||||
state,
|
state,
|
||||||
[&state, lockedFlake]()
|
[&state, lockedFlake]()
|
||||||
|
|
|
@ -926,18 +926,17 @@ static RegisterPrimOp r4({
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Fingerprint LockedFlake::getFingerprint() const
|
std::optional<Fingerprint> LockedFlake::getFingerprint(ref<Store> store) const
|
||||||
{
|
{
|
||||||
|
if (lockFile.isUnlocked()) return std::nullopt;
|
||||||
|
|
||||||
|
auto fingerprint = flake.lockedRef.input.getFingerprint(store);
|
||||||
|
if (!fingerprint) return std::nullopt;
|
||||||
|
|
||||||
// FIXME: as an optimization, if the flake contains a lock file
|
// FIXME: as an optimization, if the flake contains a lock file
|
||||||
// and we haven't changed it, then it's sufficient to use
|
// and we haven't changed it, then it's sufficient to use
|
||||||
// flake.sourceInfo.storePath for the fingerprint.
|
// flake.sourceInfo.storePath for the fingerprint.
|
||||||
return hashString(HashAlgorithm::SHA256,
|
return hashString(HashAlgorithm::SHA256, fmt("%s;%s;%s", *fingerprint, flake.lockedRef.subdir, lockFile));
|
||||||
fmt("%s;%s;%d;%d;%s",
|
|
||||||
flake.path.to_string(),
|
|
||||||
flake.lockedRef.subdir,
|
|
||||||
flake.lockedRef.input.getRevCount().value_or(0),
|
|
||||||
flake.lockedRef.input.getLastModified().value_or(0),
|
|
||||||
lockFile));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Flake::~Flake() { }
|
Flake::~Flake() { }
|
||||||
|
|
|
@ -119,7 +119,7 @@ struct LockedFlake
|
||||||
*/
|
*/
|
||||||
std::map<ref<Node>, SourcePath> nodePaths;
|
std::map<ref<Node>, SourcePath> nodePaths;
|
||||||
|
|
||||||
Fingerprint getFingerprint() const;
|
std::optional<Fingerprint> getFingerprint(ref<Store> store) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LockFlags
|
struct LockFlags
|
||||||
|
|
Loading…
Reference in a new issue