aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/standalone
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-02-12 22:14:36 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-15 09:21:12 +0000
commitb5e03322ebe51a9f492291492e4844db58485779 (patch)
tree473dbe14d7a22c67c82af8be1dd9adc16a8f3470 /src/main/java/com/google/devtools/build/lib/standalone
parentb5d417d263bc1b35bdace54e0161137dce7e8ba5 (diff)
Use xcode-locator to locate DEVELOPER_DIR for standalone spawn strategy.
-- MOS_MIGRATED_REVID=114569255
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/standalone')
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java
index b2f98a36d5..7299f3555f 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.UserExecException;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleHostInfo;
+import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.shell.AbnormalTerminationException;
import com.google.devtools.build.lib.shell.Command;
import com.google.devtools.build.lib.shell.CommandException;
@@ -157,8 +158,17 @@ public class StandaloneSpawnStrategy implements SpawnActionContext {
*/
private ImmutableMap<String, String> locallyDeterminedEnv(ImmutableMap<String, String> env)
throws UserExecException {
+ // TODO(bazel-team): Remove apple-specific logic from this class.
ImmutableMap.Builder<String, String> newEnvBuilder = ImmutableMap.builder();
newEnvBuilder.putAll(env);
+ // Empty developer dir indicates to use the system default.
+ // TODO(bazel-team): Bazel's view of the xcode version and developer dir
+ // should be explicitly set for build hermiticity.
+ String developerDir = "";
+ if (env.containsKey(AppleConfiguration.XCODE_VERSION_ENV_NAME)) {
+ developerDir = getDeveloperDir(env.get(AppleConfiguration.XCODE_VERSION_ENV_NAME));
+ newEnvBuilder.put("DEVELOPER_DIR", developerDir);
+ }
if (env.containsKey(AppleConfiguration.APPLE_SDK_VERSION_ENV_NAME)) {
// The Apple platform is needed to select the appropriate SDK.
if (!env.containsKey(AppleConfiguration.APPLE_SDK_PLATFORM_ENV_NAME)) {
@@ -166,19 +176,24 @@ public class StandaloneSpawnStrategy implements SpawnActionContext {
}
String iosSdkVersion = env.get(AppleConfiguration.APPLE_SDK_VERSION_ENV_NAME);
String appleSdkPlatform = env.get(AppleConfiguration.APPLE_SDK_PLATFORM_ENV_NAME);
- // TODO(bazel-team): Determine and set DEVELOPER_DIR.
- addSdkRootEnv(newEnvBuilder, iosSdkVersion, appleSdkPlatform);
+ newEnvBuilder.put("SDKROOT", getSdkRootEnv(developerDir, iosSdkVersion, appleSdkPlatform));
}
return newEnvBuilder.build();
}
- private void addSdkRootEnv(
- ImmutableMap.Builder<String, String> envBuilder, String iosSdkVersion,
- String appleSdkPlatform) throws UserExecException {
- // Sanity check, also presents a less cryptic error message.
+ private String getDeveloperDir(String xcodeVersion) throws UserExecException {
+ if (OS.getCurrent() != OS.DARWIN) {
+ throw new UserExecException(
+ "Cannot locate xcode developer directory on non-darwin operating system");
+ }
+ return AppleHostInfo.getDeveloperDir(execRoot, DottedVersion.fromString(xcodeVersion));
+ }
+
+ private String getSdkRootEnv(String developerDir,
+ String iosSdkVersion, String appleSdkPlatform) throws UserExecException {
if (OS.getCurrent() != OS.DARWIN) {
throw new UserExecException("Cannot locate iOS SDK on non-darwin operating system");
}
- envBuilder.put("SDKROOT", AppleHostInfo.getSdkRoot(execRoot, iosSdkVersion, appleSdkPlatform));
+ return AppleHostInfo.getSdkRoot(execRoot, developerDir, iosSdkVersion, appleSdkPlatform);
}
}