1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-08 11:36:03 +01:00

libstore/registerOutputs: Don't try to optimize a non-existent actualPath

Since 3c610df550 this resulted in `getting status of`
errors on paths inside the chroot if a path was already valid. Careful inspection
of the logic shows that if buildMode != bmCheck actualPath gets reassigned to
store.toRealPath(finalDestPath). The only branch that cares about actualPath is
the buildMode == bmCheck case, which doesn't lead to optimisePath anyway.
This commit is contained in:
Sergei Zimmerman 2025-10-16 23:08:30 +03:00
parent f84b33644c
commit 4cbcaad435
No known key found for this signature in database

View file

@ -1742,7 +1742,6 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs()
if (buildMode == bmRepair) { if (buildMode == bmRepair) {
/* Path already exists, need to replace it */ /* Path already exists, need to replace it */
replaceValidPath(store.toRealPath(finalDestPath), actualPath); replaceValidPath(store.toRealPath(finalDestPath), actualPath);
actualPath = store.toRealPath(finalDestPath);
} else if (buildMode == bmCheck) { } else if (buildMode == bmCheck) {
/* Path already exists, and we want to compare, so we leave out /* Path already exists, and we want to compare, so we leave out
new path in place. */ new path in place. */
@ -1756,7 +1755,6 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs()
auto destPath = store.toRealPath(finalDestPath); auto destPath = store.toRealPath(finalDestPath);
deletePath(destPath); deletePath(destPath);
movePath(actualPath, destPath); movePath(actualPath, destPath);
actualPath = destPath;
} }
} }
@ -1809,7 +1807,9 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs()
debug("unreferenced input: '%1%'", store.printStorePath(i)); debug("unreferenced input: '%1%'", store.printStorePath(i));
} }
store.optimisePath(actualPath, NoRepair); // FIXME: combine with scanForReferences() if (!store.isValidPath(newInfo.path))
store.optimisePath(
store.toRealPath(finalDestPath), NoRepair); // FIXME: combine with scanForReferences()
newInfo.deriver = drvPath; newInfo.deriver = drvPath;
newInfo.ultimate = true; newInfo.ultimate = true;