Skip to content

Commit

Permalink
Merge #265 by ted-xie: Misc changes to un-break BazelCI
Browse files Browse the repository at this point in the history
* Add explicit loads for java_* rules
* Add explicit loads for sh_binary (and rules_shell)
* Use singlejar to re-package classfiles

Command to add all the loads: `bazelisk query 'kind(sh_binary,...)' | sed "s/:.*/:__pkg__/" | sort | uniq | xargs -I {} buildozer 'new_load @rules_shell//shell:sh_binary.bzl sh_binary' {}`
Closes #265

COPYBARA_INTEGRATE_REVIEW=#265 from ted-xie:fix_bazelci 6b0fb6e
PiperOrigin-RevId: 685843005
Change-Id: I163466cd8b02dc4e46e80812fa5756bdf8997e6e
  • Loading branch information
ted-xie authored and copybara-github committed Oct 14, 2024
1 parent 4ad81c8 commit d9f3217
Show file tree
Hide file tree
Showing 28 changed files with 123 additions and 56 deletions.
4 changes: 2 additions & 2 deletions .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---

bazel: last_green
bazel: 7.4.0rc1

tools_flags: &tools_flags
? "--enable_bzlmod=false"
Expand Down Expand Up @@ -154,4 +154,4 @@ tasks:
build_flags:
<<: *rules_flags
build_targets:
- "//java/com/basicapp:basic_app"
- "//java/com/basicapp:basic_app"
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7.2.1
7.4.0rc1
3 changes: 2 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module(
bazel_dep(name = "platforms", version = "0.0.5")
bazel_dep(name = "rules_license", version = "0.0.4")
bazel_dep(name = "rules_java", version = "7.11.1")
bazel_dep(name = "rules_shell", version = "0.1.2")

bazel_dep(name = "stardoc", version = "0.6.2", dev_dependency = True)
# Use a later commit until a version with table of contents, stamping, and
Expand Down Expand Up @@ -84,7 +85,7 @@ maven.install(
"org.robolectric:robolectric:4.10.3",
"com.google.flogger:flogger:0.8",
"com.google.guava:guava:32.1.2-jre",
"com.google.protobuf:protobuf-java-util:3.9.2",
"com.google.protobuf:protobuf-java-util:4.27.2",
"com.google.truth:truth:1.1.5",
"info.picocli:picocli:4.7.4",
"jakarta.inject:jakarta.inject-api:2.0.1",
Expand Down
27 changes: 26 additions & 1 deletion defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ load("@rules_jvm_external//:defs.bzl", "maven_install")
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_toolchains")
load("@rules_shell//shell:repositories.bzl", "rules_shell_dependencies", "rules_shell_toolchains")

def rules_android_workspace():
""" Sets up workspace dependencies for rules_android."""
Expand Down Expand Up @@ -57,7 +58,7 @@ def rules_android_workspace():
"org.robolectric:robolectric:4.10.3",
"com.google.flogger:flogger:0.8",
"com.google.guava:guava:32.1.2-jre",
"com.google.protobuf:protobuf-java-util:3.9.2",
"com.google.protobuf:protobuf-java-util:4.27.2",
"com.google.truth:truth:1.1.5",
"info.picocli:picocli:4.7.4",
"jakarta.inject:jakarta.inject-api:2.0.1",
Expand Down Expand Up @@ -106,6 +107,27 @@ def rules_android_workspace():
# NOTE: above lockfile currently disabled due to https://github.com/bazelbuild/rules_jvm_external/issues/1134.
)

maven_install(
# Specifically named since the worker API lib needs `@maven` to exist.
# All lines in the artifacts list must be tagged "bazel worker api" for
# the presubmit maven artifact consistency checker to pass.
name = "maven",
artifacts = [ # bazel worker api
"com.google.code.gson:gson:2.10.1", # bazel worker api
"com.google.errorprone:error_prone_annotations:2.23.0", # bazel worker api
"com.google.guava:guava:33.0.0-jre", # bazel worker api
"com.google.protobuf:protobuf-java:4.27.2", # bazel worker api
"com.google.protobuf:protobuf-java-util:4.27.2", # bazel worker api
"junit:junit:4.13.2", # bazel worker api
"org.mockito:mockito-core:5.4.0", # bazel worker api
"com.google.truth:truth:1.4.0", # bazel worker api
], # bazel worker api
aar_import_bzl_label = "@rules_android//rules:rules.bzl",
repositories = [
"https://repo1.maven.org/maven2",
"https://maven.google.com",
],
)
go_rules_dependencies()

_GO_TOOLCHAIN_VERSION = "1.22.4"
Expand Down Expand Up @@ -161,3 +183,6 @@ def rules_android_workspace():
# We recommend using the same version your team is already standardized on.
python_version = "3.11",
)

rules_shell_dependencies()
rules_shell_toolchains()
2 changes: 1 addition & 1 deletion kokoro/presubmit/presubmit_main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ function main() {
# Maven artifact consistency test
# The sed commands in the `<()` blocks extract the artifacts list from maven_install.
# `diff -w` compares the two files without whitespaces.
diff -w <(sed -n '/artifacts =/{:start /]/!{N;b start};/.*/p}' defs.bzl) <(sed -n '/artifacts =/{:start /]/!{N;b start};/.*/p}' MODULE.bazel)
diff -w <(sed -n '/artifacts =/{:start /]/!{N;b start};/.*/p}' defs.bzl | grep -v "bazel worker api") <(sed -n '/artifacts =/{:start /]/!{N;b start};/.*/p}' MODULE.bazel)

# Sync with bzlmod disabled to sniff out WORKSPACE issues
"$bazel" sync --noenable_bzlmod > /dev/null
Expand Down
26 changes: 14 additions & 12 deletions prereqs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ def rules_android_prereqs(dev_mode = False):
maybe(
http_archive,
name = "com_google_protobuf",
sha256 = "87407cd28e7a9c95d9f61a098a53cf031109d451a7763e7dd1253abf8b4df422",
strip_prefix = "protobuf-3.19.1",
urls = ["https://github.com/protocolbuffers/protobuf/archive/v3.19.1.tar.gz"],
sha256 = "b2340aa47faf7ef10a0328190319d3f3bee1b24f426d4ce8f4253b6f27ce16db",
strip_prefix = "protobuf-28.2",
urls = ["https://github.com/protocolbuffers/protobuf/archive/v28.2.tar.gz"],
)

maybe(
Expand Down Expand Up @@ -130,9 +130,9 @@ def rules_android_prereqs(dev_mode = False):
maybe(
http_archive,
name = "rules_proto",
sha256 = "303e86e722a520f6f326a50b41cfc16b98fe6d1955ce46642a5b7a67c11c0f5d",
strip_prefix = "rules_proto-6.0.0",
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.0/rules_proto-6.0.0.tar.gz",
sha256 = "6fb6767d1bef535310547e03247f7518b03487740c11b6c6adb7952033fe1295",
strip_prefix = "rules_proto-6.0.2",
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
)

maybe(
Expand All @@ -150,9 +150,6 @@ def rules_android_prereqs(dev_mode = False):
http_archive,
name = "bazel_worker_api",
strip_prefix = "bazel-worker-api-0.0.1/proto",
patch_cmds = [
"find . -name 'BUILD.bazel' -exec sed -i 's/maven/rules_android_maven/g' {} \\;",
],
urls = [
"https://github.com/bazelbuild/bazel-worker-api/releases/download/v0.0.1/bazel-worker-api-v0.0.1.tar.gz",
],
Expand All @@ -163,15 +160,20 @@ def rules_android_prereqs(dev_mode = False):
http_archive,
name = "bazel_worker_java",
strip_prefix = "bazel-worker-api-0.0.1/java",
patch_cmds = [
"find . -name 'BUILD.bazel' -exec sed -i 's/maven/rules_android_maven/g' {} \\;",
],
urls = [
"https://github.com/bazelbuild/bazel-worker-api/releases/download/v0.0.1/bazel-worker-api-v0.0.1.tar.gz",
],
sha256 = "b341e3fba0a3dd0ab7bfdc7e256fad711a1f9e9255563a74c305676046b5a184",
)

maybe(
http_archive,
name = "rules_shell",
sha256 = "a86bcdcfb7a14267fa81bd18e199a53315b864a89378a7eecd3db739bfa436e2",
strip_prefix = "rules_shell-0.1.2",
url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.1.2/rules_shell-v0.1.2.tar.gz",
)

_apksig_archive()

if dev_mode:
Expand Down
11 changes: 6 additions & 5 deletions rules/android_sdk_repository/helper.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
load("@local_config_platform//:constraints.bzl", "HOST_CONSTRAINTS")
load("@rules_android//rules:rules.bzl", "android_sdk")
load("@rules_java//java:defs.bzl", "java_binary", "java_import")
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")

def _bool_flag_impl(_unused_ctx):
pass
Expand Down Expand Up @@ -315,7 +316,7 @@ def create_android_sdk_rules(
]),
)

native.sh_binary(
sh_binary(
name = tool + "_binary",
srcs = [tool + "_runner.sh"],
data = [
Expand All @@ -341,7 +342,7 @@ def create_android_sdk_rules(
}),
)

native.sh_binary(
sh_binary(
name = "bash_fail",
srcs = [":generate_fail_sh"],
)
Expand All @@ -353,7 +354,7 @@ def create_android_sdk_rules(
executable = 1,
)

native.sh_binary(
sh_binary(
name = "windows_fail.cmd",
srcs = [":generate_fail_cmd"],
)
Expand Down Expand Up @@ -385,7 +386,7 @@ def create_android_sdk_rules(
]),
)

native.sh_binary(
sh_binary(
name = "main_dex_list_creator",
srcs = ["main_dex_list_creator.sh"],
data = [":main_dex_list_creator_java"],
Expand Down Expand Up @@ -563,7 +564,7 @@ def create_dummy_sdk_toolchain():
executable = 1,
)

native.sh_binary(name = "empty-binary", srcs = [":genrule"])
sh_binary(name = "empty-binary", srcs = [":genrule"])

android_sdk(
name = "sdk-dummy",
Expand Down
42 changes: 27 additions & 15 deletions src/tools/java/com/google/devtools/build/android/BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Actions for Android rules.

load("@rules_java//java:defs.bzl", "java_binary", "java_import", "java_library")
load("//tools/android:defs.bzl", "run_singlejar")

package(default_visibility = ["//visibility:public"])

Expand All @@ -24,47 +25,55 @@ java_binary(
runtime_deps = [":android_builder_lib"],
)

genrule(
run_singlejar(
name = "zip_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["zip.jar"],
cmd = "unzip -q $< 'com/google/devtools/build/zip/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "zip.jar",
include_prefixes = [
"com/google/devtools/build/zip/",
],
)

java_import(
name = "zip_jar",
jars = [":zip_jar_gen"],
)

genrule(
run_singlejar(
name = "singlejar_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["singlejar.jar"],
cmd = "unzip -q $< 'com/google/devtools/build/singlejar/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "singlejar.jar",
include_prefixes = [
"com/google/devtools/build/singlejar/",
],
)

java_import(
name = "singlejar_jar",
jars = [":singlejar_jar_gen"],
)

genrule(
run_singlejar(
name = "databinding_exec_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["databinding_exec.jar"],
cmd = "unzip -q $< 'android/databinding/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "databinding_exec.jar",
include_prefixes = [
"android/databinding/",
],
)

java_import(
name = "databinding_exec_jar",
jars = [":databinding_exec_jar_gen"],
)

genrule(
run_singlejar(
name = "kotlin_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["kotlin.jar"],
cmd = "unzip -q $< 'kotlin/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "kotlin.jar",
include_prefixes = [
"kotlin/",
],
)

java_import(
Expand Down Expand Up @@ -141,11 +150,14 @@ java_library(
],
)

genrule(
run_singlejar(
name = "android_common_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["android_common_exec.jar"],
cmd = "unzip -q $< 'com/google/wireless*.class' 'com/android/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "android_common_exec.jar",
include_prefixes = [
"com/google/wireless/",
"com/android/",
],
)

java_import(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Description:
# Tool for desugaring Java constructs not supported by Android tools or devices.

load("@rules_java//java:defs.bzl", "java_library")

java_library(
name = "desugar",
tags = ["manual"],
Expand Down
15 changes: 8 additions & 7 deletions src/tools/java/com/google/devtools/build/android/dexer/BUILD
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Description:
# Collection of dex utilities used in the bazel android actions.

load("@rules_java//java:defs.bzl", "java_import", "java_library")
load("@rules_java//java:defs.bzl", "java_binary", "java_import", "java_library")
load("//tools/android:defs.bzl", "run_singlejar")

filegroup(
name = "srcs",
Expand All @@ -12,11 +13,13 @@ filegroup(
],
)

genrule(
run_singlejar(
name = "android_dex_from_android_tools_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["android_dex_from_android_tools.jar"],
cmd = "unzip -q $< 'com/android/dex/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "android_dex_from_android_tools.jar",
include_prefixes = [
"com/android/dex/",
],
)

java_import(
Expand Down Expand Up @@ -80,10 +83,8 @@ java_library(
"//src/tools/java/com/google/devtools/build/android:__pkg__",
],
runtime_deps = [
"@bazel_tools//src/main/protobuf:worker_protocol_java_proto",
"//src/tools/java/com/google/devtools/build/android:android_builder_lib",
#"//third_party/android_dex", # For DexFileSplitter so that it doesn't rely on dx.
"@androidsdk//:dx_jar_import",
"@bazel_tools//src/main/protobuf:worker_protocol_java_proto",
"@rules_android_maven//:com_google_auto_value_auto_value",
"@rules_android_maven//:com_google_code_findbugs_jsr305",
"@rules_android_maven//:com_google_guava_guava",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
load("@rules_java//java:defs.bzl", "java_binary", "java_import", "java_library")
load("//tools/android:defs.bzl", "run_singlejar")

package(
default_applicable_licenses = ["//:license"],
Expand All @@ -13,11 +14,13 @@ java_binary(
)

# NOTE: jarhelper actually exists in @bazel_tools, but its visibility is set too restrictively.
genrule(
run_singlejar(
name = "jarhelper_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["jarhelper.jar"],
cmd = "unzip -q $< 'com/google/devtools/build/buildjar/jarhelper/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "jarhelper.jar",
include_prefixes = [
"com/google/devtools/build/buildjar/jarhelper/",
],
)

java_import(
Expand Down
11 changes: 7 additions & 4 deletions src/tools/java/com/google/devtools/build/android/junctions/BUILD
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
load("@rules_java//java:defs.bzl", "java_library")
load("@rules_java//java:defs.bzl", "java_import", "java_library")
load("//tools/android:defs.bzl", "run_singlejar")

package(default_visibility = ["//visibility:private"])

Expand Down Expand Up @@ -28,11 +29,13 @@ filegroup(
visibility = [":android-prod"],
)

genrule(
run_singlejar(
name = "windows_file_jar_gen",
srcs = ["@android_tools//:all_android_tools_deploy.jar"],
outs = ["windows_file.jar"],
cmd = "unzip -q $< 'com/google/devtools/build/lib/windows/*.class' && zip $@ $$(find . -name \"*.class\")",
out = "windows_file.jar",
include_prefixes = [
"com/google/devtools/build/lib/windows/",
],
)

java_import(
Expand Down
Loading

0 comments on commit d9f3217

Please sign in to comment.