Re-add R8 desugarer wrappers to embedded_tools
Prerequisite for enabling D8 as the default desugarer. Also refactors the Bazel
desugarer to not rely on com.android.tools.r8.StringResource, thus avoiding a
26MB jar import.
RELNOTES: embedded_tools packages R8 desugarer again
PiperOrigin-RevId: 453923029
Change-Id: I32d468a43c2a446fb490929af449a45800709602
diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD
index 400d259..cc606c3 100644
--- a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD
@@ -15,11 +15,12 @@
filegroup(
name = "embedded_tools",
srcs = glob(
- ["*.java"],
+ [
+ "*.java",
+ "desugar/*.java",
+ ],
exclude = [
"NoAndroidSdkStub.java",
- "CoreLibraryDesugar.java",
- "Desugar.java",
],
) + ["BUILD.tools"],
visibility = ["//visibility:public"],
@@ -29,17 +30,20 @@
name = "r8",
srcs = select({
"//external:has_androidsdk": glob(
- ["*.java"],
+ [
+ "*.java",
+ "desugar/*.java",
+ ],
exclude = [
"NoAndroidSdkStub.java",
- "CoreLibraryDesugar.java",
- "Desugar.java",
- "desugar/*.java",
],
),
"//conditions:default": ["NoAndroidSdkStub.java"],
}),
visibility = ["//src/test/java/com/google/devtools/build/android/r8:__pkg__"],
+ runtime_deps = [
+ "//src/tools/android/java/com/google/devtools/build/android/desugar/dependencies",
+ ],
deps = [
"//src/main/java/com/google/devtools/build/lib/worker:work_request_handlers",
"//src/main/java/com/google/devtools/common/options",
diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools
index 1b46a5a..6c3098f 100644
--- a/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/r8/BUILD.tools
@@ -2,7 +2,7 @@
java_library(
name = "r8",
- srcs = glob(["*.java"]),
+ srcs = glob(["*.java", "desugar/*.java"]),
deps = [
"//external:android/d8_jar_import",
"//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/CoreLibraryDesugar.java b/src/tools/android/java/com/google/devtools/build/android/r8/CoreLibraryDesugar.java
index f679793..a05a0d7 100644
--- a/src/tools/android/java/com/google/devtools/build/android/r8/CoreLibraryDesugar.java
+++ b/src/tools/android/java/com/google/devtools/build/android/r8/CoreLibraryDesugar.java
@@ -24,7 +24,6 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.L8;
import com.android.tools.r8.L8Command;
-import com.android.tools.r8.StringResource;
import com.android.tools.r8.errors.InterfaceDesugarMissingTypeDiagnostic;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.android.Converters.ExistingPathConverter;
@@ -175,7 +174,7 @@
Path input,
Path output,
Path desugaredLibConfig)
- throws CompilationFailedException {
+ throws CompilationFailedException, IOException {
checkArgument(!Files.isDirectory(input), "Input must be a jar (%s is a directory)", input);
DependencyCollector dependencyCollector = DependencyCollector.NoWriteCollectors.FAIL_ON_MISSING;
OutputConsumer consumer =
@@ -189,7 +188,7 @@
.setProgramConsumer(consumer);
bootclasspathProviders.forEach(builder::addLibraryResourceProvider);
if (desugaredLibConfig != null) {
- builder.addDesugaredLibraryConfiguration(StringResource.fromFile(desugaredLibConfig));
+ builder.addDesugaredLibraryConfiguration(Files.readString(desugaredLibConfig));
}
L8.run(builder.build());
}
diff --git a/src/tools/android/java/com/google/devtools/build/android/r8/Desugar.java b/src/tools/android/java/com/google/devtools/build/android/r8/Desugar.java
index 606b05d..3cf6e74 100644
--- a/src/tools/android/java/com/google/devtools/build/android/r8/Desugar.java
+++ b/src/tools/android/java/com/google/devtools/build/android/r8/Desugar.java
@@ -25,7 +25,6 @@
import com.android.tools.r8.D8Command;
import com.android.tools.r8.Diagnostic;
import com.android.tools.r8.DiagnosticsHandler;
-import com.android.tools.r8.StringResource;
import com.android.tools.r8.errors.InterfaceDesugarMissingTypeDiagnostic;
import com.android.tools.r8.utils.StringDiagnostic;
import com.google.common.collect.ImmutableList;
@@ -482,7 +481,7 @@
.setProgramConsumer(consumer);
bootclasspathProviders.forEach(builder::addLibraryResourceProvider);
if (desugaredLibConfig != null) {
- builder.addDesugaredLibraryConfiguration(StringResource.fromFile(desugaredLibConfig));
+ builder.addDesugaredLibraryConfiguration(Files.readString(desugaredLibConfig));
}
D8.run(builder.build());
}