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.