From c9b55fa3f098a1ab01ddae534e5d65ee10f25061 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 May 2025 22:23:59 +0200 Subject: [PATCH] Move autoDelChroot --- src/libstore/unix/build/derivation-builder.cc | 9 --------- src/libstore/unix/build/linux-derivation-builder.cc | 12 ++++++++++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc index 793439efd..037359bb0 100644 --- a/src/libstore/unix/build/derivation-builder.cc +++ b/src/libstore/unix/build/derivation-builder.cc @@ -110,12 +110,6 @@ protected: */ Path tmpDirInSandbox; - /** - * RAII object to delete the chroot directory. - */ - // FIXME: move - std::shared_ptr autoDelChroot; - /** * The sort of derivation we are building. * @@ -557,9 +551,6 @@ std::variant, SingleDrvOutputs> Derivation for (auto & i : redirectedOutputs) deletePath(store.Store::toRealPath(i.second)); - /* Delete the chroot (if we were using one). */ - autoDelChroot.reset(); /* this runs the destructor */ - deleteTmpDir(true); return std::move(builtOutputs); diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc index 648f55adb..ee2e0c044 100644 --- a/src/libstore/unix/build/linux-derivation-builder.cc +++ b/src/libstore/unix/build/linux-derivation-builder.cc @@ -175,6 +175,11 @@ struct LinuxDerivationBuilder : DerivationBuilderImpl */ Path chrootRootDir; + /** + * RAII object to delete the chroot directory. + */ + std::shared_ptr autoDelChroot; + PathsInChroot pathsInChroot; LinuxDerivationBuilder( @@ -183,6 +188,13 @@ struct LinuxDerivationBuilder : DerivationBuilderImpl { } + void deleteTmpDir(bool force) override + { + autoDelChroot.reset(); /* this runs the destructor */ + + DerivationBuilderImpl::deleteTmpDir(force); + } + uid_t sandboxUid() { return usingUserNamespace ? (!buildUser || buildUser->getUIDCount() == 1 ? 1000 : 0) : buildUser->getUID();