forked from lix-project/lix
Delete paths in a component in topologically sorted order
The outputs of a derivation can refer to each other (even though they cannot have cycles), so they have to be deleted in the right order. http://hydra.nixos.org/build/3026118
This commit is contained in:
parent
31114ec3a5
commit
2923b55f9d
|
@ -454,6 +454,7 @@ bool LocalStore::tryToDelete(GCState & state, const Path & path)
|
||||||
is, we can delete the elements of ‘paths’ only if all referrers
|
is, we can delete the elements of ‘paths’ only if all referrers
|
||||||
of ‘paths’ are garbage. */
|
of ‘paths’ are garbage. */
|
||||||
PathSet paths, referrers;
|
PathSet paths, referrers;
|
||||||
|
Paths pathsSorted;
|
||||||
|
|
||||||
if (isValidPath(path)) {
|
if (isValidPath(path)) {
|
||||||
|
|
||||||
|
@ -516,7 +517,8 @@ bool LocalStore::tryToDelete(GCState & state, const Path & path)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The paths are garbage, so delete them. */
|
/* The paths are garbage, so delete them. */
|
||||||
foreach (PathSet::iterator, i, paths) {
|
pathsSorted = topoSortPaths(*this, paths);
|
||||||
|
foreach (Paths::iterator, i, pathsSorted) {
|
||||||
if (shouldDelete(state.options.action)) {
|
if (shouldDelete(state.options.action)) {
|
||||||
|
|
||||||
/* If it's a valid path that's not a regular file or
|
/* If it's a valid path that's not a regular file or
|
||||||
|
|
Loading…
Reference in a new issue