diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java index d2b5859ef9..fed295e6fc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.apple; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -171,7 +172,7 @@ public class XcodeConfig implements RuleConfiguredTargetFactory { */ static XcodeVersionProperties resolveXcodeVersion( boolean requireDefinedVersions, - DottedVersion xcodeVersionOverrideFlag, + String xcodeVersionOverrideFlag, Iterable<XcodeVersionRuleData> xcodeVersions, @Nullable XcodeVersionRuleData defaultVersion) throws XcodeConfigException { @@ -180,11 +181,16 @@ public class XcodeConfig implements RuleConfiguredTargetFactory { if (xcodeVersion != null) { return xcodeVersion.getXcodeVersionProperties(); - } else if (xcodeVersionOverrideFlag != null) { - return new XcodeVersionProperties(xcodeVersionOverrideFlag); - } else { - return XcodeVersionProperties.unknownXcodeVersionProperties(); } + // TODO(b/64576392): Remove this fallback logic. An xcode_version target should be explicitly + // matched in all cases where --xcode_version is specified. + try { + DottedVersion dottedVersion = DottedVersion.fromString(xcodeVersionOverrideFlag); + return new XcodeVersionProperties(dottedVersion); + } catch (IllegalArgumentException e) { + // The --xcode_version flag is not a valid DottedVersion, so there is nothing to go on. + } + return XcodeVersionProperties.unknownXcodeVersionProperties(); } /** @@ -200,16 +206,16 @@ public class XcodeConfig implements RuleConfiguredTargetFactory { boolean requireDefinedVersions, Iterable<XcodeVersionRuleData> xcodeVersionRules, @Nullable XcodeVersionRuleData defaultVersion, - DottedVersion versionOverrideFlag) + String versionOverrideFlag) throws XcodeConfigException { Map<String, XcodeVersionRuleData> aliasesToVersionMap = aliasesToVersionMap(xcodeVersionRules); - if (versionOverrideFlag != null) { + if (!Strings.isNullOrEmpty(versionOverrideFlag)) { // The version override flag is not necessarily an actual version - it may be a version // alias. XcodeVersionRuleData explicitVersion = - aliasesToVersionMap.get(versionOverrideFlag.toString()); + aliasesToVersionMap.get(versionOverrideFlag); if (explicitVersion != null) { return explicitVersion; } @@ -217,7 +223,7 @@ public class XcodeConfig implements RuleConfiguredTargetFactory { // No override specified. Use default. return defaultVersion; } - + if (requireDefinedVersions) { throw new XcodeConfigException( "xcode version config required an explicitly defined version, but none was available"); |