Skip to content

Commit 2e3903c

Browse files
comiuscopybara-github
authored andcommitted
Make cc_toolchain_suite a no-op
Remove cc_toolchain_suite from Bazel's unit tests. The rule cc_toolchain_suite doesn't participate in toolchain resolution anymore. It may be used in cc_library.toolchains or genrule.toolchains, where a simple replacement with //tools/cpp:current_cc_toolchain works. Removing the rule is an incompatible change (because transitions depend on the label value). That will require a cleanup. That's why making it a no-op first. RELNOTES[INC]: cc_toolchain_suite is a no op rule (#7260). PiperOrigin-RevId: 588364153 Change-Id: I3502554628c442ddf38b52cb949bdaa128e641e9
1 parent e116bae commit 2e3903c

File tree

11 files changed

+38
-417
lines changed

11 files changed

+38
-417
lines changed

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcTestRule;
2525
import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppRuleClasses;
2626
import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppRuleClasses.CcToolchainRequiringRule;
27-
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
2827
import com.google.devtools.build.lib.rules.core.CoreRules;
2928
import com.google.devtools.build.lib.rules.cpp.CcImportRule;
3029
import com.google.devtools.build.lib.rules.cpp.CcInfo;
@@ -66,11 +65,6 @@ private CcRules() {
6665
@Override
6766
public void init(ConfiguredRuleClassProvider.Builder builder) {
6867
BazelCcModule bazelCcModule = new BazelCcModule();
69-
// TODO(gnish): This is only required for cc_toolchain_suite rule,
70-
// because it does not have AppleConfiguration fragment.
71-
// After legacy C++ toolchain resolution is removed the rule is going away
72-
// and we should delete this.
73-
builder.addConfigurationFragment(AppleConfiguration.class);
7468
builder.addConfigurationFragment(CppConfiguration.class);
7569
builder.addBzlToplevel("CcSharedLibraryInfo", Starlark.NONE);
7670
builder.addBzlToplevel("CcSharedLibraryHintInfo", Starlark.NONE);

src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,12 @@ private static String createBuildFile(
8888
String ruleName, String defaultCrosstool, List<CrosstoolStlPair> crosstools) {
8989

9090
String buildFileTemplate = getTemplate("android_ndk_build_file_template.txt");
91-
String ccToolchainSuiteTemplate = getTemplate("android_ndk_cc_toolchain_suite_template.txt");
9291
String ccToolchainTemplate = getTemplate("android_ndk_cc_toolchain_template.txt");
9392
String stlFilegroupTemplate = getTemplate("android_ndk_stl_filegroup_template.txt");
9493
String vulkanValidationLayersTemplate =
9594
getTemplate("android_ndk_vulkan_validation_layers_template.txt");
9695
String miscLibrariesTemplate = getTemplate("android_ndk_misc_libraries_template.txt");
9796

98-
StringBuilder ccToolchainSuites = new StringBuilder();
9997
StringBuilder ccToolchainRules = new StringBuilder();
10098
StringBuilder stlFilegroups = new StringBuilder();
10199
StringBuilder vulkanValidationLayers = new StringBuilder();
@@ -116,14 +114,6 @@ private static String createBuildFile(
116114
toolchain.getToolchainIdentifier()));
117115
}
118116

119-
String toolchainName = createToolchainName(crosstoolStlPair.stlImpl.getName());
120-
121-
ccToolchainSuites.append(
122-
ccToolchainSuiteTemplate
123-
.replace("%toolchainName%", toolchainName)
124-
.replace("%toolchainMap%", toolchainMap.toString().trim())
125-
.replace("%crosstoolReleaseProto%", crosstool.toString()));
126-
127117
// Create the cc_toolchain rules
128118
for (CToolchain toolchain : crosstool.getToolchainList()) {
129119
ccToolchainRules.append(
@@ -153,7 +143,6 @@ private static String createBuildFile(
153143
return buildFileTemplate
154144
.replace("%ruleName%", ruleName)
155145
.replace("%defaultCrosstool%", "//:toolchain-" + defaultCrosstool)
156-
.replace("%ccToolchainSuites%", ccToolchainSuites)
157146
.replace("%ccToolchainRules%", ccToolchainRules)
158147
.replace("%stlFilegroups%", stlFilegroups)
159148
.replace("%vulkanValidationLayers%", vulkanValidationLayers)

src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_build_file_template.txt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,6 @@ alias(
3939
actual = "%defaultCrosstool%",
4040
)
4141

42-
################################################################
43-
# cc toolchain suite rules (one for each STL in the NDK)
44-
################################################################
45-
46-
%ccToolchainSuites%
47-
4842
################################################################
4943
# cc toolchain rules
5044
################################################################

src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_cc_toolchain_suite_template.txt

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -189,16 +189,6 @@ public List<Pair<Artifact, Label>> getHeaders() {
189189
return getHeaders(ruleContext);
190190
}
191191

192-
public static void reportInvalidOptions(
193-
RuleContext ruleContext, CppConfiguration cppConfiguration, CcToolchainProvider ccToolchain) {
194-
if (cppConfiguration.getLibcTopLabel() != null && ccToolchain.getDefaultSysroot() == null) {
195-
ruleContext.ruleError(
196-
"The selected toolchain "
197-
+ ccToolchain.getToolchainIdentifier()
198-
+ " does not support setting --grte_top (it doesn't specify builtin_sysroot).");
199-
}
200-
}
201-
202192
/**
203193
* Supply CC_FLAGS Make variable value computed from FeatureConfiguration. Appends them to
204194
* original CC_FLAGS, so FeatureConfiguration can override legacy values.

src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java

Lines changed: 0 additions & 158 deletions
This file was deleted.

src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuiteRule.java

Lines changed: 23 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,19 @@
1414
package com.google.devtools.build.lib.rules.cpp;
1515

1616
import static com.google.devtools.build.lib.packages.Attribute.attr;
17-
import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL;
1817

19-
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
18+
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
19+
import com.google.devtools.build.lib.analysis.BaseRuleClasses.NativeBuildRule;
20+
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
21+
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
22+
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
23+
import com.google.devtools.build.lib.analysis.RuleContext;
2024
import com.google.devtools.build.lib.analysis.RuleDefinition;
2125
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
26+
import com.google.devtools.build.lib.analysis.Runfiles;
27+
import com.google.devtools.build.lib.analysis.RunfilesProvider;
2228
import com.google.devtools.build.lib.packages.BuildType;
2329
import com.google.devtools.build.lib.packages.RuleClass;
24-
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
2530
import com.google.devtools.build.lib.util.FileTypeSet;
2631

2732
/**
@@ -32,66 +37,37 @@ public final class CcToolchainSuiteRule implements RuleDefinition {
3237
@Override
3338
public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) {
3439
return builder
35-
.requiresConfigurationFragments(CppConfiguration.class, AppleConfiguration.class)
36-
/* <!-- #BLAZE_RULE(cc_toolchain_suite).ATTRIBUTE(toolchains) -->
37-
A map from "&lt;cpu&gt;" or "&lt;cpu&gt;|&lt;compiler&gt;" strings to
38-
a <code>cc_toolchain</code> label. "&lt;cpu&gt;" will be used when only <code>--cpu</code>
39-
is passed to Bazel, and "&lt;cpu&gt;|&lt;compiler&gt;" will be used when both
40-
<code>--cpu</code> and <code>--compiler</code> are passed to Bazel. Example:
41-
42-
<p>
43-
<pre>
44-
cc_toolchain_suite(
45-
name = "toolchain",
46-
toolchains = {
47-
"piii|gcc": ":my_cc_toolchain_for_piii_using_gcc",
48-
"piii": ":my_cc_toolchain_for_piii_using_default_compiler",
49-
},
50-
)
51-
</pre>
52-
</p>
53-
<!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
5440
.add(
5541
attr("toolchains", BuildType.LABEL_DICT_UNARY)
5642
.mandatory()
5743
.allowedFileTypes(FileTypeSet.NO_FILE)
5844
.nonconfigurable("Used during configuration creation"))
59-
.add(
60-
attr(CcToolchainRule.CC_TOOLCHAIN_TYPE_ATTRIBUTE_NAME, NODEP_LABEL)
61-
.value(CppRuleClasses.ccToolchainTypeAttribute(environment)))
6245
.build();
6346
}
6447

6548
@Override
6649
public Metadata getMetadata() {
67-
return RuleDefinition.Metadata.builder()
50+
return Metadata.builder()
6851
.name("cc_toolchain_suite")
69-
.ancestors(BaseRuleClasses.NativeBuildRule.class)
52+
.ancestors(NativeBuildRule.class)
7053
.factoryClass(CcToolchainSuite.class)
7154
.build();
7255
}
56+
57+
/** A noop rule factory, just used for compatibility. */
58+
public static final class CcToolchainSuite implements RuleConfiguredTargetFactory {
59+
@Override
60+
public ConfiguredTarget create(RuleContext ruleContext)
61+
throws InterruptedException, ActionConflictException {
62+
ruleContext.ruleWarning("Rule is a no-op.");
63+
return new RuleConfiguredTargetBuilder(ruleContext)
64+
.addProvider(RunfilesProvider.simple(Runfiles.EMPTY))
65+
.build();
66+
}
67+
}
7368
}
7469

7570
/*<!-- #BLAZE_RULE (NAME = cc_toolchain_suite, TYPE = OTHER, FAMILY = C / C++) -->
7671
77-
<p>Represents a collections of C++ toolchains.</p>
78-
79-
<p>
80-
This rule is responsible for:
81-
82-
<ul>
83-
<li>Collecting all relevant C++ toolchains.</li>
84-
<li>
85-
Selecting one toolchain depending on <code>--cpu</code> and <code>--compiler</code> options
86-
passed to Bazel.
87-
</li>
88-
</ul>
89-
</p>
90-
91-
<p>
92-
See also this
93-
<a href="https://bazel.build/docs/cc-toolchain-config-reference">
94-
page
95-
</a> for elaborate C++ toolchain configuration and toolchain selection documentation.
96-
</p>
72+
<p>Deprecated: the rule is a no-op and will be removed.
9773
<!-- #END_BLAZE_RULE -->*/

0 commit comments

Comments
 (0)