Automated rollback of commit 6d448136d13ddab92da8bb29ea6e8387821369d9.

*** Reason for rollback ***

rollforward now that we have dummy toolchains.

TESTED=[]

*** Original change description ***

Automated rollback of commit 3e79b0dbd93deeb3a2d970371f1b72845613ac06.

*** Reason for rollback ***

need a dummy toolchain

*** Original change description ***

Add BazelSdkToolchainRule and GoogleSdkToolchainRule as ancestors to rules that currently access the AndroidSdkProvider from the :android_sdk attr.

This requires a lot of test infrastructure updates.

PiperOrigin-RevId: 335469783
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
index c4593eb..cdc2915 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
@@ -69,6 +69,11 @@
     this.values = copyValues(values);
   }
 
+  public ToolchainInfo(Map<String, Object> values) {
+    super(PROVIDER, Location.BUILTIN);
+    this.values = copyValues(values);
+  }
+
   /**
    * Preprocesses a map of field values to convert the field names and field values to
    * Starlark-acceptable names and types.
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java
index db7e47d..a08bbd3 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java
@@ -36,7 +36,7 @@
   public Metadata getMetadata() {
     return RuleDefinition.Metadata.builder()
         .name("aar_import")
-        .ancestors(AarImportBaseRule.class, JavaBaseRule.class)
+        .ancestors(AarImportBaseRule.class, JavaBaseRule.class, BazelSdkToolchainRule.class)
         .factoryClass(BazelAarImport.class)
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java
index e5008ad..6e1cc59 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java
@@ -89,6 +89,7 @@
         .ancestors(
             AndroidRuleClasses.AndroidBinaryBaseRule.class,
             BazelJavaRuleClasses.JavaBaseRule.class,
+            BazelSdkToolchainRule.class,
             CcToolchainRequiringRule.class)
         .factoryClass(BazelAndroidBinary.class)
         .build();
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidInstrumentationTestRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidInstrumentationTestRule.java
index e7ad444..b5cb483 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidInstrumentationTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidInstrumentationTestRule.java
@@ -42,6 +42,7 @@
         .ancestors(
             AndroidInstrumentationTestBaseRule.class,
             AndroidRuleClasses.AndroidBaseRule.class,
+            BazelSdkToolchainRule.class,
             BaseRuleClasses.TestBaseRule.class)
         .factoryClass(BazelAndroidInstrumentationTest.class)
         .build();
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLibraryRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLibraryRule.java
index 4778bee..fbb1f3f 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLibraryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLibraryRule.java
@@ -57,7 +57,8 @@
         .name("android_library")
         .ancestors(
             BazelJavaRuleClasses.JavaBaseRule.class,
-            AndroidLibraryBaseRule.class)
+            AndroidLibraryBaseRule.class,
+            BazelSdkToolchainRule.class)
         .factoryClass(BazelAndroidLibrary.class)
         .build();
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkBase.java
index 8d0f2d9..911e440 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkBase.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.rules.android;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -22,6 +23,7 @@
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
+import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
 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.AggregatingAttributeMapper;
@@ -74,27 +76,30 @@
       return null;
     }
 
+    AndroidSdkProvider sdk =
+        new AndroidSdkProvider(
+            buildToolsVersion,
+            frameworkAidl,
+            aidlLib,
+            androidJar,
+            sourceProperties,
+            shrinkedAndroidJar,
+            mainDexClasses,
+            adb,
+            dx,
+            mainDexListCreator,
+            aidl,
+            aapt,
+            aapt2,
+            apkBuilder,
+            apkSigner,
+            proguard,
+            zipalign,
+            /* system= */ null);
+
     return new RuleConfiguredTargetBuilder(ruleContext)
-        .addNativeDeclaredProvider(
-            new AndroidSdkProvider(
-                buildToolsVersion,
-                frameworkAidl,
-                aidlLib,
-                androidJar,
-                sourceProperties,
-                shrinkedAndroidJar,
-                mainDexClasses,
-                adb,
-                dx,
-                mainDexListCreator,
-                aidl,
-                aapt,
-                aapt2,
-                apkBuilder,
-                apkSigner,
-                proguard,
-                zipalign,
-                /* system= */ null))
+        .addNativeDeclaredProvider(sdk)
+        .addNativeDeclaredProvider(new ToolchainInfo(ImmutableMap.of("android_sdk_info", sdk)))
         .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
         .setFilesToBuild(NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER))
         .build();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index f0c6304..4ec359b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -87,6 +87,7 @@
             "bind(name = 'android/sdk', actual='@bazel_tools//tools/android:sdk')",
             "register_toolchains('@bazel_tools//tools/cpp:all')",
             "register_toolchains('@bazel_tools//tools/jdk:all')",
+            "register_toolchains('@bazel_tools//tools/android:all')",
             "register_toolchains('@bazel_tools//tools/python:autodetecting_toolchain')",
             "local_repository(name = 'local_config_platform', path = '"
                 + localConfigPlatformWorkspace
@@ -338,6 +339,11 @@
 
     androidBuildContents.add(
         "toolchain_type(name = 'sdk_toolchain_type')",
+        "toolchain(",
+        "  name = 'sdk_toolchain',",
+        "  toolchain = ':sdk',",
+        "  toolchain_type = ':sdk_toolchain_type',",
+        ")",
         "android_sdk(",
         "    name = 'sdk',",
         "    aapt = ':static_aapt_tool',",
diff --git a/src/test/shell/testenv.sh b/src/test/shell/testenv.sh
index 77aa713..276a75e 100755
--- a/src/test/shell/testenv.sh
+++ b/src/test/shell/testenv.sh
@@ -336,11 +336,13 @@
   local android=$(dirname $android_jar)
   local platforms=$(dirname $android)
   ANDROID_SDK=$(dirname $platforms)
+
 cat >> WORKSPACE <<EOF
 android_sdk_repository(
     name = "androidsdk",
     path = "$ANDROID_SDK",
 )
+register_toolchains("//tools/android:all")
 EOF
 }
 
diff --git a/tools/android/android_sdk_repository_template.bzl b/tools/android/android_sdk_repository_template.bzl
index 5482b35..3f254f5 100644
--- a/tools/android/android_sdk_repository_template.bzl
+++ b/tools/android/android_sdk_repository_template.bzl
@@ -170,6 +170,8 @@
             toolchain = ":sdk-%d" % api_level,
         )
 
+    create_dummy_sdk_toolchain()
+
     native.alias(
         name = "org_apache_http_legacy",
         actual = ":org_apache_http_legacy-%d" % default_api_level,
@@ -315,6 +317,43 @@
     "armeabi-v7a": "arm",
 }
 
+# This is a dummy sdk toolchain that matches any platform. It will
+# fail if actually resolved to and used.
+def create_dummy_sdk_toolchain():
+    native.toolchain(
+        name = "sdk-dummy-toolchain",
+        toolchain_type = "@bazel_tools//tools/android:sdk_toolchain_type",
+        toolchain = ":sdk-dummy",
+    )
+
+    native.filegroup(name = "jar-filegroup", srcs = ["dummy.jar"])
+
+    native.genrule(
+        name = "genrule",
+        srcs = [],
+        outs = ["empty.sh"],
+        cmd = "echo '' >> \"$@\"",
+        executable = 1,
+    )
+
+    native.sh_binary(name = "empty-binary", srcs = [":genrule"])
+
+    native.android_sdk(
+        name = "sdk-dummy",
+        aapt = ":empty-binary",
+        adb = ":empty-binary",
+        aidl = ":empty-binary",
+        android_jar = ":jar-filegroup",
+        apksigner = ":empty-binary",
+        dx = ":empty-binary",
+        framework_aidl = "dummy.jar",
+        main_dex_classes = "dummy.jar",
+        main_dex_list_creator = ":empty-binary",
+        proguard = ":empty-binary",
+        shrinked_android_jar = "dummy.jar",
+        zipalign = ":empty-binary",
+    )
+
 def create_system_images_filegroups(system_image_dirs):
     """Generate filegroups for the system images in the Android SDK.