diff options
author | Daiderd Jordan <daiderd@gmail.com> | 2020-01-04 20:23:59 +0100 |
---|---|---|
committer | Daiderd Jordan <daiderd@gmail.com> | 2020-01-04 20:25:25 +0100 |
commit | 7d448bc966021e63e9c7b96530cee885f3dcd68d (patch) | |
tree | 8bd063de95c0c97286d0c5fecc2115d8e84a2f17 /src | |
parent | b33fefcb92e02725fc77b6adfabab1c1f43e9aa1 (diff) |
build: fix path repairing when hash rewriting is required
Handle store path repairing on darwin when sandboxing is enabled. Unlike
on linux sandboxing on darwin still requires hash rewriting.
Diffstat (limited to 'src')
-rw-r--r-- | src/libstore/build.cc | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 257d70ca9..0674f936b 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -3567,19 +3567,6 @@ void DerivationGoal::registerOutputs() if (!missingPaths.count(i.second.path)) continue; Path actualPath = path; - if (useChroot) { - actualPath = chrootRootDir + path; - if (pathExists(actualPath)) { - /* Move output paths from the chroot to the Nix store. */ - if (buildMode == bmRepair) - replaceValidPath(path, actualPath); - else - if (buildMode != bmCheck && rename(actualPath.c_str(), worker.store.toRealPath(path).c_str()) == -1) - throw SysError(format("moving build output '%1%' from the sandbox to the Nix store") % path); - } - if (buildMode != bmCheck) actualPath = worker.store.toRealPath(path); - } - if (needsHashRewrite()) { auto r = redirectedOutputs.find(i.second.path); if (r != redirectedOutputs.end()) { @@ -3591,6 +3578,17 @@ void DerivationGoal::registerOutputs() if (buildMode == bmCheck) actualPath = redirected; } + } else if (useChroot) { + actualPath = chrootRootDir + path; + if (pathExists(actualPath)) { + /* Move output paths from the chroot to the Nix store. */ + if (buildMode == bmRepair) + replaceValidPath(path, actualPath); + else + if (buildMode != bmCheck && rename(actualPath.c_str(), worker.store.toRealPath(path).c_str()) == -1) + throw SysError(format("moving build output '%1%' from the sandbox to the Nix store") % path); + } + if (buildMode != bmCheck) actualPath = worker.store.toRealPath(path); } struct stat st; |