aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeConfig.java
diff options
context:
space:
mode:
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.java24
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");