Revert "libstore: simplify fallback build directory logic"

Revert submission 3850

Reason for revert: caused multiple regressions noticed in https://git.lix.systems/lix-project/lix/issues/975 and https://git.lix.systems/lix-project/lix/issues/966 (suspected).

Root cause analysis has not been done yet and this breaks Lix on Darwin on HEAD.

Reverted changes: /q/submissionid:3850

Change-Id: Id6db066f3f5c454b258157bc12e0f26020de94a7
This commit is contained in:
Raito Bezarius
2025-08-21 14:37:46 +00:00
parent bde4a50740
commit 805aeffece
+4 -2
View File
@@ -457,6 +457,8 @@ 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
@@ -466,7 +468,7 @@ try {
constexpr int toplevelDirMode = 0700;
#endif
auto nixBuildsTmp = createTempDir(
"", fmt("nix-builds-%s", geteuid()), false, false, toplevelDirMode
globalTmp, fmt("nix-builds-%s", geteuid()), false, false, toplevelDirMode
);
warn(
"Failed to use the system-wide build directory '%s', falling back to a temporary "
@@ -474,10 +476,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.*/