Busybox all the Bazel Android tools.
This change reduces the size taken up in the bazel binary by Android tools deploy jars from 38.2 mb to 9.8 mb, which is 15% of the bazel binary size. Also, some minor cleanups of our BUILD files.
https://github.com/bazelbuild/bazel/issues/2385
RELNOTES: None
PiperOrigin-RevId: 166373241
diff --git a/src/BUILD b/src/BUILD
index 8f5d12f..e0ad2c8 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -150,9 +150,6 @@
"//third_party/py/six:srcs",
"//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
"//src/tools/android/java/com/google/devtools/build/android:embedded_tools",
- "//src/tools/android/java/com/google/devtools/build/android/idlclass:embedded_tools",
- "//src/tools/android/java/com/google/devtools/build/android/dexer:embedded_tools",
- "//src/tools/android/java/com/google/devtools/build/android/ziputils:embedded_tools",
"//src/tools/launcher:srcs",
"//src/tools/singlejar:embedded_tools",
"//src/main/cpp/util:embedded_tools",
diff --git a/src/test/java/com/google/devtools/build/android/ziputils/BUILD b/src/test/java/com/google/devtools/build/android/ziputils/BUILD
index 59a2e8c..cda02f7 100644
--- a/src/test/java/com/google/devtools/build/android/ziputils/BUILD
+++ b/src/test/java/com/google/devtools/build/android/ziputils/BUILD
@@ -12,7 +12,6 @@
test_class = "com.google.devtools.build.android.ziputils.AllTests",
deps = [
"//src/test/java/com/google/devtools/build/lib:testutil",
- "//src/tools/android/java/com/google/devtools/build/android/ziputils:splitter_lib",
"//src/tools/android/java/com/google/devtools/build/android/ziputils:ziputils_lib",
"//third_party:guava",
"//third_party:jsr305",
diff --git a/src/tools/android/java/com/google/devtools/build/android/BUILD b/src/tools/android/java/com/google/devtools/build/android/BUILD
index 834483a..9162527 100644
--- a/src/tools/android/java/com/google/devtools/build/android/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/BUILD
@@ -6,18 +6,27 @@
name = "embedded_tools",
srcs = [
"BUILD.tools",
- "classes_deploy.jar",
+ ":all_android_tools_deploy.jar",
"//src/tools/android/java/com/google/devtools/build/android/desugar:embedded_tools",
+ "//src/tools/android/java/com/google/devtools/build/android/dexer:embedded_tools",
+ "//src/tools/android/java/com/google/devtools/build/android/idlclass:embedded_tools",
"//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:embedded_tools",
"//src/tools/android/java/com/google/devtools/build/android/junctions:embedded_tools",
"//src/tools/android/java/com/google/devtools/build/android/proto:srcs",
+ "//src/tools/android/java/com/google/devtools/build/android/ziputils:embedded_tools",
],
)
java_binary(
- name = "classes",
- main_class = "does.not.exist",
- runtime_deps = [":android_builder_lib"],
+ name = "all_android_tools",
+ create_executable = 0,
+ runtime_deps = [
+ ":android_builder_lib",
+ "//src/tools/android/java/com/google/devtools/build/android/desugar",
+ "//src/tools/android/java/com/google/devtools/build/android/dexer:dexerdeps",
+ "//src/tools/android/java/com/google/devtools/build/android/idlclass:idlclass_lib",
+ "//src/tools/android/java/com/google/devtools/build/android/ziputils:ziputils_lib",
+ ],
)
# Used by //src/test/shell/bazel/android:android_integration_test
diff --git a/src/tools/android/java/com/google/devtools/build/android/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/BUILD.tools
index d94dc4b..f0f858b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/BUILD.tools
@@ -1,19 +1,19 @@
package(default_visibility = ["//visibility:public"])
java_import(
- name = "classes",
- jars = [":classes_deploy.jar"],
+ name = "all_android_tools",
+ jars = ["all_android_tools_deploy.jar"],
)
java_binary(
name = "ResourceProcessorBusyBox",
- main_class = "com.google.devtools.build.android.ResourceProcessorBusyBox",
- runtime_deps = [
- ":classes",
- ],
data = select({
"//src:windows": ["//src/main/native/windows:windows_jni.dll"],
"//src:windows_msvc": ["//src/main/native/windows:windows_jni.dll"],
"//conditions:default": [],
}),
+ main_class = "com.google.devtools.build.android.ResourceProcessorBusyBox",
+ runtime_deps = [
+ ":all_android_tools",
+ ],
)
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD
index f2b0ec4..f7a5209 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD
@@ -3,16 +3,18 @@
filegroup(
name = "embedded_tools",
- srcs = [
- "BUILD.tools",
- "Desugar_deploy.jar",
+ srcs = ["BUILD.tools"],
+ visibility = [
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
],
- visibility = ["//src/tools/android/java/com/google/devtools/build/android:__pkg__"],
)
java_library(
name = "desugar",
srcs = glob(["*.java"]),
+ visibility = [
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+ ],
runtime_deps = ["//src/tools/android/java/com/google/devtools/build/android/desugar/runtime:throwable_extension"],
deps = [
"//src/main/java/com/google/devtools/common/options",
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools
index 5d0a8e8..b3dfdce 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/BUILD.tools
@@ -1,9 +1,9 @@
package(default_visibility = ["//visibility:public"])
-# This target is named "Desugar_embedded" instead of "Desugar" so as to avoid
-# a naming conflict with the existing Desugar_deploy.jar that it depends on.
java_binary(
- name = "Desugar_embedded",
+ name = "Desugar",
main_class = "com.google.devtools.build.android.desugar.Desugar",
- runtime_deps = [":Desugar_deploy.jar"],
+ runtime_deps = [
+ "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+ ],
)
diff --git a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD
index b80ab0c..3afe9ab 100644
--- a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD
@@ -15,10 +15,7 @@
srcs = glob(
["*.java"],
exclude = ["NoAndroidSdkStub.java"],
- ) + [
- "BUILD.tools",
- ":dexerdeps_deploy.jar",
- ],
+ ) + ["BUILD.tools"],
visibility = ["//visibility:public"],
)
@@ -47,11 +44,12 @@
# The DexFileMerger and DexBuilder are built in BUILD.tools which is built in
# a developers workspace, not the Bazel workspace. So we must bundle the
-# dependencies of those binaries into the embedded tools. We use a java_binary
-# instead of a java_library so that we can build a deploy jar which contains the
-# transitive closure of the dependencies.
-java_binary(
+# dependencies of those binaries into the embedded tools.
+java_library(
name = "dexerdeps",
+ visibility = [
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+ ],
runtime_deps = [
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:worker_protocol_java_proto",
diff --git a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools
index da14efa..dd5be15 100644
--- a/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/dexer/BUILD.tools
@@ -3,17 +3,17 @@
java_library(
name = "dexer",
srcs = glob(["*.java"]),
+ plugins = ["auto_value_plugin"],
deps = [
"//external:android/dx_jar_import",
- ":dexerdeps_deploy.jar",
+ "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
],
- plugins = ["auto_value_plugin"],
)
java_plugin(
name = "auto_value_plugin",
processor_class = "com.google.auto.value.processor.AutoValueProcessor",
- deps = [":dexerdeps_deploy.jar"],
+ deps = ["//src/tools/android/java/com/google/devtools/build/android:all_android_tools"],
)
java_binary(
diff --git a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD
index df2c726..6984bfc 100644
--- a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD
@@ -1,22 +1,14 @@
filegroup(
name = "embedded_tools",
- srcs = [
- "BUILD.tools",
- "classes_deploy.jar",
+ srcs = ["BUILD.tools"],
+ visibility = [
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
],
- visibility = ["//src:__pkg__"],
-)
-
-java_binary(
- name = "classes",
- main_class = "does.not.exist",
- runtime_deps = [":idlclass_lib"],
)
java_binary(
name = "IdlClass",
main_class = "com.google.devtools.build.android.idlclass.IdlClass",
- visibility = ["//visibility:public"],
runtime_deps = [":idlclass_lib"],
)
@@ -24,8 +16,8 @@
name = "idlclass_lib",
srcs = glob(["*.java"]),
visibility = [
- "//devtools/blaze/integration:__pkg__",
"//src/test/java/com/google/devtools/build/android/idlclass:__pkg__",
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
],
deps = [
"//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper",
@@ -40,5 +32,7 @@
filegroup(
name = "srcs",
srcs = glob(["**"]),
- visibility = ["//src/tools/android/java/com/google/devtools/build/android:__pkg__"],
+ visibility = [
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+ ],
)
diff --git a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools
index af785cc..5d3088b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/idlclass/BUILD.tools
@@ -1,12 +1,9 @@
package(default_visibility = ["//visibility:public"])
-java_import(
- name = "classes",
- jars = [":classes_deploy.jar"],
-)
-
java_binary(
name = "IdlClass",
main_class = "com.google.devtools.build.android.idlclass.IdlClass",
- runtime_deps = [":classes"],
+ runtime_deps = [
+ "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+ ],
)
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD
index 81fc56c..a53afc2 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD
@@ -1,7 +1,10 @@
# Low level zip archive processing library.
package(
- default_visibility = ["//visibility:public"],
+ default_visibility = [
+ "//src/test/java/com/google/devtools/build/android/ziputils:__pkg__",
+ "//src/tools/android/java/com/google/devtools/build/android:__pkg__",
+ ],
)
filegroup(
@@ -11,41 +14,14 @@
filegroup(
name = "embedded_tools",
- srcs = [
- "BUILD.tools",
- "all_deploy.jar",
- ],
+ srcs = ["BUILD.tools"],
)
java_library(
name = "ziputils_lib",
- srcs = glob(
- ["*.java"],
- exclude = [
- "DexMapper.java",
- "DexReducer.java",
- "SplitZip.java",
- "SplitZipFilters.java",
- "Splitter.java",
- ],
- ),
- visibility = ["//visibility:public"],
+ srcs = glob(["*.java"]),
deps = [
- "//third_party:guava",
- "//third_party:jsr305",
- ],
-)
-
-java_library(
- name = "splitter_lib",
- srcs = [
- "SplitZip.java",
- "SplitZipFilters.java",
- "Splitter.java",
- ],
- visibility = ["//visibility:public"],
- deps = [
- ":ziputils_lib",
+ "//src/main/java/com/google/devtools/common/options",
"//third_party:guava",
"//third_party:jsr305",
],
@@ -53,43 +29,14 @@
java_binary(
name = "mapper",
- srcs = [
- "DexMapper.java",
- ],
main_class = "com.google.devtools.build.android.ziputils.DexMapper",
- visibility = ["//visibility:public"],
- deps = [
- ":splitter_lib",
- "//src/main/java/com/google/devtools/common/options",
- "//third_party:guava",
- ],
+ visibility = ["//visibility:private"],
+ runtime_deps = [":ziputils_lib"],
)
java_binary(
name = "reducer",
- srcs = [
- "DexReducer.java",
- ],
main_class = "com.google.devtools.build.android.ziputils.DexReducer",
- visibility = ["//visibility:public"],
- deps = [
- ":ziputils_lib",
- "//src/main/java/com/google/devtools/common/options",
- "//third_party:guava",
- ],
-)
-
-java_binary(
- name = "all",
- srcs = [
- "DexMapper.java",
- "DexReducer.java",
- ],
- main_class = "does.not.exist",
- deps = [
- ":splitter_lib",
- ":ziputils_lib",
- "//src/main/java/com/google/devtools/common/options",
- "//third_party:guava",
- ],
+ visibility = ["//visibility:private"],
+ runtime_deps = [":ziputils_lib"],
)
diff --git a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools
index e86fad0..3e0df0b 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools
+++ b/src/tools/android/java/com/google/devtools/build/android/ziputils/BUILD.tools
@@ -1,18 +1,17 @@
package(default_visibility = ["//visibility:public"])
-java_import(
- name = "classes",
- jars = [":all_deploy.jar"],
-)
-
java_binary(
name = "mapper",
main_class = "com.google.devtools.build.android.ziputils.DexMapper",
- runtime_deps = [":classes"],
+ runtime_deps = [
+ "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+ ],
)
java_binary(
name = "reducer",
main_class = "com.google.devtools.build.android.ziputils.DexReducer",
- runtime_deps = [":classes"],
+ runtime_deps = [
+ "//src/tools/android/java/com/google/devtools/build/android:all_android_tools",
+ ],
)
diff --git a/tools/android/BUILD.tools b/tools/android/BUILD.tools
index 6828ddc..866d6af 100644
--- a/tools/android/BUILD.tools
+++ b/tools/android/BUILD.tools
@@ -42,7 +42,7 @@
alias(
name = "desugar_java8",
- actual = "//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar_embedded",
+ actual = "//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar",
)
# Bazel puts this on the bootclasspath of android_* targets to support Java 8