aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxRunner.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/OS.java6
2 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxRunner.java
index 3f559babff..40d9623db2 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxRunner.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.shell.Command;
import com.google.devtools.build.lib.shell.CommandException;
import com.google.devtools.build.lib.shell.KillableObserver;
import com.google.devtools.build.lib.shell.TimeoutKillableObserver;
+import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.vfs.Path;
import java.io.File;
import java.io.IOException;
@@ -58,6 +59,24 @@ final class DarwinSandboxRunner extends SandboxRunner {
}
static boolean isSupported() {
+ // Check osx version, only >=10.11 is supported.
+ // And we should check if sandbox still work when it gets 11.x
+ String osxVersion = OS.getVersion();
+ String[] parts = osxVersion.split("\\.");
+ if (parts.length != 3) {
+ // Currently the format is 10.11.x
+ return false;
+ }
+ try {
+ int v0 = Integer.parseInt(parts[0]);
+ int v1 = Integer.parseInt(parts[1]);
+ if (v0 != 10 || v1 < 11) {
+ return false;
+ }
+ } catch (NumberFormatException e) {
+ return false;
+ }
+
List<String> args = new ArrayList<>();
args.add(SANDBOX_EXEC);
args.add("-p");
diff --git a/src/main/java/com/google/devtools/build/lib/util/OS.java b/src/main/java/com/google/devtools/build/lib/util/OS.java
index b05eb2124f..fb6596f8f8 100644
--- a/src/main/java/com/google/devtools/build/lib/util/OS.java
+++ b/src/main/java/com/google/devtools/build/lib/util/OS.java
@@ -42,6 +42,10 @@ public enum OS {
return canonicalName;
}
+ public static String getVersion() {
+ return System.getProperty("os.version");
+ }
+
@Override
public String toString() {
return getCanonicalName();
@@ -55,7 +59,7 @@ public enum OS {
osName = System.getProperty("os.name");
}
- if (osName == null) {
+ if (osName == null) {
return OS.UNKNOWN;
}