diff --git a/.bazelversion b/.bazelversion index f22d756da..18bb4182d 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -6.5.0 +7.5.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81694b6f1..d30dd2465 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ on: - 'axt_**_release_branch' env: - cache-version: v1 + cache-version: v2 jobs: build: @@ -20,11 +20,11 @@ jobs: steps: - name: Check out repository code uses: actions/checkout@v4 - - name: Install Java 17 + - name: Install Java 21 uses: actions/setup-java@v4 with: distribution: 'zulu' - java-version: '17' + java-version: '21' - name: 'Cache Bazel files' uses: actions/cache@v4 with: @@ -46,14 +46,8 @@ jobs: name: local-snapshot path: ~/download - name: 'Clean bazel cache' - # Don't cache the bazel/external directory, since it can be > 2GB - # and is expensive to restore and save - # According to the documentation, we should be able to exclude these via - # the actions/cache path, e.g. "!~/.cache/bazel/*/*/external/" but that - # doesn't seem to work. run: | rm -rf $(bazel info repository_cache) - rm -rf ~/.cache/bazel/*/*/external/ shell: bash test: runs-on: ubuntu-latest @@ -77,14 +71,8 @@ jobs: run: bazelisk test --test_tag_filters=robolectric,fast --build_tag_filters=robolectric,fast --test_output=all ... shell: bash - name: 'Clean bazel cache' - # Don't cache the bazel/external directory, since it can be > 2GB - # and is expensive to restore and save - # According to the documentation, we should be able to exclude these via - # the actions/cache path, e.g. "!~/.cache/bazel/*/*/external/" but that - # doesn't seem to work. run: | rm -rf $(bazel info repository_cache) - rm -rf ~/.cache/bazel/*/*/external/ shell: bash gradle-emulator-test: runs-on: ubuntu-latest diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 000000000..887c8b28f --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,89 @@ +# These need needs to be consistent with their counterparts in build_extensions/axt_deps_versions.bzl. +KOTLIN_VERSION = "2.1.0" +KOTLINX_COROUTINES_VERSION = "1.7.1" + +bazel_dep(name = "rules_java", version = "8.6.0") +bazel_dep(name = "rules_jvm_external", version = "6.6") +bazel_dep(name = "rules_android", version = "0.6.3", repo_name = "build_bazel_rules_android") +bazel_dep(name = "rules_kotlin", version = "2.1.3", repo_name = "io_bazel_rules_kotlin") +bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf") +bazel_dep(name = "grpc-java", version = "1.68.1") +bazel_dep(name = "rules_robolectric", version = "4.14.1.2", repo_name = "robolectric") + +# Pin the version of rules_robolectric so that it matches the robolectric version we get from maven. +single_version_override( + module_name = "rules_robolectric", + version = "4.14.1.2", +) + +# maven dependencies +maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") + +maven.artifact( + artifact = "accessibility-test-framework", + # exclude the org.checkerframework dependency since that require + # java8 compatibility. See b/176926990 + # accessibility-test-framework depends on hamcrest 2.2 which causes 'Using type org.hamcrest.Matcher from an indirect dependency' compile errors + exclusions = [ + "org.checkerframework:checker", + "org.hamcrest:hamcrest-core", + "org.hamcrest:hamcrest-library", + ], + group = "com.google.android.apps.common.testing.accessibility.framework", + version = "3.1.2", +) + +maven.install( + name = "maven", + artifacts = [ + "androidx.annotation:annotation:1.7.0-beta01", + "androidx.concurrent:concurrent-futures:1.1.0", + "androidx.concurrent:concurrent-futures-ktx:1.1.0", + "androidx.core:core:1.6.0", + "androidx.lifecycle:lifecycle-common:2.3.1", + "androidx.multidex:multidex:2.0.0", + "androidx.tracing:tracing:1.1.0", + "androidx.window:window-java:1.1.0", + "androidx.window:window-core:1.1.0", + "com.google.dagger:dagger-compiler:2.46", + "com.google.dagger:dagger-producers:2.46", + "com.google.dagger:dagger:2.46", + "com.google.googlejavaformat:google-java-format:1.4", + "com.squareup:javapoet:1.9.0", + "io.grpc:grpc-okhttp:1.54.1", + "io.grpc:grpc-stub:1.54.1", + "junit:junit:4.13.2", + "org.ccil.cowan.tagsoup:tagsoup:1.2.1", + "org.hamcrest:hamcrest-library:1.3", + "org.pantsbuild:jarjar:1.7.2", + "org.jetbrains.kotlin:kotlin-stdlib:%s" % KOTLIN_VERSION, + "org.jetbrains.kotlinx:kotlinx-coroutines-core:%s" % KOTLINX_COROUTINES_VERSION, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:%s" % KOTLINX_COROUTINES_VERSION, + "org.jetbrains.kotlinx:kotlinx-coroutines-android:%s" % KOTLINX_COROUTINES_VERSION, + "org.robolectric:robolectric:4.14.1", + ], + fetch_sources = True, + repositories = [ + "https://maven.google.com", + "https://repo1.maven.org/maven2", + "https://dl.bintray.com/linkedin/maven", + ], +) + +use_repo(maven, "maven") + +# need to have a isolated version tree for listenablefuture, because otherwise +# listenablefuture will get resolved to 9999.0-empty-to-avoid-conflict-with-guava +maven.install( + name = "maven_listenablefuture", + artifacts = [ + "com.google.guava:listenablefuture:1.0", + ], + repositories = [ + "https://maven.google.com", + "https://repo1.maven.org/maven2", + "https://dl.bintray.com/linkedin/maven", + ], +) +use_repo(maven, "maven_listenablefuture") + diff --git a/WORKSPACE b/WORKSPACE index 9e930ec78..79c519cc3 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,291 +1,12 @@ -# TODO(b/114418172): rename to androidx_test. Requires a bazel change -workspace(name = "android_test_support") +############################# +# Load Android Sd +############################# -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "rules_java", - url = "https://github.com/bazelbuild/rules_java/releases/download/5.3.5/rules_java-5.3.5.tar.gz", - sha256 = "c73336802d0b4882e40770666ad055212df4ea62cfa6edf9cb0f9d29828a0934", -) - -RULES_JVM_EXTERNAL_TAG = "4.5" - -RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6" - -# These need needs to be consistent with their counterparts in build_extensions/axt_deps_versions.bzl. -KOTLIN_VERSION = "1.8.20" -KOTLINX_COROUTINES_VERSION = "1.7.1" -GRPC_VERSION = "1.54.1" - -# Get from https://github.com/JetBrains/kotlin/releases/ -KOTLINC_RELEASE_SHA = "10df74c3c6e2eafd4c7a5572352d37cbe41774996e42de627023cb4c82b50ae4" - -http_archive( - name = "rules_jvm_external", - sha256 = RULES_JVM_EXTERNAL_SHA, - strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, - url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, -) - -# protobuf defines proto_library, as well as @com_google_protobuf_javalite -http_archive( - name = "com_google_protobuf", - sha256 = "7c3ebd7aaedd86fa5dc479a0fda803f602caaf78d8aff7ce83b89e1b8ae7442a", - strip_prefix = "protobuf-28.3", - urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protobuf-28.3.tar.gz"], -) - -load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") -protobuf_deps() - -load("@rules_python//python:repositories.bzl", "py_repositories") -py_repositories() - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -load("@rules_jvm_external//:defs.bzl", "maven_install") -load("@rules_jvm_external//:specs.bzl", "maven") -load( - "//build_extensions:axt_deps_versions.bzl", - "ANDROIDX_ANNOTATION_EXPERIMENTAL_VERSION", - "ANDROIDX_ANNOTATION_VERSION", - "ANDROIDX_COMPAT_VERSION", - "ANDROIDX_CONCURRENT_VERSION", - "ANDROIDX_CORE_VERSION", - "ANDROIDX_CURSOR_ADAPTER_VERSION", - "ANDROIDX_DRAWER_LAYOUT_VERSION", - "ANDROIDX_FRAGMENT_VERSION", - "ANDROIDX_LEGACY_SUPPORT_VERSION", - "ANDROIDX_LIFECYCLE_VERSION", - "ANDROIDX_MULTIDEX_VERSION", - "ANDROIDX_RECYCLERVIEW_VERSION", - "ANDROIDX_TRACING_VERSION", - "ANDROIDX_VIEWPAGER_VERSION", - "ANDROIDX_WINDOW_VERSION", - "GOOGLE_MATERIAL_VERSION", - "GUAVA_LISTENABLEFUTURE_VERSION", - "GUAVA_VERSION", - "JUNIT_VERSION", - "UIAUTOMATOR_VERSION", - "ATF_VERSION" -) - -# gRPC -http_archive( - name = "io_grpc_grpc_java", - sha256 = "98c32df8a878cbca5a6799922d28e9df93a4d5607316e0e3f8269a5886d9e429", - strip_prefix = "grpc-java-%s" % GRPC_VERSION, - url = "https://github.com/grpc/grpc-java/archive/v%s.tar.gz" % GRPC_VERSION, -) - -load("@io_grpc_grpc_java//:repositories.bzl", "grpc_java_repositories") - -grpc_java_repositories() - -maven_install( - name = "maven", - artifacts = [ - "androidx.annotation:annotation:" + ANDROIDX_ANNOTATION_VERSION, - "androidx.annotation:annotation-experimental:jar:" + ANDROIDX_ANNOTATION_EXPERIMENTAL_VERSION, - "androidx.appcompat:appcompat:" + ANDROIDX_COMPAT_VERSION, - "androidx.concurrent:concurrent-futures:" + ANDROIDX_CONCURRENT_VERSION, - "androidx.concurrent:concurrent-futures-ktx:" + ANDROIDX_CONCURRENT_VERSION, - "androidx.core:core:" + ANDROIDX_CORE_VERSION, - "androidx.cursoradapter:cursoradapter:" + ANDROIDX_CURSOR_ADAPTER_VERSION, - "androidx.drawerlayout:drawerlayout:" + ANDROIDX_DRAWER_LAYOUT_VERSION, - "androidx.fragment:fragment:" + ANDROIDX_FRAGMENT_VERSION, - "androidx.legacy:legacy-support-core-ui:" + ANDROIDX_LEGACY_SUPPORT_VERSION, - "androidx.legacy:legacy-support-core-utils:" + ANDROIDX_LEGACY_SUPPORT_VERSION, - "androidx.legacy:legacy-support-v4:" + ANDROIDX_LEGACY_SUPPORT_VERSION, - "androidx.lifecycle:lifecycle-common:" + ANDROIDX_LIFECYCLE_VERSION, - "androidx.multidex:multidex:" + ANDROIDX_MULTIDEX_VERSION, - "androidx.recyclerview:recyclerview:" + ANDROIDX_RECYCLERVIEW_VERSION, - "androidx.tracing:tracing:" + ANDROIDX_TRACING_VERSION, - "androidx.test.uiautomator:uiautomator:" + UIAUTOMATOR_VERSION, - "androidx.viewpager:viewpager:" + ANDROIDX_VIEWPAGER_VERSION, - "androidx.window:window:" + ANDROIDX_WINDOW_VERSION, - "androidx.window:window-java:" + ANDROIDX_WINDOW_VERSION, - "androidx.window:window-core:" + ANDROIDX_WINDOW_VERSION, - "aopalliance:aopalliance:1.0", - "com.android.tools.lint:lint-api:30.1.0", - "com.android.tools.lint:lint-checks:30.1.0", - "com.beust:jcommander:1.72", - maven.artifact( - artifact = "accessibility-test-framework", - exclusions = [ - # exclude the org.checkerframework dependency since that require - # java8 compatibility. See b/176926990 - maven.exclusion( - artifact = "checker", - group = "org.checkerframework", - ), - # accessibility-test-framework depends on hamcrest 2.2 which causes 'Using type org.hamcrest.Matcher from an indirect dependency' compile errors - maven.exclusion( - artifact = "hamcrest-core", - group = "org.hamcrest", - ), - maven.exclusion( - artifact = "hamcrest-library", - group = "org.hamcrest", - ), - ], - group = "com.google.android.apps.common.testing.accessibility.framework", - version = ATF_VERSION, - ), - "com.google.android.material:material:" + GOOGLE_MATERIAL_VERSION, - "com.google.auto.value:auto-value:1.5.1", - "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.8.5", - "com.google.dagger:dagger-compiler:2.46", - "com.google.dagger:dagger-producers:2.46", - "com.google.dagger:dagger:2.46", - "com.google.errorprone:error_prone_annotations:2.9.0", - "com.google.errorprone:javac-shaded:9-dev-r4023-3", - "com.google.flogger:flogger-system-backend:0.4", - "com.google.flogger:flogger:0.4", - "com.google.flogger:google-extensions:0.4", - "com.google.googlejavaformat:google-java-format:1.4", - "com.google.guava:guava:" + GUAVA_VERSION, - "com.google.guava:listenablefuture:" + GUAVA_LISTENABLEFUTURE_VERSION, - "com.google.inject.extensions:guice-multibindings:4.1.0", - "com.google.inject:guice:4.1.0", - "com.google.truth:truth:1.0", - "com.googlecode.jarjar:jarjar:1.3", - "com.linkedin.dexmaker:dexmaker-mockito:jar:2.28.1", - "com.linkedin.dexmaker:dexmaker:2.28.1", - "org.mockito.kotlin:mockito-kotlin:4.1.0", - "com.squareup:javapoet:1.9.0", - "io.grpc:grpc-okhttp:1.54.1", - "io.grpc:grpc-stub:1.54.1", - "org.apache.tomcat:annotations-api:6.0.53", - "javax.annotation:javax.annotation-api:1.3.1", - "javax.inject:javax.inject:1", - "joda-time:joda-time:2.10.1", - "junit:junit:" + JUNIT_VERSION, - "net.bytebuddy:byte-buddy-agent:1.9.10", - "net.bytebuddy:byte-buddy:1.9.10", - "net.sf.kxml:kxml2:jar:2.3.0", - "org.ccil.cowan.tagsoup:tagsoup:1.2.1", - "org.checkerframework:checker-compat-qual:2.5.5", - "org.hamcrest:hamcrest-core:1.3", - "org.hamcrest:hamcrest-library:1.3", - "org.mockito:mockito-core:2.28.1", - "org.objenesis:objenesis:2.6", - "org.pantsbuild:jarjar:1.7.2", - "org.jetbrains.kotlin:kotlin-stdlib:%s" % KOTLIN_VERSION, - "org.jetbrains.kotlinx:kotlinx-coroutines-core:%s" % KOTLINX_COROUTINES_VERSION, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:%s" % KOTLINX_COROUTINES_VERSION, - "org.jetbrains.kotlinx:kotlinx-coroutines-android:%s" % KOTLINX_COROUTINES_VERSION, - maven.artifact( - artifact = "robolectric", - exclusions = [ - # exclude the com.google.guava dependency since that require - # java8 compatibility. - maven.exclusion( - artifact = "guava", - group = "com.google.guava", - ), - ], - group = "org.robolectric", - version = "4.13", - ), - ], - fetch_sources = True, - generate_compat_repositories = True, - repositories = [ - "https://maven.google.com", - "https://repo1.maven.org/maven2", - "https://dl.bintray.com/linkedin/maven", - ], -) - -# need to have a isolated version tree for listenablefuture, because otherwise -# listenablefuture will get resolved to 9999.0-empty-to-avoid-conflict-with-guava -maven_install( - name = "maven_listenablefuture", - artifacts = [ - "com.google.guava:listenablefuture:" + GUAVA_LISTENABLEFUTURE_VERSION, - ], - repositories = [ - "https://maven.google.com", - "https://repo1.maven.org/maven2", - "https://dl.bintray.com/linkedin/maven", - ], -) +# This is needed by rules_kotlin. +# TODO(brettchabot): move this to MODULE.bzlmod android_sdk_repository( name = "androidsdk", api_level = 35, build_tools_version = "35.0.0", ) - -load("//:repo.bzl", "android_test_repositories") - -android_test_repositories(with_dev_repositories = True) - -load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories") - -robolectric_repositories() - -# Kotlin toolchains - -rules_kotlin_version = "1.8-RC-12" -rules_kotlin_sha = "8e5c8ab087e0fa3fbb58e1f6b99d8fe40f75bac44994c3d208eba723284465d6" - -http_archive( - name = "io_bazel_rules_kotlin", - sha256 = rules_kotlin_sha, - urls = ["https://github.com/bazelbuild/rules_kotlin/releases/download/v%s/rules_kotlin_release.tgz" % rules_kotlin_version], -) - -load("@io_bazel_rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "kotlinc_version") - -kotlin_repositories( - compiler_release = kotlinc_version( - release = KOTLIN_VERSION, - sha256 = KOTLINC_RELEASE_SHA, - ), -) - -load("@io_bazel_rules_kotlin//kotlin:core.bzl", "kt_register_toolchains") - -kt_register_toolchains() - -# Android bazel rules from Dec 22 2022. This is the last commit that supports bazel 6.0.0 -RULES_ANDROID_COMMIT = "ce37817d8589cac4a7cc20cb4d51fe8ad459dea1" - -RULES_ANDROID_SHA = "402b1ed3756028dca11835dad3225689a4040c3b377de798709f9a39b5c6af17" - -http_archive( - name = "rules_android", - sha256 = RULES_ANDROID_SHA, - strip_prefix = "rules_android-%s" % RULES_ANDROID_COMMIT, - url = "https://github.com/bazelbuild/rules_android/archive/%s.zip" % RULES_ANDROID_COMMIT, -) - -load("@rules_android//:prereqs.bzl", "rules_android_prereqs") - -rules_android_prereqs() - -load("@rules_android//:defs.bzl", "rules_android_workspace") - -rules_android_workspace() - -register_toolchains( - "@rules_android//toolchains/android:android_default_toolchain", - "@rules_android//toolchains/android_sdk:android_sdk_tools", -) - -# Updated 2023-02-01 -http_archive( - name = "rules_license", - sha256 = "6157e1e68378532d0241ecd15d3c45f6e5cfd98fc10846045509fb2a7cc9e381", - urls = [ - "https://github.com/bazelbuild/rules_license/releases/download/0.0.4/rules_license-0.0.4.tar.gz", - ], -) - -load("@maven//:compat.bzl", "compat_repositories") - -compat_repositories() diff --git a/build_extensions/android_library_test.bzl b/build_extensions/android_library_test.bzl index ecd91a5a3..4bf96b550 100644 --- a/build_extensions/android_library_test.bzl +++ b/build_extensions/android_library_test.bzl @@ -1,6 +1,6 @@ """Wrapper around for android_library_test that adds additionsl features.""" -load("@build_bazel_rules_android//android:rules.bzl", "android_library") +load("//build_extensions:kt_android_library.bzl", "kt_android_library") def axt_android_library_test( name, @@ -18,7 +18,12 @@ def axt_android_library_test( Currently only generates an android_library """ - android_library( + # always define a manifest to work around 'manifest is required when resource_files or assets are defined.' inherent + # kit_android_library + if not manifest: + manifest = "//build_extensions:AndroidManifest_instrumentation_test_template.xml" + + kt_android_library( name = "%s_lib" % name, srcs = srcs, exports_manifest = True, diff --git a/build_extensions/axt_android_local_test.bzl b/build_extensions/axt_android_local_test.bzl index 7d2af922d..9e1e8ccc7 100644 --- a/build_extensions/axt_android_local_test.bzl +++ b/build_extensions/axt_android_local_test.bzl @@ -2,6 +2,7 @@ load("@io_bazel_rules_kotlin//kotlin:android.bzl", "kt_android_library") load("//build_extensions:create_jar.bzl", "create_jar") +load("@build_bazel_rules_android//android:rules.bzl", "android_local_test", "android_library") def axt_android_local_test(name, srcs = [], deps = [], manifest = "//build_extensions:AndroidManifest_robolectric.xml", tags = ["robolectric"], **kwargs): """A wrapper around android_local_test that provides sensible defaults for androidx.test. @@ -41,12 +42,12 @@ def axt_android_local_test(name, srcs = [], deps = [], manifest = "//build_exten exports_manifest = True, manifest = manifest, deps = deps, - testonly = 1, + testonly = True, ) deps = [":%s_kt_lib" % name] srcs = [] - native.android_local_test( + android_local_test( name = name, srcs = srcs, tags = tags, diff --git a/build_extensions/maven/axt_android_aar.bzl b/build_extensions/maven/axt_android_aar.bzl index 6497a9894..b7c0b41dd 100644 --- a/build_extensions/maven/axt_android_aar.bzl +++ b/build_extensions/maven/axt_android_aar.bzl @@ -5,6 +5,7 @@ load("//build_extensions/maven:add_or_update_file_in_zip.bzl", "add_or_update_fi load("//build_extensions/maven:combine_jars.bzl", "combine_jars") load("//build_extensions/maven:jarjar.bzl", "jarjar_rule") load("//build_extensions/maven:maven_info.bzl", "MavenFilesInfo", "MavenInfo", "collect_maven_info") +load("@build_bazel_rules_android//providers:providers.bzl", "AndroidLibraryAarInfo") def _android_aar_impl(ctx): # current_aar will include almost everything needed: an AndroidManifest.xml, compiled resources, diff --git a/build_extensions/maven/axt_maven_apk.bzl b/build_extensions/maven/axt_maven_apk.bzl index 76838bbe6..549eacecf 100644 --- a/build_extensions/maven/axt_maven_apk.bzl +++ b/build_extensions/maven/axt_maven_apk.bzl @@ -3,6 +3,7 @@ load("@rules_java//java:defs.bzl", "JavaInfo") load("//build_extensions/maven:combine_jars.bzl", "combine_jars") load("//build_extensions/maven:maven_info.bzl", "MavenFilesInfo", "MavenInfo", "collect_maven_apk_info") +load("@build_bazel_rules_android//providers:providers.bzl", "ApkInfo") def _axt_maven_apk_impl(ctx): # produce src jar diff --git a/build_extensions/maven/maven_artifact.bzl b/build_extensions/maven/maven_artifact.bzl index 77596f902..fecdc72d7 100644 --- a/build_extensions/maven/maven_artifact.bzl +++ b/build_extensions/maven/maven_artifact.bzl @@ -156,11 +156,18 @@ def _create_exclusions_string(group_id, artifact_id, excluded_dependencies_map): return _exclusions_tmpl.format(exclusion = excluded_dependencies_string) def _parse_artifact_versioning(artifact_coordinates): - """Parse out artifact_id, version and group info from a full coordinate string""" - if artifact_coordinates.count(":") != 2: - fail("artifact_deps values must be of form: groupId:artifactId:version. Found %s" % artifact_coordinates) + """Parse out artifact_id, version and group info from a full coordinate strings. - return artifact_coordinates.split(":") + Expected format groupId:artifactId:[type:]version + """ + segments = artifact_coordinates.split(":") + if len(segments) == 3: + return segments + elif len(segments) == 4: + return segments[0],segments[1],segments[3] + + fail("artifact_deps values must be of form: groupId:artifactId:[type:]version. Found %s" % artifact_coordinates) + return segments def _parse_group_artifact(artifact_coordinates): """Parse out artifact_id, and group info from a coordinate string""" diff --git a/build_extensions/maven/maven_info.bzl b/build_extensions/maven/maven_info.bzl index d82ecb748..f26849306 100644 --- a/build_extensions/maven/maven_info.bzl +++ b/build_extensions/maven/maven_info.bzl @@ -150,7 +150,7 @@ def _isJavaProtoTarget(all_deps): def _findGrpcJavaProtoJar(target): for jar in target[JavaInfo].transitive_runtime_jars.to_list(): - if "io_grpc_grpc_java/protobuf-lite" in jar.path: + if "grpc-java/protobuf-lite" in jar.path: return jar return None diff --git a/build_extensions/maven/maven_registry.bzl b/build_extensions/maven/maven_registry.bzl index 5778117a9..4931c30f6 100644 --- a/build_extensions/maven/maven_registry.bzl +++ b/build_extensions/maven/maven_registry.bzl @@ -45,11 +45,18 @@ _TARGET_TO_MAVEN_ARTIFACT = { "//services/events/java/": "androidx.test:runner:%s" % RUNNER_VERSION, "//services:test_services": "androidx.test.services:test-services:%s" % SERVICES_VERSION, "//runner/android_test_orchestrator/stubapp:stubapp": "androidx.test:orchestrator:%s" % ORCHESTRATOR_VERSION, + + "@@grpc-java~//okhttp:okhttp": "io.grpc:grpc-okhttp:1.54.1", + "@@grpc-java~//api": "io.grpc:grpc-stub:1.54.1", + "@@grpc-java~//core": "io.grpc:grpc-stub:1.54.1", + "@@grpc-java~//context": "io.grpc:grpc-stub:1.54.1", + "@@grpc-java~//util": "io.grpc:grpc-stub:1.54.1", + "@@grpc-java~//stub": "io.grpc:grpc-stub:1.54.1", } _SHADED_TARGETS = [ "@com_google_protobuf//:protobuf_javalite", - "@com_google_protobuf//java/core:lite", + "@@protobuf~//java/core:lite", "//opensource/proto:any_java_proto_lite", "@com_google_protobuf//:any_proto", "//opensource/dagger:dagger", @@ -110,6 +117,6 @@ def is_shaded_from_label(label): renamed via jarjar. """ - # bazel 6.0.0 mysteriously prefixes a '@' onto //opensource/dagger, so just remove it - string_label = str(label).replace("@//", "//") + # bazel mysteriously prefixes a '@' onto //opensource/dagger, sometimes two, so just remove it + string_label = str(label).replace("@//", "//").replace("@//", "//") return string_label in _SHADED_TARGETS diff --git a/gradle-tests/build.gradle b/gradle-tests/build.gradle index 0bca6ec73..0d96133e1 100644 --- a/gradle-tests/build.gradle +++ b/gradle-tests/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id 'com.android.library' version '8.5.0' apply false - id 'org.jetbrains.kotlin.android' version '1.9.22' apply false + id 'org.jetbrains.kotlin.android' version '2.1.0' apply false } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions { diff --git a/opensource/emulator/proto/BUILD b/opensource/emulator/proto/BUILD index 766e55096..8a40a788f 100644 --- a/opensource/emulator/proto/BUILD +++ b/opensource/emulator/proto/BUILD @@ -1,6 +1,6 @@ # Protos for interacting with emulator -load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library") +load("@grpc-java//:java_grpc_library.bzl", "java_grpc_library") package( default_applicable_licenses = ["//espresso:license"], diff --git a/runner/android_junit_runner/java/androidx/test/BUILD b/runner/android_junit_runner/java/androidx/test/BUILD index 1de888ecf..b2405d67d 100644 --- a/runner/android_junit_runner/java/androidx/test/BUILD +++ b/runner/android_junit_runner/java/androidx/test/BUILD @@ -35,6 +35,7 @@ android_library( proguard_specs = [ "proguard_library.cfg", ], + testonly = 1, exports = [ "//runner/monitor", ], @@ -60,12 +61,14 @@ axt_android_aar( "androidx.test.filters", ], included_dep = ":runner", + testonly = 1, ) maven_artifact( name = "runner_maven_artifact", last_updated = "20170622000000", target = ":runner_aar", + testonly = 1, ) dackka_test( diff --git a/runner/android_junit_runner/javatests/androidx/test/internal/events/client/BUILD b/runner/android_junit_runner/javatests/androidx/test/internal/events/client/BUILD index 797694268..494f542ac 100644 --- a/runner/android_junit_runner/javatests/androidx/test/internal/events/client/BUILD +++ b/runner/android_junit_runner/javatests/androidx/test/internal/events/client/BUILD @@ -27,7 +27,6 @@ axt_android_local_test( android_library( name = "sampletest", - testonly = 1, srcs = ["SampleJUnitTest.java"], deps = ["@maven//:junit_junit"], ) diff --git a/runner/android_test_orchestrator/java/androidx/test/orchestrator/BUILD b/runner/android_test_orchestrator/java/androidx/test/orchestrator/BUILD index 656289efa..5414fd54f 100644 --- a/runner/android_test_orchestrator/java/androidx/test/orchestrator/BUILD +++ b/runner/android_test_orchestrator/java/androidx/test/orchestrator/BUILD @@ -18,6 +18,7 @@ android_library( visibility = [ ":export", ], + testonly = 1, deps = [ "//opensource/androidx:annotation", "//runner/android_junit_runner", diff --git a/runner/rules/BUILD b/runner/rules/BUILD index 9414d699d..c843dc4a5 100644 --- a/runner/rules/BUILD +++ b/runner/rules/BUILD @@ -13,5 +13,6 @@ licenses(["notice"]) java_library( name = "rules", visibility = ["//visibility:public"], + testonly = 1, exports = ["//runner/rules/java/androidx/test:rules"], ) diff --git a/runner/rules/java/androidx/test/BUILD b/runner/rules/java/androidx/test/BUILD index 181578964..481677252 100644 --- a/runner/rules/java/androidx/test/BUILD +++ b/runner/rules/java/androidx/test/BUILD @@ -25,6 +25,7 @@ android_library( proguard_specs = [ "proguard.cfg", ], + testonly = 1, deps = [ "//opensource/androidx:annotation", "//runner/android_junit_runner", diff --git a/services/BUILD b/services/BUILD index df41f2d0c..4d0bfd67b 100644 --- a/services/BUILD +++ b/services/BUILD @@ -26,7 +26,7 @@ exports_files(["LICENSE"]) android_binary( name = "test_services", custom_package = "androidx.test.services", - licenses = ["permissive"], +# licenses = ["permissive"], main_dex_proguard_specs = ["//build_extensions:mainDexClasses.rules"], manifest = "AndroidManifest.xml", manifest_values = { diff --git a/services/events/java/androidx/test/services/events/BUILD b/services/events/java/androidx/test/services/events/BUILD index a25676d79..b45dbd7a4 100644 --- a/services/events/java/androidx/test/services/events/BUILD +++ b/services/events/java/androidx/test/services/events/BUILD @@ -23,6 +23,7 @@ android_library( "platform/ITestPlatformEvent.aidl", "run/ITestRunEvent.aidl", ], + testonly = 1, deps = [ "//opensource/androidx:annotation", "//runner/monitor", diff --git a/services/shellexecutor/java/androidx/test/services/shellexecutor/BUILD b/services/shellexecutor/java/androidx/test/services/shellexecutor/BUILD index e1d5b78df..be4f1ffcb 100644 --- a/services/shellexecutor/java/androidx/test/services/shellexecutor/BUILD +++ b/services/shellexecutor/java/androidx/test/services/shellexecutor/BUILD @@ -2,6 +2,7 @@ load("@com_google_protobuf//bazel:java_lite_proto_library.bzl", "java_lite_proto load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") load("@rules_java//java:defs.bzl", "java_library") load("//build_extensions:kt_android_library.bzl", "kt_android_library") +load("@build_bazel_rules_android//android:rules.bzl", "android_library") # A shell command execution server to allow shell commands to be run at elevated permissions @@ -38,6 +39,12 @@ kt_android_library( ], ) +android_library( + name = "exec_idl", + idl_srcs = ["Command.aidl"], + visibility = ["//visibility:private"], +) + kt_android_library( name = "exec_server", srcs = [ @@ -50,9 +57,9 @@ kt_android_library( "ShellExecSharedConstants.java", "ShellMain.java", ], - idl_srcs = ["Command.aidl"], visibility = [":export"], deps = [ + ":exec_idl", ":local_socket_protocol", ":local_socket_protocol_pb_java_proto_lite", "//services/speakeasy/java/androidx/test/services/speakeasy:protocol", @@ -77,9 +84,9 @@ kt_android_library( "ShellExecutorImpl.java", "ShellExecutorLocalSocketImpl.kt", ], - idl_srcs = ["Command.aidl"], visibility = [":export"], deps = [ + ":exec_idl", ":local_socket_protocol", ":local_socket_protocol_pb_java_proto_lite", "//services/speakeasy/java/androidx/test/services/speakeasy:protocol",