aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2016-02-10 15:57:58 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-02-11 11:48:27 +0000
commit33ec191dba103474d95649ab3849cc37f00947f2 (patch)
tree4abd7ceb380eaec3497f29cc612381a357ead2c6 /src/main/java/com/google/devtools/build
parent79adf59e2973754c8c0415fcab45cd58c7c34697 (diff)
This allows the default value computation for latebound attributes to consider the values of configurable attributes. This is most directly useful for user-definable Skylark defaults, which have full access to the values of all non-latebound attributes. Without this change, this kind of scenario crashes Bazel. For example: ------------------ select_rules.bzl: ------------------ def _impl(ctx): ctx.file_action( output=ctx.outputs.out_file, content=ctx.attr.string_value, ) return struct() # Bug does not manifest without using this as a default. def _derived_value(attrs, _): return Label("//some:dep") selector_rule = rule( implementation=_impl, attrs={ "string_value": attr.string(default=""), "out_file": attr.output(), "_derived": attr.label(default=_derived_value), }, output_to_genfiles=True, ) def selector_macro(name, out_file="", string_value=""): # This will fail with selectors. selector_rule( name="%s_skylark" % name, string_value=string_value, out_file=out_file + ".skylark", ) # This does not. native.genrule( name="%s_genrule" % name, cmd="echo '" + string_value + "' > $@", outs=[out_file + ".genrule"], ) native.filegroup( name=name, srcs=[":%s_genrule" % name, "%s_skylark" % name], ) ------------------ BUILD.bzl: ------------------ config_setting( name = "selector", values = {"compilation_mode": "opt"}, ) selector_macro( name = "this_rule", string_value = """soup? """ + select({ ":selector": "no, thank you.", "//conditions:default": "yes, please!!", }), out_file = "this_rule.txt", ) -- MOS_MIGRATED_REVID=114326474
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java3
11 files changed, 64 insertions, 34 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index 5b9347cf16..3f277d18c0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -81,7 +81,8 @@ public class BaseRuleClasses {
static final LateBoundLabelList<BuildConfiguration> ACTION_LISTENER =
new LateBoundLabelList<BuildConfiguration>() {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
// action_listeners are special rules; they tell the build system to add extra_actions to
// existing rules. As such they need an edge to every ConfiguredTarget with the limitation
// that they only run on the target configuration and should not operate on action_listeners
@@ -93,7 +94,8 @@ public class BaseRuleClasses {
private static final LateBoundLabelList<BuildConfiguration> COVERAGE_SUPPORT =
new LateBoundLabelList<BuildConfiguration>(ImmutableList.of(COVERAGE_SUPPORT_LABEL)) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.isCodeCoverageEnabled()
? ImmutableList.copyOf(configuration.getCoverageLabels())
: ImmutableList.<Label>of();
@@ -103,7 +105,8 @@ public class BaseRuleClasses {
private static final LateBoundLabelList<BuildConfiguration> GCOV =
new LateBoundLabelList<BuildConfiguration>(ImmutableList.of(COVERAGE_SUPPORT_LABEL)) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.isCodeCoverageEnabled()
? ImmutableList.copyOf(configuration.getGcovLabels())
: ImmutableList.<Label>of();
@@ -113,7 +116,8 @@ public class BaseRuleClasses {
private static final LateBoundLabelList<BuildConfiguration> COVERAGE_REPORT_GENERATOR =
new LateBoundLabelList<BuildConfiguration>(ImmutableList.of(COVERAGE_SUPPORT_LABEL)) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.isCodeCoverageEnabled()
? ImmutableList.copyOf(configuration.getCoverageReportGeneratorLabels())
: ImmutableList.<Label>of();
@@ -126,7 +130,8 @@ public class BaseRuleClasses {
private static final LateBoundLabel<BuildConfiguration> RUN_UNDER =
new LateBoundLabel<BuildConfiguration>() {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
RunUnder runUnder = configuration.getRunUnder();
return runUnder == null ? null : runUnder.getLabel();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 3021159ffd..b694cc631c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -380,7 +380,7 @@ public abstract class DependencyResolver {
// TODO(bazel-team): We should check if the implementation tries to access an undeclared
// fragment.
- Object actualValue = lateBoundDefault.getDefault(rule, actualConfig);
+ Object actualValue = lateBoundDefault.getDefault(rule, attributeMap, actualConfig);
if (EvalUtils.isNullOrNone(actualValue)) {
continue;
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
index 8b5171c2a6..748e1f73f0 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java
@@ -159,7 +159,8 @@ public class BazelCppRuleClasses {
public static final LateBoundLabel<BuildConfiguration> CC_TOOLCHAIN =
new LateBoundLabel<BuildConfiguration>(CROSSTOOL_LABEL) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(CppConfiguration.class).getCcToolchainRuleLabel();
}
};
@@ -167,7 +168,8 @@ public class BazelCppRuleClasses {
public static final LateBoundLabel<BuildConfiguration> DEFAULT_MALLOC =
new LateBoundLabel<BuildConfiguration>() {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(CppConfiguration.class).customMalloc();
}
};
@@ -175,7 +177,8 @@ public class BazelCppRuleClasses {
public static final LateBoundLabel<BuildConfiguration> STL =
new LateBoundLabel<BuildConfiguration>() {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return getStl(rule, configuration);
}
};
@@ -186,7 +189,7 @@ public class BazelCppRuleClasses {
public static final LateBoundLabel<BuildConfiguration> LIPO_CONTEXT_COLLECTOR =
new LateBoundLabel<BuildConfiguration>() {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
// This attribute connects a target to the LIPO context target configured with the
// lipo input collector configuration.
CppConfiguration cppConfiguration = configuration.getFragment(CppConfiguration.class);
@@ -674,7 +677,7 @@ public class BazelCppRuleClasses {
private static final LateBoundLabel<BuildConfiguration> LIPO_CONTEXT =
new LateBoundLabel<BuildConfiguration>() {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
Label result = configuration.getFragment(CppConfiguration.class).getLipoContextLabel();
return (rule == null || rule.getLabel().equals(result)) ? null : result;
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index daf61066b2..cd808c55d4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -922,8 +922,13 @@ public final class Attribute implements Comparable<Attribute> {
* The actual value for the attribute for the analysis phase, which depends on the build
* configuration. Note that configurations transitions are applied after the late-bound
* attribute was evaluated.
+ *
+ * @param rule the rule being evaluated
+ * @param attributes interface for retrieving the values of the rule's other attributes
+ * @param o the configuration to evaluate with
*/
- Object getDefault(Rule rule, T o) throws EvalException, InterruptedException;
+ Object getDefault(Rule rule, AttributeMap attributes, T o)
+ throws EvalException, InterruptedException;
}
/**
@@ -976,7 +981,7 @@ public final class Attribute implements Comparable<Attribute> {
}
@Override
- public abstract Label getDefault(Rule rule, T configuration);
+ public abstract Label getDefault(Rule rule, AttributeMap attributes, T configuration);
}
/**
@@ -1010,7 +1015,7 @@ public final class Attribute implements Comparable<Attribute> {
}
@Override
- public abstract List<Label> getDefault(Rule rule, T configuration);
+ public abstract List<Label> getDefault(Rule rule, AttributeMap attributes, T configuration);
}
/**
@@ -1040,11 +1045,9 @@ public final class Attribute implements Comparable<Attribute> {
}
@Override
- public Object getDefault(Rule rule, Object o) throws EvalException, InterruptedException {
+ public Object getDefault(Rule rule, AttributeMap attributes, Object o)
+ throws EvalException, InterruptedException {
Map<String, Object> attrValues = new HashMap<>();
- // TODO(bazel-team): support configurable attributes here. RawAttributeMapper will throw
- // an exception on any instance of configurable attributes.
- AttributeMap attributes = RawAttributeMapper.of(rule);
for (Attribute attr : rule.getAttributes()) {
if (!attr.isLateBound()) {
Object value = attributes.get(attr.getName(), attr.getType());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
index 3c38f3ff98..377652bf41 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
@@ -116,7 +116,8 @@ public class SkylarkRuleClassFunctions {
private static final LateBoundLabel<BuildConfiguration> RUN_UNDER =
new LateBoundLabel<BuildConfiguration>() {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
RunUnder runUnder = configuration.getRunUnder();
return runUnder == null ? null : runUnder.getLabel();
}
@@ -128,7 +129,8 @@ public class SkylarkRuleClassFunctions {
private static final LateBoundLabelList<BuildConfiguration> GCOV =
new LateBoundLabelList<BuildConfiguration>(ImmutableList.of(COVERAGE_SUPPORT_LABEL)) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.isCodeCoverageEnabled()
? ImmutableList.copyOf(configuration.getGcovLabels())
: ImmutableList.<Label>of();
@@ -138,7 +140,8 @@ public class SkylarkRuleClassFunctions {
private static final LateBoundLabelList<BuildConfiguration> COVERAGE_REPORT_GENERATOR =
new LateBoundLabelList<BuildConfiguration>(ImmutableList.of(COVERAGE_SUPPORT_LABEL)) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.isCodeCoverageEnabled()
? ImmutableList.copyOf(configuration.getCoverageReportGeneratorLabels())
: ImmutableList.<Label>of();
@@ -148,7 +151,8 @@ public class SkylarkRuleClassFunctions {
private static final LateBoundLabelList<BuildConfiguration> COVERAGE_SUPPORT =
new LateBoundLabelList<BuildConfiguration>(ImmutableList.of(COVERAGE_SUPPORT_LABEL)) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.isCodeCoverageEnabled()
? ImmutableList.copyOf(configuration.getCoverageLabels())
: ImmutableList.<Label>of();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index 18f0b5b622..49ed57ad30 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -146,7 +146,8 @@ public final class AndroidRuleClasses {
public static final LateBoundLabel<BuildConfiguration> ANDROID_SDK =
new LateBoundLabel<BuildConfiguration>(DEFAULT_ANDROID_SDK, AndroidConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(AndroidConfiguration.class).getSdk();
}
};
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java
index 1c4b6bf509..31d223b66d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
+import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
@@ -174,7 +175,8 @@ public class AppleToolchain {
new LateBoundLabel<BuildConfiguration>(
AppleCommandLineOptions.DEFAULT_XCODE_VERSION_CONFIG_LABEL, AppleConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(AppleConfiguration.class).getXcodeConfigLabel();
}
};
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
index d8892df7d5..8b7d64a35e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
+import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
@@ -38,7 +39,8 @@ public final class CcToolchainRule implements RuleDefinition {
private static final LateBoundLabel<BuildConfiguration> LIBC_LINK =
new LateBoundLabel<BuildConfiguration>(CppConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(CppConfiguration.class).getLibcLabel();
}
};
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index 86bd7d87dd..911c1011c0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -33,6 +33,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabelList;
+import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.rules.java.DeployArchiveBuilder.Compression;
@@ -88,7 +89,8 @@ public interface JavaSemantics {
LateBoundLabel<BuildConfiguration> JAVA_TOOLCHAIN =
new LateBoundLabel<BuildConfiguration>(JAVA_TOOLCHAIN_LABEL, JavaConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(JavaConfiguration.class).getToolchainLabel();
}
};
@@ -145,7 +147,8 @@ public interface JavaSemantics {
LateBoundLabel<BuildConfiguration> JVM =
new LateBoundLabel<BuildConfiguration>(JavaImplicitAttributes.JDK_LABEL, Jvm.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(Jvm.class).getJvmLabel();
}
};
@@ -161,7 +164,8 @@ public interface JavaSemantics {
}
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(Jvm.class).getJvmLabel();
}
};
@@ -173,7 +177,8 @@ public interface JavaSemantics {
LateBoundLabel<BuildConfiguration> JAVA_LAUNCHER =
new LateBoundLabel<BuildConfiguration>(JavaConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(JavaConfiguration.class).getJavaLauncherLabel();
}
};
@@ -181,7 +186,8 @@ public interface JavaSemantics {
LateBoundLabelList<BuildConfiguration> JAVA_PLUGINS =
new LateBoundLabelList<BuildConfiguration>() {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return ImmutableList.copyOf(configuration.getPlugins());
}
};
@@ -192,7 +198,8 @@ public interface JavaSemantics {
LateBoundLabel<BuildConfiguration> PROGUARD =
new LateBoundLabel<BuildConfiguration>(JavaConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return configuration.getFragment(JavaConfiguration.class).getProguardBinary();
}
};
@@ -200,7 +207,8 @@ public interface JavaSemantics {
LateBoundLabelList<BuildConfiguration> EXTRA_PROGUARD_SPECS =
new LateBoundLabelList<BuildConfiguration>() {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
return ImmutableList.copyOf(
configuration.getFragment(JavaConfiguration.class).getExtraProguardSpecs());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
index 84a9d43009..8f3ed37fc5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
@@ -148,7 +148,8 @@ public class IosTestRule implements RuleDefinition {
.value(
new LateBoundLabelList<BuildConfiguration>(gcov) {
@Override
- public List<Label> getDefault(Rule rule, BuildConfiguration configuration) {
+ public List<Label> getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
if (!configuration.isCodeCoverageEnabled()) {
return ImmutableList.of();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index 5dca7d87fb..6d9a07b300 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -865,7 +865,8 @@ public class ObjcRuleClasses {
.value(
new LateBoundLabel<BuildConfiguration>(ObjcConfiguration.class) {
@Override
- public Label getDefault(Rule rule, BuildConfiguration configuration) {
+ public Label getDefault(Rule rule, AttributeMap attributes,
+ BuildConfiguration configuration) {
AppleConfiguration appleConfiguration =
configuration.getFragment(AppleConfiguration.class);
if (appleConfiguration.getBundlingPlatform() != Platform.IOS_DEVICE) {