Skip to content

Commit dd6393a

Browse files
katrecopybara-github
authored andcommitted
Add --incompatible_remove_exec_tools to control whether genrule has an exec_tools attribute.
Part of #19132. PiperOrigin-RevId: 552496824 Change-Id: I2a09c390da89a44506afae55319aa393ed292c62
1 parent ff83807 commit dd6393a

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

src/main/java/com/google/devtools/build/lib/bazel/BazelConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,20 @@ public static class Options extends FragmentOptions {
4040
help = "If enabled, visibility checking also applies to toolchain implementations.")
4141
public boolean checkVisibilityForToolchains;
4242

43+
@Option(
44+
name = "incompatible_remove_exec_tools",
45+
defaultValue = "false",
46+
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
47+
effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
48+
metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE},
49+
help = "If enabled, use of genrule's exec_tools attribute will cause an error..")
50+
public boolean removeExecTools;
51+
4352
@Override
4453
public FragmentOptions getExec() {
4554
Options exec = (Options) getDefault();
4655
exec.checkVisibilityForToolchains = checkVisibilityForToolchains;
56+
exec.removeExecTools = removeExecTools;
4757

4858
return exec;
4959
}

src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ java_library(
1818
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
1919
"//src/main/java/com/google/devtools/build/lib/analysis:config/execution_transition_factory",
2020
"//src/main/java/com/google/devtools/build/lib/analysis:rule_definition_environment",
21+
"//src/main/java/com/google/devtools/build/lib/bazel:bazel_configuration",
2122
"//src/main/java/com/google/devtools/build/lib/packages",
2223
"//src/main/java/com/google/devtools/build/lib/rules/genrule",
2324
"//src/main/java/com/google/devtools/build/lib/util:filetype",

src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRule.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
import com.google.devtools.build.lib.analysis.CommandHelper;
1818
import com.google.devtools.build.lib.analysis.RuleContext;
19+
import com.google.devtools.build.lib.bazel.BazelConfiguration;
20+
import com.google.devtools.build.lib.packages.BuildType;
1921
import com.google.devtools.build.lib.packages.Type;
2022
import com.google.devtools.build.lib.rules.genrule.GenRuleBase;
2123

@@ -36,9 +38,18 @@ protected boolean isStampingEnabled(RuleContext ruleContext) {
3638
// projects are migrated.
3739
@Override
3840
protected CommandHelper.Builder commandHelperBuilder(RuleContext ruleContext) {
41+
BazelConfiguration.Options bazelOptions =
42+
ruleContext.getConfiguration().getOptions().get(BazelConfiguration.Options.class);
43+
44+
if (bazelOptions.removeExecTools
45+
&& ruleContext.attributes().has("exec_tools", BuildType.LABEL_LIST)
46+
&& !ruleContext.attributes().get("exec_tools", BuildType.LABEL_LIST).isEmpty()) {
47+
ruleContext.attributeError(
48+
"exec_tools", "genrule.exec_tools has been removed, use tools instead");
49+
}
50+
3951
return CommandHelper.builder(ruleContext)
4052
.addToolDependencies("tools")
41-
// TODO(https://github.com/bazelbuild/bazel/issues/19132): Add an actual incompatible flag.
4253
.addToolDependencies("exec_tools")
4354
.addToolDependencies("toolchains");
4455
}

0 commit comments

Comments
 (0)