libstore: simplify fallback build directory logic

This does change the behaviour when the global temporary directory
does not exist, but other uses of the global temporary directory are
already broken in that circumstance, and it should be fixed centrally
if the use case is considered desirable. The logic was not present
before the recent churn around build directories – it was added now
that Lix is taking ownership of the build directory in the store –
so this should not be a meaningful regression.

Change-Id: I6a6a69648054ae201b3ce36d11e49c93793fdb0e
This commit is contained in:
Emily
2025-08-18 09:27:31 +00:00
committed by emilazy
parent cad304420f
commit 267d9e100c
+2 -4
View File
@@ -457,8 +457,6 @@ try {
throw;
}
auto globalTmp = defaultTempDir();
createDirs(globalTmp);
#if __APPLE__
/* macOS filesystem namespacing does not exist, to avoid breaking builds, we need to weaken
* the mode bits on the top-level directory. This avoids issues like
@@ -468,7 +466,7 @@ try {
constexpr int toplevelDirMode = 0700;
#endif
auto nixBuildsTmp = createTempDir(
globalTmp, fmt("nix-builds-%s", geteuid()), false, false, toplevelDirMode
"", fmt("nix-builds-%s", geteuid()), false, false, toplevelDirMode
);
warn(
"Failed to use the system-wide build directory '%s', falling back to a temporary "
@@ -476,10 +474,10 @@ try {
settings.buildDir.get(),
nixBuildsTmp
);
worker.buildDirOverride = nixBuildsTmp;
tmpDirRoot = createTempDir(
nixBuildsTmp, "nix-build-" + std::string(drvPath.name()), false, false, 0700
);
worker.buildDirOverride = nixBuildsTmp;
}
/* The TOCTOU between the previous mkdir call and this open call is unavoidable due to
* POSIX semantics.*/