Add singlejar to the java tools zip.
Closes #7951.
PiperOrigin-RevId: 242421452
diff --git a/src/BUILD b/src/BUILD
index f435ebb..0416d65 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -591,9 +591,9 @@
"//src/java_tools/buildjar:srcs",
"//src/java_tools/junitrunner:srcs",
"//src/java_tools/singlejar:srcs",
+ "//src/tools/singlejar:embedded_java_tools",
"//third_party/jarjar:srcs",
"//third_party/java/jdk/langtools:license-and-srcs",
- "//third_party/zlib:embedded_tools",
"//third_party/ijar:transitive_sources",
],
outs = ["java_tools_dist.zip"],
@@ -606,9 +606,9 @@
genrule(
name = "java_tools_zip",
srcs = [
- "//third_party/ijar:ijar_with_deps_zip",
":jars_java_tools_zip",
- ":zlib_zip",
+ "//src/tools/singlejar:singlejar_transitive_zip",
+ "//third_party/ijar:ijar_transitive_zip",
],
outs = ["java_tools.zip"],
cmd = "$(location //src:merge_zip_files) java_tools $@ $(SRCS)",
@@ -623,5 +623,8 @@
outs = ["zlib.zip"],
cmd = "$(location //src:zip_files) zlib $@ $(SRCS)",
tools = ["//src:zip_files"],
- visibility = ["//visibility:private"],
+ visibility = [
+ "//src/tools/singlejar:__pkg__",
+ "//third_party/ijar:__pkg__",
+ ],
)
diff --git a/src/main/cpp/util/BUILD b/src/main/cpp/util/BUILD
index 9ae89d8..dede1a8 100644
--- a/src/main/cpp/util/BUILD
+++ b/src/main/cpp/util/BUILD
@@ -205,7 +205,10 @@
outs = ["cpp_util_with_deps.zip"],
cmd = "$(location //src:merge_zip_files) - $@ $(SRCS)",
tools = ["//src:merge_zip_files"],
- visibility = ["//third_party/ijar:__pkg__"],
+ visibility = [
+ "//src/tools/singlejar:__pkg__",
+ "//third_party/ijar:__pkg__",
+ ],
)
genrule(
diff --git a/src/main/protobuf/BUILD b/src/main/protobuf/BUILD
index 05c3224..f8e13ad 100644
--- a/src/main/protobuf/BUILD
+++ b/src/main/protobuf/BUILD
@@ -114,6 +114,21 @@
deps = [":command_line_java_proto"],
)
+# Proto needed by singlejar and embedded into the java tools archive.
+genrule(
+ name = "desugar_deps_zip",
+ srcs = ["desugar_deps.proto"],
+ outs = ["desugar_deps.zip"],
+ cmd = "zip -q $@ $<",
+ visibility = ["//src/tools/singlejar:__pkg__"],
+)
+
+filegroup(
+ name = "desugar_deps_filegroup",
+ srcs = ["desugar_deps.proto"],
+ visibility = ["//src/tools/singlejar:__pkg__"],
+)
+
cc_proto_library(
name = "desugar_deps_cc_proto",
deps = [":desugar_deps_proto"],
diff --git a/src/merge_zip_files.sh b/src/merge_zip_files.sh
index 9907bca..c148a9a 100755
--- a/src/merge_zip_files.sh
+++ b/src/merge_zip_files.sh
@@ -56,7 +56,7 @@
if [[ "$directory_prefix" == "-" ]]; then
for curr_zip in "$@"
do
- unzip -q "$curr_zip" -d "$tmp_dir"
+ unzip -q -o "$curr_zip" -d "$tmp_dir"
done
cd "$tmp_dir"
@@ -65,7 +65,7 @@
mkdir -p "$tmp_dir/$directory_prefix"
for curr_zip in "$@"
do
- unzip -q "$curr_zip" -d "$tmp_dir/$directory_prefix"
+ unzip -q -o "$curr_zip" -d "$tmp_dir/$directory_prefix"
done
cd "$tmp_dir"
diff --git a/src/tools/singlejar/BUILD b/src/tools/singlejar/BUILD
index 6e72e4e..3dea231 100644
--- a/src/tools/singlejar/BUILD
+++ b/src/tools/singlejar/BUILD
@@ -8,33 +8,67 @@
visibility = ["//src:__pkg__"],
)
+SOURCES = [
+ "combiners.cc",
+ "combiners.h",
+ "diag.h",
+ "input_jar.cc",
+ "input_jar.h",
+ "mapped_file.cc",
+ "mapped_file.h",
+ "mapped_file_posix.inc",
+ "mapped_file_windows.inc",
+ "options.cc",
+ "options.h",
+ "output_jar.cc",
+ "output_jar.h",
+ "port.h",
+ "singlejar_main.cc",
+ "token_stream.h",
+ "transient_bytes.h",
+ "zip_headers.h",
+ "zlib_interface.h",
+]
+
filegroup(
name = "embedded_tools",
- srcs = [
- "BUILD",
- "combiners.cc",
- "combiners.h",
- "diag.h",
- "input_jar.cc",
- "input_jar.h",
- "mapped_file.cc",
- "mapped_file.h",
- "mapped_file_posix.inc",
- "mapped_file_windows.inc",
- "options.cc",
- "options.h",
- "output_jar.cc",
- "output_jar.h",
- "port.h",
- "singlejar_main.cc",
- "token_stream.h",
- "transient_bytes.h",
- "zip_headers.h",
- "zlib_interface.h",
- ],
+ srcs = SOURCES + ["BUILD"],
visibility = ["//visibility:public"],
)
+filegroup(
+ name = "embedded_java_tools",
+ srcs = SOURCES + [
+ "//src/main/cpp/util:embedded_java_tools",
+ "//third_party/zlib:embedded_tools",
+ "//src/main/protobuf:desugar_deps_filegroup",
+ ],
+ visibility = ["//src:__pkg__"],
+)
+
+genrule(
+ name = "singlejar_transitive_zip",
+ srcs = [
+ ":singlejar_zip",
+ "//src:zlib_zip",
+ "//src/main/cpp/util:cpp_util_with_deps_zip",
+ "//src/main/protobuf:desugar_deps_zip",
+ ],
+ outs = ["singlejar_transitive.zip"],
+ cmd = "$(location //src:merge_zip_files) - $@ $(SRCS)",
+ tools = ["//src:merge_zip_files"],
+ visibility = ["//src:__pkg__"],
+)
+
+genrule(
+ name = "singlejar_zip",
+ srcs = SOURCES + [":singlejar_local"],
+ outs = ["singlejar.zip"],
+ cmd = "$(location //src:zip_files) src/tools/singlejar $@ $$(echo $(SRCS) | sort)",
+ tools = ["//src:zip_files"],
+ visibility = ["//visibility:private"],
+)
+
cc_binary(
name = "singlejar",
srcs = [
diff --git a/src/zip_files.sh b/src/zip_files.sh
index abcc48a..73926e5 100755
--- a/src/zip_files.sh
+++ b/src/zip_files.sh
@@ -39,7 +39,7 @@
mkdir -p "$tmp_dir/$directory_prefix"
cd "$tmp_dir/$directory_prefix"
-unzip -q "$tmp_zip"
+unzip -q -o "$tmp_zip"
rm -f "$tmp_zip"
cd "$tmp_dir"
zip -r -q "$tmp_zip" "$directory_prefix"
diff --git a/third_party/ijar/BUILD b/third_party/ijar/BUILD
index 01efaa3..466c7d4 100644
--- a/third_party/ijar/BUILD
+++ b/third_party/ijar/BUILD
@@ -125,9 +125,10 @@
)
genrule(
- name = "ijar_with_deps_zip",
+ name = "ijar_transitive_zip",
srcs = [
":ijar_srcs_zip",
+ "//src:zlib_zip",
"//src/main/cpp/util:cpp_util_with_deps_zip",
],
outs = ["ijar_srcs_with_deps.zip"],
diff --git a/tools/jdk/BUILD.java_tools b/tools/jdk/BUILD.java_tools
index 28ebe72..2a56bf2 100644
--- a/tools/jdk/BUILD.java_tools
+++ b/tools/jdk/BUILD.java_tools
@@ -92,6 +92,12 @@
values = {"cpu": "x64_windows"},
)
+config_setting(
+ name = "freebsd",
+ values = {"cpu": "freebsd"},
+ visibility = ["//visibility:public"],
+)
+
alias(
name = "ijar",
actual = select({
@@ -180,6 +186,46 @@
)
cc_library(
+ name = "cpp_util",
+ hdrs = [
+ "java_tools/src/main/cpp/util/errors.h",
+ "java_tools/src/main/cpp/util/file.h",
+ "java_tools/src/main/cpp/util/file_platform.h",
+ "java_tools/src/main/cpp/util/md5.h",
+ "java_tools/src/main/cpp/util/numbers.h",
+ "java_tools/src/main/cpp/util/path.h",
+ "java_tools/src/main/cpp/util/path_platform.h",
+ "java_tools/src/main/cpp/util/port.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":blaze_exit_code",
+ ":errors",
+ ":filesystem",
+ ":md5",
+ ":numbers",
+ ":port",
+ ":strings",
+ ],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "md5",
+ srcs = ["java_tools/src/main/cpp/util/md5.cc"],
+ hdrs = ["java_tools/src/main/cpp/util/md5.h"],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "numbers",
+ srcs = ["java_tools/src/main/cpp/util/numbers.cc"],
+ hdrs = ["java_tools/src/main/cpp/util/numbers.h"],
+ deps = [":strings"],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
name = "filesystem",
srcs = [
"java_tools/src/main/cpp/util/file.cc",
@@ -290,3 +336,181 @@
strip_include_prefix = "java_tools",
include_prefix = "third_party",
)
+
+##################### singlejar
+
+cc_binary(
+ name = "singlejar",
+ srcs = [
+ "java_tools/src/tools/singlejar/singlejar_main.cc",
+ ],
+ linkopts = select({
+ ":freebsd": ["-lm"],
+ "//conditions:default": [],
+ }),
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":options",
+ ":output_jar",
+ "//java_tools/zlib",
+ ],
+)
+
+cc_binary(
+ name = "singlejar_local",
+ srcs = [
+ "java_tools/src/tools/singlejar/singlejar_local_main.cc",
+ ],
+ linkopts = select({
+ ":freebsd": ["-lm"],
+ "//conditions:default": [],
+ }),
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":combiners",
+ ":desugar_checking",
+ ":options",
+ ":output_jar",
+ "//java_tools/zlib",
+ ],
+)
+
+cc_library(
+ name = "combiners",
+ srcs = [
+ "java_tools/src/tools/singlejar/combiners.cc",
+ ":transient_bytes",
+ ":zip_headers",
+ ],
+ hdrs = ["java_tools/src/tools/singlejar/combiners.h"],
+ strip_include_prefix = "java_tools",
+ deps = [
+ "//java_tools/zlib",
+ ],
+)
+
+proto_library(
+ name = "desugar_deps_proto",
+ srcs = ["java_tools/src/main/protobuf/desugar_deps.proto"]
+)
+
+cc_proto_library(
+ name = "desugar_deps_cc_proto",
+ deps = [":desugar_deps_proto"],
+)
+
+cc_library(
+ name = "desugar_checking",
+ srcs = ["java_tools/src/tools/singlejar/desugar_checking.cc"],
+ hdrs = ["java_tools/src/tools/singlejar/desugar_checking.h"],
+ strip_include_prefix = "java_tools",
+ deps = [
+ ":combiners",
+ ":desugar_deps_cc_proto",
+ ],
+)
+
+cc_library(
+ name = "diag",
+ hdrs = ["java_tools/src/tools/singlejar/diag.h"],
+ strip_include_prefix = "java_tools",
+ visibility = ["//visibility:private"],
+)
+
+cc_library(
+ name = "singlejar_port",
+ hdrs = ["java_tools/src/tools/singlejar/port.h"],
+ strip_include_prefix = "java_tools",
+ visibility = ["//visibility:private"],
+)
+
+cc_library(
+ name = "mapped_file",
+ srcs = ["java_tools/src/tools/singlejar/mapped_file.cc"] + select({
+ ":windows": ["java_tools/src/tools/singlejar/mapped_file_windows.inc"],
+ "//conditions:default": ["java_tools/src/tools/singlejar/mapped_file_posix.inc"],
+ }),
+ hdrs = ["java_tools/src/tools/singlejar/mapped_file.h"],
+ visibility = ["//visibility:private"],
+ strip_include_prefix = "java_tools",
+ deps = [
+ ":diag",
+ ":singlejar_port",
+ "//src/main/cpp/util",
+ ],
+)
+
+cc_library(
+ name = "input_jar",
+ srcs = [
+ "java_tools/src/tools/singlejar/input_jar.cc",
+ ],
+ hdrs = [
+ "java_tools/src/tools/singlejar/input_jar.h",
+ "java_tools/src/tools/singlejar/zip_headers.h",
+ ],
+ deps = [
+ ":diag",
+ ":mapped_file",
+ ],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "options",
+ srcs = [
+ "java_tools/src/tools/singlejar/options.cc",
+ "java_tools/src/tools/singlejar/options.h",
+ ],
+ hdrs = ["java_tools/src/tools/singlejar/options.h"],
+ deps = [
+ ":diag",
+ ":token_stream",
+ ],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "output_jar",
+ srcs = [
+ "java_tools/src/tools/singlejar/output_jar.cc",
+ "java_tools/src/tools/singlejar/output_jar.h",
+ ":zip_headers",
+ ],
+ hdrs = ["java_tools/src/tools/singlejar/output_jar.h"],
+ deps = [
+ ":combiners",
+ ":diag",
+ ":input_jar",
+ ":mapped_file",
+ ":options",
+ ":singlejar_port",
+ "//src/main/cpp/util",
+ "//java_tools/zlib",
+ ],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "token_stream",
+ hdrs = ["java_tools/src/tools/singlejar/token_stream.h"],
+ deps = [":diag"],
+ strip_include_prefix = "java_tools",
+)
+
+filegroup(
+ name = "transient_bytes",
+ srcs = [
+ "java_tools/src/tools/singlejar/diag.h",
+ "java_tools/src/tools/singlejar/transient_bytes.h",
+ "java_tools/src/tools/singlejar/zlib_interface.h",
+ ":zip_headers",
+ ],
+)
+
+filegroup(
+ name = "zip_headers",
+ srcs = ["java_tools/src/tools/singlejar/zip_headers.h"],
+)