diff options
author | 2016-04-07 22:48:19 +0000 | |
---|---|---|
committer | 2016-04-08 14:34:44 +0000 | |
commit | 3ab018d6d8f49eb4eee7cbefee094fb68c3051a3 (patch) | |
tree | 6751b2c9887372c17fe32ca10fcf067ac6d67337 /src/main/java/com/google/devtools/build/lib/rules/apple | |
parent | d985242f8b2048de1ecbbe716aafd055c66068e2 (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')
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"; |