Skip to content

Commit ae24714

Browse files
ted-xiecopybara-github
authored andcommitted
Re-attempt to use the D8 jar from maven.google.com. Update to the latest version of D8, 3.3.28.
*** Original change description *** Switch to using the d8 jar from maven.google.com instead of the jar from the Android SDK. Also fixes #13989 RELNOTES: Bazel uses the D8 jar from Maven instead of the SDK. PiperOrigin-RevId: 443517033
1 parent 7ce1c57 commit ae24714

File tree

9 files changed

+139
-6
lines changed

9 files changed

+139
-6
lines changed

WORKSPACE

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
workspace(name = "io_bazel")
22

3-
load("//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
3+
load("//tools/build_defs/repo:http.bzl", "http_archive", "http_file", "http_jar")
44
load("//:distdir.bzl", "dist_http_archive", "dist_http_file", "distdir_tar")
55
load("//:distdir_deps.bzl", "DIST_DEPS")
66

@@ -119,16 +119,22 @@ distdir_tar(
119119
# Keep in sync with the archives fetched as part of building bazel.
120120
archives = [
121121
"android_tools_pkg-0.24.0.tar.gz",
122+
# for android_gmaven_r8
123+
"r8-3.3.28.jar",
122124
],
123125
dirname = "derived/distdir",
124126
dist_deps = {dep: attrs for dep, attrs in DIST_DEPS.items() if "additional_distfiles" in attrs["used_in"]},
125127
sha256 = {
126128
"android_tools_pkg-0.24.0.tar.gz": "5aba10f2381bd4699313879336e038f9fa09e8180cd5a98d3c0ae40a13082549",
129+
"r8-3.3.28.jar": "8626ca32fb47aba7fddd2c897615e2e8ffcdb4d4b213572a2aefb3f838f01972",
127130
},
128131
urls = {
129132
"android_tools_pkg-0.24.0.tar.gz": [
130133
"https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.24.0.tar.gz",
131134
],
135+
"r8-3.3.28.jar": [
136+
"https://maven.google.com/com/android/tools/r8/3.3.28/r8-3.3.28.jar",
137+
],
132138
},
133139
)
134140

@@ -346,16 +352,21 @@ distdir_tar(
346352
name = "test_WORKSPACE_files",
347353
archives = [
348354
"android_tools_pkg-0.24.0.tar.gz",
355+
"r8-3.3.28.jar",
349356
],
350357
dirname = "test_WORKSPACE/distdir",
351358
dist_deps = {dep: attrs for dep, attrs in DIST_DEPS.items() if "test_WORKSPACE_files" in attrs["used_in"]},
352359
sha256 = {
353360
"android_tools_pkg-0.24.0.tar.gz": "5aba10f2381bd4699313879336e038f9fa09e8180cd5a98d3c0ae40a13082549",
361+
"r8-3.3.28.jar": "8626ca32fb47aba7fddd2c897615e2e8ffcdb4d4b213572a2aefb3f838f01972",
354362
},
355363
urls = {
356364
"android_tools_pkg-0.24.0.tar.gz": [
357365
"https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.24.0.tar.gz",
358366
],
367+
"r8-3.3.28.jar": [
368+
"https://maven.google.com/com/android/tools/r8/3.3.28/r8-3.3.28.jar",
369+
],
359370
},
360371
)
361372

@@ -397,6 +408,13 @@ http_archive(
397408
url = "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.24.0.tar.gz",
398409
)
399410

411+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_remote_tools.WORKSPACE
412+
http_jar(
413+
name = "android_gmaven_r8_for_testing",
414+
sha256 = "8626ca32fb47aba7fddd2c897615e2e8ffcdb4d4b213572a2aefb3f838f01972",
415+
url = "https://maven.google.com/com/android/tools/r8/3.3.28/r8-3.3.28.jar",
416+
)
417+
400418
dist_http_archive(
401419
name = "remote_coverage_tools",
402420
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE,
@@ -648,3 +666,4 @@ debian_deps()
648666
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
649667

650668
bazel_skylib_workspace()
669+

src/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,7 @@ release_archive(
646646
filegroup(
647647
name = "test_repos",
648648
srcs = [
649+
"@android_gmaven_r8_for_testing//jar:file",
649650
"@android_tools_for_testing//:WORKSPACE",
650651
"@bazel_skylib//:WORKSPACE",
651652
"@com_google_protobuf//:WORKSPACE",
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_jar")
22

33
# This must be kept in sync with the top-level WORKSPACE file.
44
http_archive(
55
name = "android_tools",
66
sha256 = "5aba10f2381bd4699313879336e038f9fa09e8180cd5a98d3c0ae40a13082549",
77
url = "https://mirror.bazel.build/bazel_android_tools/android_tools_pkg-0.24.0.tar.gz",
88
)
9+
10+
# This must be kept in sync with the top-level WORKSPACE file.
11+
http_jar(
12+
name = "android_gmaven_r8",
13+
sha256 = "8626ca32fb47aba7fddd2c897615e2e8ffcdb4d4b213572a2aefb3f838f01972",
14+
url = "https://maven.google.com/com/android/tools/r8/3.3.28/r8-3.3.28.jar",
15+
)

src/test/java/com/google/devtools/build/android/r8/BUILD

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,24 +70,49 @@ java_test(
7070
java_library(
7171
name = "twosimpleclasses",
7272
srcs = glob(["testdata/twosimpleclasses/*.java"]),
73+
# Must be compiled as java8, otherwise CompatDx complains about invoke-customs
74+
javacopts = [
75+
"-source 8",
76+
"-target 8",
77+
],
7378
)
7479

7580
java_library(
7681
name = "naming001",
7782
srcs = glob(["testdata/naming001/*.java"]),
83+
# Must be compiled as java8, otherwise CompatDx complains about invoke-customs
84+
javacopts = [
85+
"-source 8",
86+
"-target 8",
87+
],
7888
)
7989

8090
java_library(
8191
name = "arithmetic",
8292
srcs = glob(["testdata/arithmetic/*.java"]),
93+
# Must be compiled as java8, otherwise CompatDx complains about invoke-customs
94+
javacopts = [
95+
"-source 8",
96+
"-target 8",
97+
],
8398
)
8499

85100
java_library(
86101
name = "barray",
87102
srcs = glob(["testdata/barray/*.java"]),
103+
# Must be compiled as java8, otherwise CompatDx complains about invoke-customs
104+
javacopts = [
105+
"-source 8",
106+
"-target 8",
107+
],
88108
)
89109

90110
java_library(
91111
name = "dexmergersample",
92112
srcs = glob(["testdata/dexmergersample/*.java"]),
113+
# Must be compiled as java8, otherwise CompatDx complains about invoke-customs
114+
javacopts = [
115+
"-source 8",
116+
"-target 8",
117+
],
93118
)

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public ImmutableList<String> getWorkspaceContents(MockToolsConfig config) {
5757
String bazelToolWorkspace = config.getPath("embedded_tools").getPathString();
5858
String bazelPlatformsWorkspace = config.getPath("platforms_workspace").getPathString();
5959
String rulesJavaWorkspace = config.getPath("rules_java_workspace").getPathString();
60+
String androidGmavenR8Workspace = config.getPath("android_gmaven_r8").getPathString();
6061
String localConfigPlatformWorkspace =
6162
config.getPath("local_config_platform_workspace").getPathString();
6263

@@ -66,6 +67,7 @@ public ImmutableList<String> getWorkspaceContents(MockToolsConfig config) {
6667
"local_repository(name = 'local_config_xcode', path = '" + xcodeWorkspace + "')",
6768
"local_repository(name = 'com_google_protobuf', path = '" + protobufWorkspace + "')",
6869
"local_repository(name = 'rules_java', path = '" + rulesJavaWorkspace + "')",
70+
"local_repository(name = 'android_gmaven_r8', path = '" + androidGmavenR8Workspace + "')",
6971
"register_toolchains('@rules_java//java/toolchains/runtime:all')",
7072
"register_toolchains('@rules_java//java/toolchains/javac:all')",
7173
"bind(name = 'android/sdk', actual='@bazel_tools//tools/android:sdk')",
@@ -85,6 +87,7 @@ public ImmutableList<String> getWorkspaceContents(MockToolsConfig config) {
8587
@Override
8688
public ImmutableList<String> getWorkspaceRepos() {
8789
return ImmutableList.of(
90+
"android_gmaven_r8",
8891
"bazel_tools",
8992
"com_google_protobuf",
9093
"local_config_platform",
@@ -228,6 +231,9 @@ public void setupMockClient(MockToolsConfig config, List<String> workspaceConten
228231
ImmutableList<String> androidBuildContents = createAndroidBuildContents();
229232
config.create(
230233
"embedded_tools/tools/android/BUILD", androidBuildContents.toArray(new String[0]));
234+
config.create(
235+
"embedded_tools/src/tools/android/java/com/google/devtools/build/android/r8/BUILD",
236+
"java_library(name='r8')\n");
231237
config.create(
232238
"embedded_tools/tools/android/emulator/BUILD",
233239
Iterables.toArray(createToolsAndroidEmulatorContents(), String.class));
@@ -268,6 +274,11 @@ public void setupMockClient(MockToolsConfig config, List<String> workspaceConten
268274
" zipalign = ':empty_binary',",
269275
" tags = ['__ANDROID_RULES_MIGRATION__'],",
270276
")");
277+
config.create(
278+
"android_gmaven_r8/jar/BUILD",
279+
"java_import(name = 'jar', jars=['r8.jar'])",
280+
"filegroup(name = 'file', srcs=[])");
281+
config.create("android_gmaven_r8/WORKSPACE");
271282

272283
MockGenruleSupport.setup(config);
273284

@@ -500,6 +511,9 @@ public void setupMockToolsRepository(MockToolsConfig config) throws IOException
500511
" pass",
501512
"",
502513
"def http_file(**kwargs):",
514+
" pass",
515+
"",
516+
"def http_jar(**kwargs):",
503517
" pass");
504518
config.create(
505519
"embedded_tools/tools/jdk/local_java_repository.bzl",

src/test/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoaderTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ private static void mockEmbeddedTools(Path embeddedBinaries) throws IOException
8686
" pass",
8787
"",
8888
"def http_file(**kwargs):",
89+
" pass",
90+
"",
91+
"def http_jar(**kwargs):",
8992
" pass");
9093
FileSystemUtils.writeIsoLatin1(
9194
tools.getRelative("tools/build_defs/repo/utils.bzl"),

src/test/shell/bazel/android/android_integration_test.sh

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,67 @@ EOF
8484
assert_build //java/bazel/multidex:bin
8585
}
8686

87+
function write_hello_android_files() {
88+
mkdir -p java/com/example/hello
89+
mkdir -p java/com/example/hello/res/values
90+
cat > java/com/example/hello/res/values/strings.xml <<'EOF'
91+
<resources>
92+
<string name="app_name">HelloWorld</string>
93+
<string name="title_activity_main">Hello Main</string>
94+
</resources>
95+
EOF
96+
97+
cat > java/com/example/hello/AndroidManifest.xml <<'EOF'
98+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
99+
package="com.example.hello"
100+
android:versionCode="1"
101+
android:versionName="1.0" >
102+
103+
<uses-sdk
104+
android:minSdkVersion="7"
105+
android:targetSdkVersion="18" />
106+
107+
<application android:label="@string/app_name">
108+
<activity
109+
android:name="com.example.hello.MainActivity"
110+
android:label="@string/title_activity_main" >
111+
<intent-filter>
112+
<action android:name="android.intent.action.MAIN" />
113+
<category android:name="android.intent.category.LAUNCHER" />
114+
</intent-filter>
115+
</activity>
116+
</application>
117+
</manifest>
118+
EOF
119+
120+
cat > java/com/example/hello/MainActivity.java <<'EOF'
121+
package com.example.hello;
122+
123+
import android.app.Activity;
124+
125+
public class MainActivity extends Activity {
126+
}
127+
EOF
128+
129+
}
130+
131+
function test_d8_compiles_hello_android() {
132+
write_hello_android_files
133+
setup_android_sdk_support
134+
cat > java/com/example/hello/BUILD <<'EOF'
135+
android_binary(
136+
name = 'hello',
137+
manifest = "AndroidManifest.xml",
138+
srcs = ['MainActivity.java'],
139+
resource_files = glob(["res/**"]),
140+
)
141+
EOF
142+
143+
bazel clean
144+
bazel build --define=android_standalone_dexing_tool=d8_compat_dx \
145+
//java/com/example/hello:hello || fail "build failed"
146+
}
147+
87148
function test_android_tools_version() {
88149
create_new_workspace
89150
setup_android_sdk_support

src/test/shell/testenv.sh.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ EOF
282282

283283
repos=(
284284
"android_tools_for_testing"
285+
"android_gmaven_r8_for_testing"
285286
"bazel_skylib"
286287
"bazel_toolchains"
287288
"com_google_protobuf"

tools/android/android_sdk_repository_template.bzl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,12 +298,14 @@ def create_android_sdk_rules(
298298
)
299299
java_binary(
300300
name = "d8_compat_dx",
301-
main_class = "com.android.tools.r8.compatdx.CompatDx",
302-
runtime_deps = [":d8_jar_import"],
301+
main_class = "com.google.devtools.build.android.r8.CompatDx",
302+
runtime_deps = [
303+
"@bazel_tools//src/tools/android/java/com/google/devtools/build/android/r8:r8",
304+
],
303305
)
304-
java_import(
306+
native.alias(
305307
name = "d8_jar_import",
306-
jars = ["build-tools/%s/lib/d8.jar" % build_tools_directory],
308+
actual = "@android_gmaven_r8//jar",
307309
)
308310

309311
TAGDIR_TO_TAG_MAP = {

0 commit comments

Comments
 (0)