Skip to content

Commit

Permalink
lockFlake(): When refetching a locked flake, use the locked ref
Browse files Browse the repository at this point in the history
Otherwise we may accidentally update a lock when we shouldn't.

Fixes #12445.

(cherry picked from commit 5c552b6)

# Conflicts:
#	src/libflake/flake/flake.cc
  • Loading branch information
edolstra authored and mergify[bot] committed Feb 12, 2025
1 parent 49f226e commit dffcc18
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions src/libflake/flake/flake.cc
Original file line number Diff line number Diff line change
Expand Up @@ -554,12 +554,18 @@ LockedFlake lockFlake(

/* Get the input flake, resolve 'path:./...'
flakerefs relative to the parent flake. */
auto getInputFlake = [&]()
auto getInputFlake = [&](const FlakeRef & ref)
{
if (auto resolvedPath = resolveRelativePath()) {
<<<<<<< HEAD
return readFlake(state, *input.ref, *input.ref, *input.ref, *resolvedPath, inputPath);
} else {
return getFlake(state, *input.ref, useRegistries, flakeCache, inputPath);
=======
return readFlake(state, ref, ref, ref, *resolvedPath, inputAttrPath);
} else {
return getFlake(state, ref, useRegistries, flakeCache, inputAttrPath);
>>>>>>> 5c552b62f (lockFlake(): When refetching a locked flake, use the locked ref)
}
};

Expand Down Expand Up @@ -640,7 +646,7 @@ LockedFlake lockFlake(
}

if (mustRefetch) {
auto inputFlake = getInputFlake();
auto inputFlake = getInputFlake(oldLock->lockedRef);
nodePaths.emplace(childNode, inputFlake.path.parent());
computeLocks(inputFlake.inputs, childNode, inputPath, oldLock, followsPrefix,
inputFlake.path, false);
Expand Down Expand Up @@ -668,7 +674,7 @@ LockedFlake lockFlake(
auto ref = (input2.ref && explicitCliOverrides.contains(inputPath)) ? *input2.ref : *input.ref;

if (input.isFlake) {
auto inputFlake = getInputFlake();
auto inputFlake = getInputFlake(*input.ref);

auto childNode = make_ref<LockedNode>(
inputFlake.lockedRef,
Expand Down

0 comments on commit dffcc18

Please sign in to comment.