From 33f18c6492850d62221dc8b84f6a22345070a019 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Thu, 16 Oct 2025 16:59:19 -0400 Subject: [PATCH] `registerOutputs`: Hoist up `optimizePath` call and comment rationale --- src/libstore/unix/build/derivation-builder.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc index bedfbd54b..2320ede07 100644 --- a/src/libstore/unix/build/derivation-builder.cc +++ b/src/libstore/unix/build/derivation-builder.cc @@ -1783,16 +1783,26 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() if (buildMode == bmRepair) { /* Path already exists, need to replace it */ replaceValidPath(store.toRealPath(finalDestPath), actualPath); + /* Optimize store object we just replaced with new + (not-yet-optimized) data. */ + store.optimisePath( + store.toRealPath(finalDestPath), NoRepair); // FIXME: combine with scanForReferences() } else if (store.isValidPath(newInfo.path)) { /* Path already exists because CA path produced by something else. No moving needed. */ assert(newInfo.ca); /* Can delete our scratch copy now. */ deletePath(actualPath); + /* Presume already-existing store object is already + optimized. */ } else { auto destPath = store.toRealPath(finalDestPath); deletePath(destPath); movePath(actualPath, destPath); + /* Optimize store object we just installed from new + (not-yet-optimized) data. */ + store.optimisePath( + store.toRealPath(finalDestPath), NoRepair); // FIXME: combine with scanForReferences() } } @@ -1804,10 +1814,6 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() debug("unreferenced input: '%1%'", store.printStorePath(i)); } - if (!store.isValidPath(newInfo.path)) - store.optimisePath( - store.toRealPath(finalDestPath), NoRepair); // FIXME: combine with scanForReferences() - newInfo.deriver = drvPath; newInfo.ultimate = true; store.signPathInfo(newInfo);