Remove --experimental_enable_cc_toolchain_config_info option

The cc_common.create_cc_toolchain_config_info() is stable now.

Issue #5380

RELNOTES: None.
PiperOrigin-RevId: 232308719
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
index a251f18..072ef08 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRulesModule.java
@@ -40,6 +40,16 @@
 public class BazelRulesModule extends BlazeModule {
   /** This is where deprecated options go to die. */
   public static class GraveyardOptions extends OptionsBase {
+
+    @Option(
+        name = "experimental_enable_cc_toolchain_config_info",
+        defaultValue = "true",
+        documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+        effectTags = {OptionEffectTag.NO_OP},
+        metadataTags = {OptionMetadataTag.DEPRECATED},
+        help = "No-op")
+    public boolean enableCcToolchainConfigInfoFromSkylark;
+
     @Option(
         name = "output_symbol_counts",
         defaultValue = "false",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 29c577d..b0826e2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -24,7 +24,6 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
 import com.google.devtools.build.lib.analysis.skylark.BazelStarlarkContext;
 import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
@@ -846,13 +845,7 @@
       SkylarkList<Object> makeVariables,
       Object builtinSysroot,
       Object ccTargetOs)
-      throws InvalidConfigurationException, EvalException {
-
-    CppConfiguration config =
-        skylarkRuleContext.getConfiguration().getFragment(CppConfiguration.class);
-    if (!config.enableCcToolchainConfigInfoFromSkylark()) {
-      throw new InvalidConfigurationException("Creating a CcToolchainConfigInfo is not enabled.");
-    }
+      throws EvalException {
 
     CToolchain.Builder cToolchain = CToolchain.newBuilder();
 
@@ -1089,8 +1082,7 @@
 
   /** Creates a {@link Feature} from a {@link SkylarkInfo}. */
   @VisibleForTesting
-  static Feature featureFromSkylark(SkylarkInfo featureStruct)
-      throws InvalidConfigurationException, EvalException {
+  static Feature featureFromSkylark(SkylarkInfo featureStruct) throws EvalException {
     checkRightProviderType(featureStruct, "feature");
     String name = getFieldFromSkylarkProvider(featureStruct, "name", String.class);
     Boolean enabled = getFieldFromSkylarkProvider(featureStruct, "enabled", Boolean.class);
@@ -1228,8 +1220,7 @@
 
   /** Creates an {@link EnvEntry} from a {@link SkylarkInfo}. */
   @VisibleForTesting
-  static EnvEntry envEntryFromSkylark(SkylarkInfo envEntryStruct)
-      throws InvalidConfigurationException, EvalException {
+  static EnvEntry envEntryFromSkylark(SkylarkInfo envEntryStruct) throws EvalException {
     checkRightProviderType(envEntryStruct, "env_entry");
     String key = getFieldFromSkylarkProvider(envEntryStruct, "key", String.class);
     String value = getFieldFromSkylarkProvider(envEntryStruct, "value", String.class);
@@ -1261,8 +1252,7 @@
 
   /** Creates an {@link EnvSet} from a {@link SkylarkInfo}. */
   @VisibleForTesting
-  static EnvSet envSetFromSkylark(SkylarkInfo envSetStruct)
-      throws InvalidConfigurationException, EvalException {
+  static EnvSet envSetFromSkylark(SkylarkInfo envSetStruct) throws EvalException {
     checkRightProviderType(envSetStruct, "env_set");
     ImmutableSet<String> actions = getStringSetFromSkylarkProviderField(envSetStruct, "actions");
     if (actions.isEmpty()) {
@@ -1287,8 +1277,7 @@
 
   /** Creates a {@link FlagGroup} from a {@link SkylarkInfo}. */
   @VisibleForTesting
-  static FlagGroup flagGroupFromSkylark(SkylarkInfo flagGroupStruct)
-      throws InvalidConfigurationException, EvalException {
+  static FlagGroup flagGroupFromSkylark(SkylarkInfo flagGroupStruct) throws EvalException {
     checkRightProviderType(flagGroupStruct, "flag_group");
 
     ImmutableList.Builder<Expandable> expandableBuilder = ImmutableList.builder();
@@ -1342,7 +1331,7 @@
   /** Creates a {@link FlagSet} from a {@link SkylarkInfo}. */
   @VisibleForTesting
   static FlagSet flagSetFromSkylark(SkylarkInfo flagSetStruct, String actionName)
-      throws InvalidConfigurationException, EvalException {
+      throws EvalException {
     checkRightProviderType(flagSetStruct, "flag_set");
     ImmutableSet<String> actions = getStringSetFromSkylarkProviderField(flagSetStruct, "actions");
     // if we are creating a flag set for an action_config, we need to propagate the name of the
@@ -1400,8 +1389,7 @@
 
   /** Creates an {@link ActionConfig} from a {@link SkylarkInfo}. */
   @VisibleForTesting
-  static ActionConfig actionConfigFromSkylark(SkylarkInfo actionConfigStruct)
-      throws InvalidConfigurationException, EvalException {
+  static ActionConfig actionConfigFromSkylark(SkylarkInfo actionConfigStruct) throws EvalException {
     checkRightProviderType(actionConfigStruct, "action_config");
     String actionName =
         getFieldFromSkylarkProvider(actionConfigStruct, "action_name", String.class);
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 3924691..0c54fab 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
@@ -411,8 +411,7 @@
               + "https://github.com/bazelbuild/bazel/issues/7320 for details.");
     }
 
-    if (cppConfiguration.enableCcToolchainConfigInfoFromSkylark()
-        && attributes.getCcToolchainConfigInfo() != null) {
+    if (attributes.getCcToolchainConfigInfo() != null) {
       if (fdoZip != null) {
         ccSupportKey = CcSkyframeSupportValue.key(fdoZip, /* packageWithCrosstoolInIt= */ null);
       }
@@ -726,20 +725,17 @@
       CrosstoolRelease crosstoolFromCcToolchainSuiteProtoAttribute)
       throws RuleErrorException {
 
-    if (cppConfiguration.enableCcToolchainConfigInfoFromSkylark()) {
-      // Attempt to obtain CppToolchainInfo from the 'toolchain_config' attribute of cc_toolchain.
-      CcToolchainConfigInfo configInfo = attributes.getCcToolchainConfigInfo();
+    CcToolchainConfigInfo configInfo = attributes.getCcToolchainConfigInfo();
 
-      if (configInfo != null) {
-        try {
-          return CppToolchainInfo.create(
-              ruleContext.getLabel(),
-              configInfo,
-              cppConfiguration.disableLegacyCrosstoolFields(),
-              cppConfiguration.disableGenruleCcToolchainDependency());
-        } catch (EvalException e) {
-          throw ruleContext.throwWithRuleError(e.getMessage());
-        }
+    if (configInfo != null) {
+      try {
+        return CppToolchainInfo.create(
+            ruleContext.getLabel(),
+            configInfo,
+            cppConfiguration.disableLegacyCrosstoolFields(),
+            cppConfiguration.disableGenruleCcToolchainDependency());
+      } 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 925a1ea..77aebcb 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
@@ -583,10 +583,6 @@
     return PathFragment.create(builtInSysroot);
   }
 
-  boolean enableCcToolchainConfigInfoFromSkylark() {
-    return cppOptions.enableCcToolchainConfigInfoFromSkylark;
-  }
-
   boolean disableRuntimesFilegroups() {
     return cppOptions.disableRuntimesFilegroups;
   }
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 8140a76..d965679 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
@@ -773,15 +773,6 @@
   public boolean disableRuntimesFilegroups;
 
   @Option(
-      name = "experimental_enable_cc_toolchain_config_info",
-      defaultValue = "true",
-      documentationCategory = OptionDocumentationCategory.TOOLCHAIN,
-      effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
-      metadataTags = {OptionMetadataTag.EXPERIMENTAL},
-      help = "If true, Bazel will allow creating a CcToolchainConfigInfo.")
-  public boolean enableCcToolchainConfigInfoFromSkylark;
-
-  @Option(
       name = "incompatible_disable_crosstool_file",
       defaultValue = "false",
       documentationCategory = OptionDocumentationCategory.TOOLCHAIN,
@@ -915,7 +906,6 @@
     host.inmemoryDotdFiles = inmemoryDotdFiles;
 
     host.doNotUseCpuTransformer = doNotUseCpuTransformer;
-    host.enableCcToolchainConfigInfoFromSkylark = enableCcToolchainConfigInfoFromSkylark;
     host.disableGenruleCcToolchainDependency = disableGenruleCcToolchainDependency;
     host.disableEmittingStaticLibgcc = disableEmittingStaticLibgcc;
     host.disableDepsetInUserFlags = disableDepsetInUserFlags;
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
index 6321ed9..a15b32c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
@@ -660,7 +660,7 @@
             mockToolsConfig,
             CrosstoolConfig.CToolchain.newBuilder().setAbiVersion("orange").buildPartial());
 
-    useConfiguration("--cpu=k8", "--experimental_enable_cc_toolchain_config_info");
+    useConfiguration("--cpu=k8");
 
     ConfiguredTarget target = getConfiguredTarget("//a:a");
     CcToolchainProvider toolchainProvider =
@@ -678,7 +678,7 @@
 
     getAnalysisMock().ccSupport();
 
-    useConfiguration("--cpu=k8", "--experimental_enable_cc_toolchain_config_info");
+    useConfiguration("--cpu=k8");
 
     ConfiguredTarget target = getConfiguredTarget("//a:a");
     CcToolchainProvider toolchainProvider =
@@ -1022,7 +1022,7 @@
   }
 
   @Test
-  public void testCrosstoolNeededWhenStarlarkRuleNotEnabled() throws Exception {
+  public void testCrosstoolNeededWhenStarlarkRuleIsNotPresent() throws Exception {
     reporter.removeHandler(failFastHandler);
     scratch.file("lib/BUILD", "cc_library(name = 'lib', srcs = ['a.cc'])");
     getSimpleStarlarkRule(/* addToolchainConfigAttribute= */ false);
@@ -1035,34 +1035,6 @@
   }
 
   @Test
-  public void testCrosstoolReadWhenStarlarkRuleNotEnabled() throws Exception {
-    reporter.removeHandler(failFastHandler);
-    scratch.file("lib/BUILD", "cc_library(name = 'lib', srcs = ['a.cc'])");
-    getSimpleStarlarkRule(/* addToolchainConfigAttribute= */ false);
-
-    scratch.file("a/CROSSTOOL", getAnalysisMock().ccSupport().readCrosstoolFile());
-
-    useConfiguration("--cpu=k8", "--crosstool_top=//a:a");
-    ConfiguredTarget target = getConfiguredTarget("//lib:lib");
-    assertNoEvents();
-    assertThat(target).isNotNull();
-  }
-
-  @Test
-  public void testCrosstoolNeededWhenStarlarkRuleIsEnabledButNotPresent() throws Exception {
-    reporter.removeHandler(failFastHandler);
-    scratch.file("lib/BUILD", "cc_library(name = 'lib', srcs = ['a.cc'])");
-    getSimpleStarlarkRule(/* addToolchainConfigAttribute= */ false);
-
-    useConfiguration(
-        "--cpu=k8", "--crosstool_top=//a:a", "--experimental_enable_cc_toolchain_config_info");
-    ConfiguredTarget target = getConfiguredTarget("//lib:lib");
-    // Skyframe cannot find the CROSSTOOL file
-    assertContainsEvent("errors encountered while analyzing target '//lib:lib'");
-    assertThat(target).isNull();
-  }
-
-  @Test
   public void testCrosstoolReadWhenStarlarkRuleIsEnabledButNotPresent() throws Exception {
     reporter.removeHandler(failFastHandler);
     scratch.file("lib/BUILD", "cc_library(name = 'lib', srcs = ['a.cc'])");
@@ -1070,8 +1042,7 @@
 
     scratch.file("a/CROSSTOOL", getAnalysisMock().ccSupport().readCrosstoolFile());
 
-    useConfiguration(
-        "--cpu=k8", "--crosstool_top=//a:a", "--experimental_enable_cc_toolchain_config_info");
+    useConfiguration("--cpu=k8", "--crosstool_top=//a:a");
     ConfiguredTarget target = getConfiguredTarget("//lib:lib");
     assertThat(target).isNotNull();
   }
@@ -1082,8 +1053,7 @@
     scratch.file("lib/BUILD", "cc_library(name = 'lib', srcs = ['a.cc'])");
     getSimpleStarlarkRule(/* addToolchainConfigAttribute= */ true);
 
-    useConfiguration(
-        "--cpu=k8", "--crosstool_top=//a:a", "--experimental_enable_cc_toolchain_config_info");
+    useConfiguration("--cpu=k8", "--crosstool_top=//a:a");
     // We don't have a CROSSTOOL, but we don't need it
     ConfiguredTarget target = getConfiguredTarget("//lib:lib");
     assertThat(target).isNotNull();
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 a9c598f..b6c4fc3 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
@@ -4089,16 +4089,11 @@
         "load(':crosstool.bzl', 'cc_toolchain_config_rule')",
         "cc_toolchain_alias(name='alias')",
         "cc_toolchain_config_rule(name='r')");
-    useConfiguration("--experimental_enable_cc_toolchain_config_info");
     ConfiguredTarget target = getConfiguredTarget("//foo:r");
     assertThat(target).isNotNull();
     CcToolchainConfigInfo ccToolchainConfigInfo =
         (CcToolchainConfigInfo) target.get(CcToolchainConfigInfo.PROVIDER.getKey());
     assertThat(ccToolchainConfigInfo).isNotNull();
-
-    useConfiguration("--experimental_enable_cc_toolchain_config_info=false");
-    AssertionError e = assertThrows(AssertionError.class, () -> getConfiguredTarget("//foo:r"));
-    assertThat(e).hasMessageThat().contains("Creating a CcToolchainConfigInfo is not enabled.");
   }
 
   @Test
@@ -4162,7 +4157,6 @@
   @Test
   public void testCcToolchainInfoFromSkylarkAllRequiredStringsPresent() throws Exception {
     setupSkylarkRuleForStringFieldsTesting("");
-    useConfiguration("--experimental_enable_cc_toolchain_config_info");
     ConfiguredTarget target = getConfiguredTarget("//foo:r");
     assertThat(target).isNotNull();
     CcToolchainConfigInfo ccToolchainConfigInfo =
@@ -4253,7 +4247,6 @@
         "load(':crosstool.bzl', 'cc_toolchain_config_rule')",
         "cc_toolchain_alias(name='alias')",
         "cc_toolchain_config_rule(name='r')");
-    useConfiguration("--experimental_enable_cc_toolchain_config_info");
     ConfiguredTarget target = getConfiguredTarget("//foo:r");
     assertThat(target).isNotNull();
     CcToolchainConfigInfo ccToolchainConfigInfo =
@@ -4323,7 +4316,6 @@
         "load(':crosstool.bzl', 'cc_toolchain_config_rule')",
         "cc_toolchain_alias(name='alias')",
         "cc_toolchain_config_rule(name='r')");
-    useConfiguration("--experimental_enable_cc_toolchain_config_info");
     ConfiguredTarget target = getConfiguredTarget("//foo:r");
     assertThat(target).isNotNull();
     CcToolchainConfigInfo ccToolchainConfigInfo =
@@ -4452,7 +4444,6 @@
         "cc_toolchain_alias(name='alias')",
         "cc_toolchain_config_rule(name='r')");
 
-    useConfiguration("--experimental_enable_cc_toolchain_config_info");
     ConfiguredTarget target = getConfiguredTarget("//foo:r");
     assertThat(target).isNotNull();
     CcToolchainConfigInfo ccToolchainConfigInfo =
@@ -4587,7 +4578,6 @@
         "cc_toolchain_alias(name='alias')",
         "cc_toolchain_config_rule(name='r')");
 
-    useConfiguration("--experimental_enable_cc_toolchain_config_info");
     ConfiguredTarget target = getConfiguredTarget("//foo:r");
     assertThat(target).isNotNull();
     CcToolchainConfigInfo ccToolchainConfigInfo =