Skip to content

Commit 167e79f

Browse files
brentleyjonesob
andauthored
Don't resolve symlinks for --sandbox_base (#14748)
On macOS BigSur, the sandbox-exec command behaves slightly different than on Catalina when firm links are present. Resolving symlinks can prevent the sandbox for allowing write operations to the sandbox base. This effectively reverts a piece of 656a0ba, namely: > When using --experimental_sandbox_base, ensure that symlinks in the path are > resolved. Before this, you had to check whether on your system /dev/shm is a > symlink to /run/shm and then use that instead. Now it no longer matters, as > symlinks are resolved. See #13766 for full details. Closes #13984. PiperOrigin-RevId: 422319807 (cherry picked from commit 0de7bb9) Co-authored-by: Oscar Bonilla <[email protected]>
1 parent d53f53c commit 167e79f

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java

+4
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ private static Path computeSandboxBase(SandboxOptions options, CommandEnvironmen
125125
env.getRuntime().getProductName(),
126126
Fingerprint.getHexDigest(env.getOutputBase().toString()));
127127
FileSystem fileSystem = env.getRuntime().getFileSystem();
128+
if (OS.getCurrent() == OS.DARWIN) {
129+
// Don't resolve symlinks on macOS: See https://github.com/bazelbuild/bazel/issues/13766
130+
return fileSystem.getPath(options.sandboxBase).getRelative(dirName);
131+
}
128132
Path resolvedSandboxBase = fileSystem.getPath(options.sandboxBase).resolveSymbolicLinks();
129133
return resolvedSandboxBase.getRelative(dirName);
130134
}

0 commit comments

Comments
 (0)