Automated rollback of commit ca216f5eb4b1f1892219db0f578495bbbdbaa875.

*** Reason for rollback ***

Breaks Bazel building itself on FreeBSD, also #3739.

*** Original change description ***

Introduce empty "toolchain_category" rule for labels that will be used as
categories of toolchains for the purpose of toolchain selection.

Up to now, we've used the native toolchain_type rule for this purpose.  That rule depends on a number of configuration fragments that supply build variables - we don't want toolchains to need to depend on those fragments as well.  E.g. toolchain_type depends on JvmConfiguration, but we would like toolchains to work with --experimental_disable_jvm.

PiperOrigin-RevId: 168810566
diff --git a/src/create_embedded_tools.py b/src/create_embedded_tools.py
index 8b013ce..699edd0 100644
--- a/src/create_embedded_tools.py
+++ b/src/create_embedded_tools.py
@@ -31,8 +31,6 @@
     ('*tools/jdk/BUILD*', lambda x: 'tools/jdk/BUILD'),
     ('*tools/platforms/platforms.BUILD', lambda x: 'platforms/BUILD'),
     ('*tools/platforms/*', lambda x: 'platforms/' + os.path.basename(x)),
-    ('*tools/build_defs/toolchains/*',
-     lambda x: 'tools/build_defs/toolchains/' + os.path.basename(x)),
     ('*JavaBuilder*_deploy.jar', lambda x: 'tools/jdk/' + os.path.basename(x)),
     ('*JacocoCoverage*_deploy.jar',
      lambda x: 'tools/jdk/JacocoCoverage_deploy.jar'),
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index da85efa..981addd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -89,7 +89,7 @@
 
   /** Returns label used to select resolved cc_toolchain instances based on platform. */
   public static Label getCcToolchainType(String toolsRepository) {
-    return Label.parseAbsoluteUnchecked(toolsRepository + "//tools/cpp:toolchain_category");
+    return Label.parseAbsoluteUnchecked(toolsRepository + "//tools/cpp:toolchain_type");
   }
 
   private CppHelper() {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index 2cf84b6..b938e5f 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -78,7 +78,6 @@
         "/bazel_tools_workspace/tools/cpp/BUILD",
         "package(default_visibility=['//visibility:public'])",
         "cc_library(name = 'stl')",
-        "toolchain_type(name = 'toolchain_type')",
         "cc_library(name = 'malloc')",
         "cc_toolchain_suite(",
         "    name = 'toolchain',",
@@ -146,17 +145,16 @@
         "    name = 'link_dynamic_library',",
         "    srcs = ['link_dynamic_library.sh'],",
         ")",
-        "load('//tools/build_defs/toolchains:toolchain_category.bzl', 'toolchain_category')",
-        "toolchain_category(name = 'toolchain_category')",
+        "toolchain_type(name = 'toolchain_type')",
         "toolchain(",
         "   name = 'toolchain_cc-compiler-piii',",
-        "   toolchain_type = ':toolchain_category',",
+        "   toolchain_type = ':toolchain_type',",
         "   toolchain = '//third_party/crosstool/mock:cc-compiler-piii',",
         "   target_compatible_with = [':mock_value'],",
         ")",
         "toolchain(",
         "   name = 'dummy_cc_toolchain',",
-        "   toolchain_type = ':toolchain_category',",
+        "   toolchain_type = ':toolchain_type',",
         "   toolchain = ':dummy_cc_toolchain_impl',",
         ")",
         "load(':dummy_toolchain.bzl', 'dummy_toolchain')",
@@ -167,12 +165,6 @@
         "   toolchain = platform_common.ToolchainInfo()",
         "   return [toolchain]",
         "dummy_toolchain = rule(_dummy_toolchain_impl, attrs = {})");
-    config.create("/bazel_tools_workspace/tools/build_defs/toolchains/BUILD");
-    config.create(
-        "/bazel_tools_workspace/tools/build_defs/toolchains/toolchain_category.bzl",
-        "def _toolchain_category_impl(ctx):",
-        "   ctx = ctx",
-        "toolchain_category = rule(_toolchain_category_impl, attrs = {})");
     config.create(
         "/bazel_tools_workspace/tools/cpp/CROSSTOOL",
         readCrosstoolFile());
diff --git a/tools/BUILD b/tools/BUILD
index 65e1a65..3270fcb 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -15,7 +15,6 @@
         "//tools/build_defs/hash:srcs",
         "//tools/build_defs/pkg:srcs",
         "//tools/build_defs/repo:srcs",
-        "//tools/build_defs/toolchains:srcs",
         "//tools/build_rules:srcs",
         "//tools/coverage:srcs",
         "//tools/jdk:srcs",
@@ -42,7 +41,6 @@
         "//tools/build_defs/hash:srcs",
         "//tools/build_defs/pkg:srcs",
         "//tools/build_defs/repo:srcs",
-        "//tools/build_defs/toolchains:srcs",
         "//tools/build_rules:embedded_tools_srcs",
         "//tools/buildstamp:srcs",
         "//tools/coverage:srcs",
diff --git a/tools/build_defs/toolchains/BUILD b/tools/build_defs/toolchains/BUILD
deleted file mode 100644
index 92d6ec8..0000000
--- a/tools/build_defs/toolchains/BUILD
+++ /dev/null
@@ -1,14 +0,0 @@
-# Rules for defining toolchains.
-
-licenses(["notice"])  # Apache 2.0
-
-package(default_visibility = ["//visibility:public"])
-
-exports_files(
-    glob(["**"]),
-)
-
-filegroup(
-    name = "srcs",
-    srcs = glob(["**"]),
-)
diff --git a/tools/build_defs/toolchains/toolchain_category.bzl b/tools/build_defs/toolchains/toolchain_category.bzl
deleted file mode 100644
index 4520128..0000000
--- a/tools/build_defs/toolchains/toolchain_category.bzl
+++ /dev/null
@@ -1,25 +0,0 @@
-# pylint: disable=g-bad-file-header
-# Copyright 2017 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Skylark rule to be used for toolchain "types".
-
-Blaze will allow a toolchain category to be any label, but we use an
-empty rule in particular in order to add behavior if the need arises.
-"""
-def _toolchain_category_impl(ctx):
-  ctx = ctx  # unused argument
-
-toolchain_category = rule(_toolchain_category_impl, attrs = {})
-
-
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index d8ed66b..eb75333 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -205,10 +205,7 @@
     srcs = ["link_dynamic_library.sh"],
 )
 
-# The c++ toolchain type
-load("//tools/build_defs/toolchains:toolchain_category.bzl", "toolchain_category")
-
-toolchain_category(name = "toolchain_category")
+toolchain_type(name = "toolchain_type")
 
 # A dummy toolchain is necessary to satisfy toolchain resolution until platforms
 # are used in c++ by default.
@@ -216,7 +213,7 @@
 toolchain(
     name = "dummy_cc_toolchain",
     toolchain = "dummy_cc_toolchain_impl",
-    toolchain_type = ":toolchain_category",
+    toolchain_type = ":toolchain_type",
 )
 
 load(":dummy_toolchain.bzl", "dummy_toolchain")
diff --git a/tools/cpp/BUILD.static b/tools/cpp/BUILD.static
index d948039..aaadc5b 100644
--- a/tools/cpp/BUILD.static
+++ b/tools/cpp/BUILD.static
@@ -116,9 +116,7 @@
     srcs = ["link_dynamic_library.sh"],
 )
 
-# The c++ toolchain type
-load("//tools/build_defs/toolchains:toolchain_category.bzl", "toolchain_category")
-toolchain_category(name = "toolchain_category")
+toolchain_type(name = "toolchain_type")
 
 # A dummy toolchain is necessary to satisfy toolchain resolution until platforms
 # are used in c++ by default.
@@ -126,7 +124,7 @@
 toolchain(
     name = "dummy_cc_toolchain",
     toolchain = "dummy_cc_toolchain_impl",
-    toolchain_type = ":toolchain_category",
+    toolchain_type = ":toolchain_type",
 )
 
 load(":dummy_toolchain.bzl", "dummy_toolchain")
diff --git a/tools/cpp/BUILD.tpl b/tools/cpp/BUILD.tpl
index d1e81b2..170fe3f 100644
--- a/tools/cpp/BUILD.tpl
+++ b/tools/cpp/BUILD.tpl
@@ -76,9 +76,7 @@
     supports_param_files = 1,
 )
 
-# The c++ toolchain type
-load("//tools/build_rules:toolchain_category.bzl", "toolchain_category")
-toolchain_category(name = "toolchain_category")
+toolchain_type(name = "toolchain_type")
 
 # A dummy toolchain is necessary to satisfy toolchain resolution until platforms
 # are used in c++ by default.
@@ -86,7 +84,7 @@
 toolchain(
     name = "dummy_cc_toolchain",
     toolchain = "dummy_cc_toolchain_impl",
-    toolchain_type = ":toolchain_category",
+    toolchain_type = ":toolchain_type",
 )
 
 load(":dummy_toolchain.bzl", "dummy_toolchain")