diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxRunner.java | 19 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/util/OS.java | 6 |
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; } |