Skip to content

Commit 080547f

Browse files
juliexxiacopybara-github
authored andcommitted
Automated rollback of commit 6d44813.
*** Reason for rollback *** rollforward now that we have dummy toolchains. TESTED=[] *** Original change description *** Automated rollback of commit 3e79b0d. *** 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
1 parent 2350239 commit 080547f

File tree

9 files changed

+82
-22
lines changed

9 files changed

+82
-22
lines changed

src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ protected ToolchainInfo(Map<String, Object> values, Location location) {
6969
this.values = copyValues(values);
7070
}
7171

72+
public ToolchainInfo(Map<String, Object> values) {
73+
super(PROVIDER, Location.BUILTIN);
74+
this.values = copyValues(values);
75+
}
76+
7277
/**
7378
* Preprocesses a map of field values to convert the field names and field values to
7479
* Starlark-acceptable names and types.

src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment envi
3636
public Metadata getMetadata() {
3737
return RuleDefinition.Metadata.builder()
3838
.name("aar_import")
39-
.ancestors(AarImportBaseRule.class, JavaBaseRule.class)
39+
.ancestors(AarImportBaseRule.class, JavaBaseRule.class, BazelSdkToolchainRule.class)
4040
.factoryClass(BazelAarImport.class)
4141
.build();
4242
}

src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public Metadata getMetadata() {
8989
.ancestors(
9090
AndroidRuleClasses.AndroidBinaryBaseRule.class,
9191
BazelJavaRuleClasses.JavaBaseRule.class,
92+
BazelSdkToolchainRule.class,
9293
CcToolchainRequiringRule.class)
9394
.factoryClass(BazelAndroidBinary.class)
9495
.build();

src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidInstrumentationTestRule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public Metadata getMetadata() {
4242
.ancestors(
4343
AndroidInstrumentationTestBaseRule.class,
4444
AndroidRuleClasses.AndroidBaseRule.class,
45+
BazelSdkToolchainRule.class,
4546
BaseRuleClasses.TestBaseRule.class)
4647
.factoryClass(BazelAndroidInstrumentationTest.class)
4748
.build();

src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidLibraryRule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public Metadata getMetadata() {
5757
.name("android_library")
5858
.ancestors(
5959
BazelJavaRuleClasses.JavaBaseRule.class,
60-
AndroidLibraryBaseRule.class)
60+
AndroidLibraryBaseRule.class,
61+
BazelSdkToolchainRule.class)
6162
.factoryClass(BazelAndroidLibrary.class)
6263
.build();
6364
}

src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkBase.java

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414
package com.google.devtools.build.lib.rules.android;
1515

16+
import com.google.common.collect.ImmutableMap;
1617
import com.google.devtools.build.lib.actions.Artifact;
1718
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
1819
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -22,6 +23,7 @@
2223
import com.google.devtools.build.lib.analysis.RuleContext;
2324
import com.google.devtools.build.lib.analysis.RunfilesProvider;
2425
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
26+
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
2527
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
2628
import com.google.devtools.build.lib.collect.nestedset.Order;
2729
import com.google.devtools.build.lib.packages.AggregatingAttributeMapper;
@@ -74,27 +76,30 @@ public ConfiguredTarget create(RuleContext ruleContext)
7476
return null;
7577
}
7678

79+
AndroidSdkProvider sdk =
80+
new AndroidSdkProvider(
81+
buildToolsVersion,
82+
frameworkAidl,
83+
aidlLib,
84+
androidJar,
85+
sourceProperties,
86+
shrinkedAndroidJar,
87+
mainDexClasses,
88+
adb,
89+
dx,
90+
mainDexListCreator,
91+
aidl,
92+
aapt,
93+
aapt2,
94+
apkBuilder,
95+
apkSigner,
96+
proguard,
97+
zipalign,
98+
/* system= */ null);
99+
77100
return new RuleConfiguredTargetBuilder(ruleContext)
78-
.addNativeDeclaredProvider(
79-
new AndroidSdkProvider(
80-
buildToolsVersion,
81-
frameworkAidl,
82-
aidlLib,
83-
androidJar,
84-
sourceProperties,
85-
shrinkedAndroidJar,
86-
mainDexClasses,
87-
adb,
88-
dx,
89-
mainDexListCreator,
90-
aidl,
91-
aapt,
92-
aapt2,
93-
apkBuilder,
94-
apkSigner,
95-
proguard,
96-
zipalign,
97-
/* system= */ null))
101+
.addNativeDeclaredProvider(sdk)
102+
.addNativeDeclaredProvider(new ToolchainInfo(ImmutableMap.of("android_sdk_info", sdk)))
98103
.addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
99104
.setFilesToBuild(NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER))
100105
.build();

src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public List<String> getWorkspaceContents(MockToolsConfig config) {
8787
"bind(name = 'android/sdk', actual='@bazel_tools//tools/android:sdk')",
8888
"register_toolchains('@bazel_tools//tools/cpp:all')",
8989
"register_toolchains('@bazel_tools//tools/jdk:all')",
90+
"register_toolchains('@bazel_tools//tools/android:all')",
9091
"register_toolchains('@bazel_tools//tools/python:autodetecting_toolchain')",
9192
"local_repository(name = 'local_config_platform', path = '"
9293
+ localConfigPlatformWorkspace
@@ -338,6 +339,11 @@ private ImmutableList<String> createAndroidBuildContents() {
338339

339340
androidBuildContents.add(
340341
"toolchain_type(name = 'sdk_toolchain_type')",
342+
"toolchain(",
343+
" name = 'sdk_toolchain',",
344+
" toolchain = ':sdk',",
345+
" toolchain_type = ':sdk_toolchain_type',",
346+
")",
341347
"android_sdk(",
342348
" name = 'sdk',",
343349
" aapt = ':static_aapt_tool',",

src/test/shell/testenv.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,11 +336,13 @@ function setup_android_sdk_support() {
336336
local android=$(dirname $android_jar)
337337
local platforms=$(dirname $android)
338338
ANDROID_SDK=$(dirname $platforms)
339+
339340
cat >> WORKSPACE <<EOF
340341
android_sdk_repository(
341342
name = "androidsdk",
342343
path = "$ANDROID_SDK",
343344
)
345+
register_toolchains("//tools/android:all")
344346
EOF
345347
}
346348

tools/android/android_sdk_repository_template.bzl

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ def create_android_sdk_rules(
170170
toolchain = ":sdk-%d" % api_level,
171171
)
172172

173+
create_dummy_sdk_toolchain()
174+
173175
native.alias(
174176
name = "org_apache_http_legacy",
175177
actual = ":org_apache_http_legacy-%d" % default_api_level,
@@ -315,6 +317,43 @@ ARCHDIR_TO_ARCH_MAP = {
315317
"armeabi-v7a": "arm",
316318
}
317319

320+
# This is a dummy sdk toolchain that matches any platform. It will
321+
# fail if actually resolved to and used.
322+
def create_dummy_sdk_toolchain():
323+
native.toolchain(
324+
name = "sdk-dummy-toolchain",
325+
toolchain_type = "@bazel_tools//tools/android:sdk_toolchain_type",
326+
toolchain = ":sdk-dummy",
327+
)
328+
329+
native.filegroup(name = "jar-filegroup", srcs = ["dummy.jar"])
330+
331+
native.genrule(
332+
name = "genrule",
333+
srcs = [],
334+
outs = ["empty.sh"],
335+
cmd = "echo '' >> \"$@\"",
336+
executable = 1,
337+
)
338+
339+
native.sh_binary(name = "empty-binary", srcs = [":genrule"])
340+
341+
native.android_sdk(
342+
name = "sdk-dummy",
343+
aapt = ":empty-binary",
344+
adb = ":empty-binary",
345+
aidl = ":empty-binary",
346+
android_jar = ":jar-filegroup",
347+
apksigner = ":empty-binary",
348+
dx = ":empty-binary",
349+
framework_aidl = "dummy.jar",
350+
main_dex_classes = "dummy.jar",
351+
main_dex_list_creator = ":empty-binary",
352+
proguard = ":empty-binary",
353+
shrinked_android_jar = "dummy.jar",
354+
zipalign = ":empty-binary",
355+
)
356+
318357
def create_system_images_filegroups(system_image_dirs):
319358
"""Generate filegroups for the system images in the Android SDK.
320359

0 commit comments

Comments
 (0)