aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-04-07 22:48:19 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-04-08 14:34:44 +0000
commit3ab018d6d8f49eb4eee7cbefee094fb68c3051a3 (patch)
tree6751b2c9887372c17fe32ca10fcf067ac6d67337 /src/main/java/com/google/devtools/build/lib/rules/apple
parentd985242f8b2048de1ecbbe716aafd055c66068e2 (diff)
ios_device attribute "xcode", which takes an "xcode_version" target to select a specific xcode.
RELNOTES: ios_device attribute "xcode", for declaring a specific xcode to use when selecting iOS simulators. -- MOS_MIGRATED_REVID=119317344
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersion.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java3
3 files changed, 23 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
index 41fe05d8df..562a82229e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
@@ -41,6 +41,11 @@ import javax.annotation.Nullable;
@SkylarkModule(name = "apple", doc = "A configuration fragment for Apple platforms")
@Immutable
public class AppleConfiguration extends BuildConfiguration.Fragment {
+ /**
+ * Environment variable name for the xcode version. The value of this environment variable should
+ * be set to the version (for example, "7.2") of xcode to use when invoking part of the apple
+ * toolkit in action execution.
+ **/
public static final String XCODE_VERSION_ENV_NAME = "XCODE_VERSION_OVERRIDE";
/**
* Environment variable name for the apple SDK version. If unset, uses the system default of the
@@ -158,11 +163,20 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
)
public Map<String, String> getAppleHostSystemEnv() {
Optional<DottedVersion> xcodeVersion = getXcodeVersion();
- ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
if (xcodeVersion.isPresent()) {
- builder.put(AppleConfiguration.XCODE_VERSION_ENV_NAME, xcodeVersion.get().toString());
+ return getXcodeVersionEnv(xcodeVersion.get());
+ } else {
+ return ImmutableMap.of();
}
- return builder.build();
+ }
+
+ /**
+ * Returns a map of environment variables that should be propagated for actions that require
+ * a version of xcode to be explicitly declared. Keys are variable names and values are their
+ * corresponding values.
+ */
+ public Map<String, String> getXcodeVersionEnv(DottedVersion xcodeVersion) {
+ return ImmutableMap.of(AppleConfiguration.XCODE_VERSION_ENV_NAME, xcodeVersion.toString());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersion.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersion.java
index f7e321f285..b630f5de40 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersion.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersion.java
@@ -27,8 +27,12 @@ public class XcodeVersion implements RuleConfiguredTargetFactory {
@Override
public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException {
+ XcodeVersionRuleData ruleData =
+ new XcodeVersionRuleData(ruleContext.getLabel(), ruleContext.getRule());
+
return new RuleConfiguredTargetBuilder(ruleContext)
.addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
+ .addProvider(XcodeVersionProperties.class, ruleData.getXcodeVersionProperties())
.build();
}
} \ No newline at end of file
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
index 5da51a5b41..572574db1d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
@@ -17,13 +17,14 @@ package com.google.devtools.build.lib.rules.apple;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
+import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import javax.annotation.Nullable;
/**
* A tuple containing information about a version of xcode and its properties.
*/
-public class XcodeVersionProperties {
+public class XcodeVersionProperties implements TransitiveInfoProvider {
@VisibleForTesting public static final String DEFAULT_IOS_SDK_VERSION = "8.4";
@VisibleForTesting public static final String DEFAULT_WATCHOS_SDK_VERSION = "2.0";
@VisibleForTesting public static final String DEFAULT_MACOSX_SDK_VERSION = "10.10";