Remove proguard from the bazel binary.
This change shrinks the bazel binary by less than ~1M:
```
$ du -s --block-size=K ~/bazel-with-proguard
48900K
$ du -s --block-size=K ~/bazel-without-proguard
48132K
```
Closes #8347.
PiperOrigin-RevId: 248508630
diff --git a/src/BUILD b/src/BUILD
index bd18505..edd3b94 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -109,7 +109,6 @@
# The tools Bazel uses to compile Java.
# TODO(#6316): Gradually remove the targets here.
JAVA_TOOLS = [
- "//third_party/java/proguard:embedded_tools",
"//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
"//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:embedded_tools",
"//third_party/jarjar:embedded_build_and_license",
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 06249a9..9798896 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
@@ -152,6 +152,15 @@
" jars = ['JacocoCoverage_jarjar_deploy.jar'],",
")",
"java_import(",
+ " name = 'proguard_import',",
+ " jars = ['proguard_rt.jar'],",
+ ")",
+ "java_binary(",
+ " name = 'proguard',",
+ " main_class = 'proguard.Proguard',",
+ " runtime_deps = [':proguard_import'],",
+ ")",
+ "java_import(",
" name = 'TestRunner',",
" jars = ['TestRunner.jar'],",
")",
@@ -198,10 +207,6 @@
config.create(
"/bazel_tools_workspace/tools/android/emulator/BUILD",
Iterables.toArray(createToolsAndroidEmulatorContents(), String.class));
- // Bundled Proguard used by android_sdk_repository
- config.create(
- "/bazel_tools_workspace/third_party/java/proguard/BUILD",
- "exports_files(['proguard'])");
config.create(
"/bazel_tools_workspace/tools/genrule/BUILD", "exports_files(['genrule-setup.sh'])");
diff --git a/tools/android/BUILD.tools b/tools/android/BUILD.tools
index b432c3e..764ea65 100644
--- a/tools/android/BUILD.tools
+++ b/tools/android/BUILD.tools
@@ -82,9 +82,8 @@
genrule(
name = "gen_java_lang_extras_jar",
srcs = [
- "@bazel_tools//tools/jdk:platformclasspath"
+ "@bazel_tools//tools/jdk:platformclasspath",
],
- tools = ["@bazel_tools//tools/jdk:singlejar"],
outs = ["java_lang_extras.jar"],
cmd = """
$(location @bazel_tools//tools/jdk:singlejar) \
@@ -94,6 +93,7 @@
--include_prefixes "java/lang/invoke/" \
--include_prefixes "java/lang/annotation/" \
--output $@""",
+ tools = ["@bazel_tools//tools/jdk:singlejar"],
visibility = ["//visibility:private"],
)
@@ -121,7 +121,7 @@
":desugared_java8_legacy_libs",
":dexer",
"@bazel_tools//src/tools/android/java/com/google/devtools/build/android/desugar/scan:KeepScanner",
- "@bazel_tools//third_party/java/proguard",
+ "@bazel_tools//tools/jdk:proguard",
],
visibility = ["//visibility:public"],
)
@@ -192,7 +192,8 @@
)
# No-one should depend on this but :desugared_java8_legacy_libs above
-exports_files(["desugar_jdk_libs.jar"],
+exports_files(
+ ["desugar_jdk_libs.jar"],
visibility = ["//visibility:private"],
)
@@ -201,8 +202,8 @@
java_binary(
name = "dexer",
main_class = "com.android.dx.command.Main",
- runtime_deps = ["//external:android/dx_jar_import"],
visibility = ["//visibility:private"],
+ runtime_deps = ["//external:android/dx_jar_import"],
)
alias(
@@ -365,23 +366,26 @@
# helpful error message.
android_sdk(
name = "poison_pill_android_sdk",
- proguard = ":error_message",
aapt = ":error_message",
- dx = ":error_message",
- main_dex_list_creator = ":error_message",
adb = ":error_message",
- framework_aidl = ":error_message",
aidl = ":error_message",
android_jar = ":error_message.jar",
- shrinked_android_jar = ":error_message.jar",
- main_dex_classes = ":error_message",
apksigner = ":error_message",
+ dx = ":error_message",
+ framework_aidl = ":error_message",
+ main_dex_classes = ":error_message",
+ main_dex_list_creator = ":error_message",
+ proguard = ":error_message",
+ shrinked_android_jar = ":error_message.jar",
zipalign = ":error_message",
)
genrule(
name = "no_android_sdk_repository_error",
- outs = ["error_message", "error_message.jar"],
+ outs = [
+ "error_message",
+ "error_message.jar",
+ ],
cmd = """echo \
This build requires an Android SDK. Please add the android_sdk_repository \
rule to your WORKSPACE. ; \
@@ -396,14 +400,17 @@
config_feature_flag(
name = "true",
+ allowed_values = [
+ "true",
+ "false",
+ ],
default_value = "true",
- allowed_values = ["true", "false"],
)
config_setting(
name = "always_true",
flag_values = {
- ":true": "true"
+ ":true": "true",
},
)
diff --git a/tools/android/android_sdk_repository_template.bzl b/tools/android/android_sdk_repository_template.bzl
index f6dafb1..04e34e0 100644
--- a/tools/android/android_sdk_repository_template.bzl
+++ b/tools/android/android_sdk_repository_template.bzl
@@ -107,7 +107,7 @@
native.android_sdk(
name = "sdk-%d" % api_level,
build_tools_version = build_tools_version,
- proguard = "@bazel_tools//third_party/java/proguard",
+ proguard = "@bazel_tools//tools/jdk:proguard",
aapt = select({
":windows": "build-tools/%s/aapt.exe" % build_tools_directory,
"//conditions:default": ":aapt_binary",
diff --git a/tools/android/build_java8_legacy_dex.sh b/tools/android/build_java8_legacy_dex.sh
index beb2e1d..c5ac47f 100644
--- a/tools/android/build_java8_legacy_dex.sh
+++ b/tools/android/build_java8_legacy_dex.sh
@@ -49,7 +49,6 @@
INPUT="$(find "${RUNFILES}" -path "*/tools/android/desugared_java8_legacy_libs.jar" | head -1)"
CONFIG="$(find "${RUNFILES}" -path "*/tools/android/minify_java8_legacy_libs.cfg" | head -1)"
SCAN="$(find "${RUNFILES}" -path "*/src/tools/android/java/com/google/devtools/build/android/desugar/scan/KeepScanner" | head -1)"
- PG="$(find "${RUNFILES}" -path "*/third_party/java/proguard/proguard" | head -1)"
DEXER="$(find "${RUNFILES}" -path "*/tools/android/dexer" | head -1)"
fi
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD
index cd04dc2..a32404e 100644
--- a/tools/jdk/BUILD
+++ b/tools/jdk/BUILD
@@ -252,6 +252,19 @@
target = ":java_tools/ExperimentalRunner_deploy.jar",
)
+alias(
+ name = "proguard",
+ actual = select({
+ "//src/conditions:darwin": "@remote_java_tools_darwin//:proguard",
+ "//src/conditions:darwin_x86_64": "@remote_java_tools_darwin//:proguard",
+ "//src/conditions:windows": "@remote_java_tools_windows//:proguard",
+ "//src/conditions:linux_x86_64": "@remote_java_tools_linux//:proguard",
+ # On different platforms the linux repository can be used because the
+ # proguard deploy jar is platform-agnostic.
+ "//conditions:default": "@remote_java_tools_linux//tools/jdk:proguard",
+ }),
+)
+
BOOTCLASS_JARS = [
"rt.jar",
"resources.jar",