Remove genrule code that uses CC flags, and also the flag --incompatible_disable_genrule_cc_toolchain_dependency.
RELNOTES: Removes the --incompatible_disable_genrule_cc_toolchain_dependency flag.
PiperOrigin-RevId: 243840861
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java
index ebe7e94..8d81d55 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java
@@ -15,15 +15,12 @@
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
-import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL;
import static com.google.devtools.build.lib.syntax.Type.BOOLEAN;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.packages.RuleClass;
-import com.google.devtools.build.lib.rules.cpp.CcToolchain;
-import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.genrule.GenRuleBaseRule;
/**
@@ -49,13 +46,6 @@
// TODO(bazel-team): stamping doesn't seem to work. Fix it or remove attribute.
.add(attr("stamp", BOOLEAN).value(false))
- .add(
- attr(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, LABEL)
- .mandatoryProviders(CcToolchainProvider.PROVIDER.id())
- .value(GenRuleBaseRule.ccToolchainAttribute(env)))
- .add(
- attr(CcToolchain.CC_TOOLCHAIN_TYPE_ATTRIBUTE_NAME, NODEP_LABEL)
- .value(GenRuleBaseRule.ccToolchainTypeAttribute(env)))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index a19f37e..f184592 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -984,9 +984,8 @@
FeatureConfiguration featureConfiguration = null;
CppConfiguration cppConfiguration;
if (toolchainProvider.requireCtxInConfigureFeatures()) {
- // When this is flipped, this whole method will go away. But I'm keeping it there
- // so we can experiment with flags before they are flipped.
- Preconditions.checkArgument(toolchainProvider.disableGenruleCcToolchainDependency());
+ // When --incompatible_require_ctx_in_configure_features is flipped, this whole method will go
+ // away. But I'm keeping it there so we can experiment with flags before they are flipped.
cppConfiguration = ruleContext.getFragment(CppConfiguration.class);
} else {
cppConfiguration =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index e20b382..33f0c4a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -882,11 +882,6 @@
.requireCtxInConfigureFeatures();
}
- public boolean disableGenruleCcToolchainDependency() {
- return getCppConfigurationEvenThoughItCanBeDifferentThatWhatTargetHas()
- .disableGenruleCcToolchainDependency();
- }
-
@VisibleForTesting
NestedSet<Artifact> getStaticRuntimeLibForTesting() {
return staticRuntimeLinkInputs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
index cb5f7fb..9749e65 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
@@ -110,7 +110,6 @@
CppToolchainInfo toolchainInfo =
getCppToolchainInfo(
ruleContext,
- cppConfiguration.disableGenruleCcToolchainDependency(),
cppConfiguration.getTransformedCpuFromOptions(),
cppConfiguration.getCompilerFromOptions(),
attributes,
@@ -375,7 +374,6 @@
/** Finds an appropriate {@link CppToolchainInfo} for this target. */
private static CppToolchainInfo getCppToolchainInfo(
RuleContext ruleContext,
- boolean disableGenruleCcToolchainDependency,
String cpuFromOptions,
String compilerFromOptions,
CcToolchainAttributesProvider attributes,
@@ -388,10 +386,7 @@
if (configInfo != null) {
try {
- return CppToolchainInfo.create(
- ruleContext.getLabel(),
- configInfo,
- disableGenruleCcToolchainDependency);
+ return CppToolchainInfo.create(ruleContext.getLabel(), configInfo);
} catch (EvalException e) {
throw ruleContext.throwWithRuleError(e.getMessage());
}
@@ -421,10 +416,7 @@
.incompatibleDoNotSplitLinkingCmdline(),
CppToolchainInfo.getToolsDirectory(attributes.getCcToolchainLabel()));
CcToolchainConfigInfo ccToolchainConfigInfo = CcToolchainConfigInfo.fromToolchain(toolchain);
- return CppToolchainInfo.create(
- attributes.getCcToolchainLabel(),
- ccToolchainConfigInfo,
- disableGenruleCcToolchainDependency);
+ return CppToolchainInfo.create(attributes.getCcToolchainLabel(), ccToolchainConfigInfo);
} catch (EvalException e) {
throw ruleContext.throwWithRuleError(e.getMessage());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index ecbbb3b..8a91339 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -631,10 +631,6 @@
return cppOptions.targetLibcTopLabel;
}
- public boolean disableGenruleCcToolchainDependency() {
- return cppOptions.disableGenruleCcToolchainDependency;
- }
-
public boolean enableLegacyCcProvider() {
return !cppOptions.disableLegacyCcProvider;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 982457a..7600c15 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -833,21 +833,6 @@
public boolean doNotUseCpuTransformer;
@Option(
- name = "incompatible_disable_genrule_cc_toolchain_dependency",
- defaultValue = "true",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
- metadataTags = {
- OptionMetadataTag.INCOMPATIBLE_CHANGE,
- OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
- },
- help =
- "If true, genrule will no longer automatically depend on the cc toolchain. Specifically, "
- + "this means that the CC_FLAGS Make variable will not be available without using "
- + "the new cc_flags_supplier rule.")
- public boolean disableGenruleCcToolchainDependency;
-
- @Option(
name = "incompatible_disable_legacy_cc_provider",
defaultValue = "true",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
@@ -927,7 +912,6 @@
host.enableFdoProfileAbsolutePath = enableFdoProfileAbsolutePath;
host.doNotUseCpuTransformer = doNotUseCpuTransformer;
- host.disableGenruleCcToolchainDependency = disableGenruleCcToolchainDependency;
host.disableExpandIfAllAvailableInFlagSet = disableExpandIfAllAvailableInFlagSet;
host.disableLegacyCcProvider = disableLegacyCcProvider;
host.removeCpuCompilerCcToolchainAttributes = removeCpuCompilerCcToolchainAttributes;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
index 3f3d409..6759819 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
@@ -81,10 +81,7 @@
* Creates a CppToolchainInfo from CROSSTOOL info encapsulated in {@link CcToolchainConfigInfo}.
*/
public static CppToolchainInfo create(
- Label toolchainLabel,
- CcToolchainConfigInfo ccToolchainConfigInfo,
- boolean disableGenruleCcToolchainDependency)
- throws EvalException {
+ Label toolchainLabel, CcToolchainConfigInfo ccToolchainConfigInfo) throws EvalException {
ImmutableMap<String, PathFragment> toolPaths =
computeToolPaths(ccToolchainConfigInfo, getToolsDirectory(toolchainLabel));
PathFragment defaultSysroot =
@@ -111,7 +108,7 @@
"_solib_" + ccToolchainConfigInfo.getTargetCpu(),
ccToolchainConfigInfo.getAbiVersion(),
ccToolchainConfigInfo.getTargetSystemName(),
- computeAdditionalMakeVariables(ccToolchainConfigInfo, disableGenruleCcToolchainDependency),
+ computeAdditionalMakeVariables(ccToolchainConfigInfo),
computeLegacyCcFlagsMakeVariable(ccToolchainConfigInfo));
}
@@ -447,7 +444,7 @@
}
private static ImmutableMap<String, String> computeAdditionalMakeVariables(
- CcToolchainConfigInfo ccToolchainConfigInfo, boolean disableGenruleCcToolchainDependency) {
+ CcToolchainConfigInfo ccToolchainConfigInfo) {
Map<String, String> makeVariablesBuilder = new HashMap<>();
// The following are to be used to allow some build rules to avoid the limits on stack frame
// sizes and variable-length arrays.
@@ -457,10 +454,7 @@
for (Pair<String, String> variable : ccToolchainConfigInfo.getMakeVariables()) {
makeVariablesBuilder.put(variable.getFirst(), variable.getSecond());
}
-
- if (disableGenruleCcToolchainDependency) {
- makeVariablesBuilder.remove(CppConfiguration.CC_FLAGS_MAKE_VARIABLE_NAME);
- }
+ makeVariablesBuilder.remove(CppConfiguration.CC_FLAGS_MAKE_VARIABLE_NAME);
return ImmutableMap.copyOf(makeVariablesBuilder);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
index d91b217..6ae1ca8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.genrule;
-import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
@@ -44,14 +43,11 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.TargetUtils;
-import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
-import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.LazyString;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
import java.util.Map;
-import java.util.regex.Pattern;
/**
* A base implementation of genrule, to be used by specific implementing rules which can change some
@@ -59,20 +55,6 @@
*/
public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
- private static final ImmutableList<String> CROSSTOOL_MAKE_VARIABLES = ImmutableList.of("CC",
- "CC_FLAGS", "AR", "NM", "OBJCOPY", "STRIP", "GCOVTOOL");
-
- private static Pattern matchesMakeVariables(Iterable<String> variables) {
- return Pattern.compile("\\$\\((" + Joiner.on("|").join(variables) + ")\\)");
- }
-
- private static final Pattern CROSSTOOL_MAKE_VARIABLE_PATTERN =
- matchesMakeVariables(CROSSTOOL_MAKE_VARIABLES);
-
- protected static boolean requiresCrosstool(String command) {
- return CROSSTOOL_MAKE_VARIABLE_PATTERN.matcher(command).find();
- }
-
/**
* Returns {@code true} if the rule should be stamped.
*
@@ -140,9 +122,6 @@
// Expand template variables and functions.
ImmutableList.Builder<MakeVariableSupplier> makeVariableSuppliers =
new ImmutableList.Builder<>();
- if (GenRuleBaseRule.enableCcToolchain(ruleContext.getConfiguration())) {
- makeVariableSuppliers.add(new CcFlagsSupplier(ruleContext));
- }
CommandResolverContext commandResolverContext =
new CommandResolverContext(
ruleContext, resolvedSrcs, filesToBuild, makeVariableSuppliers.build());
@@ -200,15 +179,6 @@
".genrule_script.sh",
ImmutableMap.copyOf(executionInfo));
- // TODO(bazel-team): Make the make variable expander pass back a list of these.
- if (GenRuleBaseRule.enableCcToolchain(ruleContext.getConfiguration())
- && requiresCrosstool(baseCommand)) {
- // If cc is used, silently throw in the crosstool filegroup as a dependency.
- inputs.addTransitive(
- CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext)
- .getAllFilesMiddleman());
- }
-
if (isStampingEnabled(ruleContext)) {
inputs.add(ruleContext.getAnalysisEnvironment().getStableWorkspaceStatusArtifact());
inputs.add(ruleContext.getAnalysisEnvironment().getVolatileWorkspaceStatusArtifact());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
index 6a40f84..9fa5ce2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
@@ -23,19 +23,13 @@
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.Attribute.ComputedDefault;
-import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
import com.google.devtools.build.lib.packages.RuleClass.ExecutionPlatformConstraintsAllowed;
-import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
-import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
-import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.FileTypeSet;
/**
@@ -44,50 +38,6 @@
* as a setup script target.
*/
public class GenRuleBaseRule implements RuleDefinition {
- public static boolean enableCcToolchain(BuildConfiguration configuration) {
- CppConfiguration cppConfiguration = configuration.getFragment(CppConfiguration.class);
- if (cppConfiguration != null) {
- return enableCcToolchain(cppConfiguration);
- }
- return true;
- }
-
- public static boolean enableCcToolchain(CppConfiguration cppConfiguration) {
- return !cppConfiguration.disableGenruleCcToolchainDependency();
- }
-
- /**
- * Late-bound dependency on the C++ toolchain <i>iff</i> the genrule has make variables that need
- * that toolchain.
- */
- public static LabelLateBoundDefault<?> ccToolchainAttribute(RuleDefinitionEnvironment env) {
- return LabelLateBoundDefault.fromTargetConfiguration(
- CppConfiguration.class,
- env.getToolsLabel(CppRuleClasses.CROSSTOOL_LABEL),
- // null guards are needed for LateBoundAttributeTest
- (rule, attributes, cppConfig) -> {
- if (!enableCcToolchain(cppConfig)) {
- return null;
- }
- return attributes != null
- && attributes.get("cmd", Type.STRING) != null
- && GenRuleBase.requiresCrosstool(attributes.get("cmd", Type.STRING))
- ? CppRuleClasses.ccToolchainAttribute(env).resolve(rule, attributes, cppConfig)
- : null;
- });
- }
-
- /** Computed dependency on the C++ toolchain type. */
- public static ComputedDefault ccToolchainTypeAttribute(RuleDefinitionEnvironment env) {
- return new ComputedDefault("cmd") {
- @Override
- public Object getDefault(AttributeMap rule) {
- return GenRuleBase.requiresCrosstool(rule.get("cmd", Type.STRING))
- ? CppRuleClasses.ccToolchainTypeAttribute(env)
- : null;
- }
- };
- }
@Override
public RuleClass build(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index b74b044..c018e39 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -4499,7 +4499,6 @@
mockToolsConfig,
CcToolchainConfig.builder()
.withMakeVariables(Pair.of("CC_FLAGS", "-test-cflag1 -testcflag2")));
- useConfiguration("--incompatible_disable_genrule_cc_toolchain_dependency");
loadCcToolchainConfigLib();
scratch.file(