Implement custom executable API.
Design is https://github.com/bazelbuild/bazel/issues/3826, specifically
https://github.com/bazelbuild/bazel/issues/3826#issuecomment-336220897.
Fixes #3826.
RELNOTES: ctx.outputs.executable is deprecated. Use DefaultInfo(executable = ...) instead.
PiperOrigin-RevId: 173132066
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index a031f2c..7dd8acb 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -462,7 +462,7 @@
private boolean publicByDefault = false;
private boolean binaryOutput = true;
private boolean workspaceOnly = false;
- private boolean outputsDefaultExecutable = false;
+ private boolean isExecutableSkylark = false;
private boolean isConfigMatcher = false;
private ImplicitOutputsFunction implicitOutputsFunction = ImplicitOutputsFunction.NONE;
private RuleTransitionFactory transitionFactory;
@@ -582,7 +582,7 @@
publicByDefault,
binaryOutput,
workspaceOnly,
- outputsDefaultExecutable,
+ isExecutableSkylark,
implicitOutputsFunction,
isConfigMatcher,
transitionFactory,
@@ -929,8 +929,8 @@
* This rule class outputs a default executable for every rule with the same name as
* the rules's. Only works for Skylark.
*/
- public <TYPE> Builder setOutputsDefaultExecutable() {
- this.outputsDefaultExecutable = true;
+ public <TYPE> Builder setExecutableSkylark() {
+ this.isExecutableSkylark = true;
return this;
}
@@ -1042,7 +1042,7 @@
private final boolean publicByDefault;
private final boolean binaryOutput;
private final boolean workspaceOnly;
- private final boolean outputsDefaultExecutable;
+ private final boolean isExecutableSkylark;
private final boolean isConfigMatcher;
/**
@@ -1164,7 +1164,7 @@
boolean publicByDefault,
boolean binaryOutput,
boolean workspaceOnly,
- boolean outputsDefaultExecutable,
+ boolean isExecutableSkylark,
ImplicitOutputsFunction implicitOutputsFunction,
boolean isConfigMatcher,
RuleTransitionFactory transitionFactory,
@@ -1207,7 +1207,7 @@
validateNoClashInPublicNames(attributes);
this.attributes = ImmutableList.copyOf(attributes);
this.workspaceOnly = workspaceOnly;
- this.outputsDefaultExecutable = outputsDefaultExecutable;
+ this.isExecutableSkylark = isExecutableSkylark;
this.configurationFragmentPolicy = configurationFragmentPolicy;
this.supportsConstraintChecking = supportsConstraintChecking;
this.requiredToolchains = ImmutableSet.copyOf(requiredToolchains);
@@ -2021,8 +2021,8 @@
/**
* Returns true if this rule class outputs a default executable for every rule.
*/
- public boolean outputsDefaultExecutable() {
- return outputsDefaultExecutable;
+ public boolean isExecutableSkylark() {
+ return isExecutableSkylark;
}
public ImmutableSet<Label> getRequiredToolchains() {