diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index 9d3ca170..2a561c3d 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -4,12 +4,10 @@ bazel: last_green tools_flags: &tools_flags ? "--enable_bzlmod=false" - ? "--incompatible_enable_android_toolchain_resolution=false" # Sandboxed SDK tools depend on libraries that require Java runtime 17 or higher. ? "--java_runtime_version=17" rules_flags: &rules_flags ? "--enable_bzlmod=false" - ? "--incompatible_enable_android_toolchain_resolution=false" tools: &tools name: "Tools" diff --git a/kokoro/presubmit/presubmit_main.sh b/kokoro/presubmit/presubmit_main.sh index eb337489..f29d9690 100644 --- a/kokoro/presubmit/presubmit_main.sh +++ b/kokoro/presubmit/presubmit_main.sh @@ -99,11 +99,9 @@ function main() { "--java_language_version=11" "--java_runtime_version=17" "--noenable_bzlmod" - "--noincompatible_enable_android_toolchain_resolution" ) RULE_ARGS=( "--noenable_bzlmod" - "--noincompatible_enable_android_toolchain_resolution" ) # Go to rules_android workspace and run relevant tests. diff --git a/rules/aar_import/impl.bzl b/rules/aar_import/impl.bzl index 9bcb427c..8a17a9e2 100644 --- a/rules/aar_import/impl.bzl +++ b/rules/aar_import/impl.bzl @@ -35,6 +35,7 @@ load( load( "//rules:utils.bzl", "ANDROID_TOOLCHAIN_TYPE", + "get_android_sdk", _get_android_toolchain = "get_android_toolchain", _utils = "utils", ) @@ -158,7 +159,7 @@ def _process_resources( # Tool and Processing related inputs aapt = _get_android_toolchain(ctx).aapt2.files_to_run, - android_jar = ctx.attr._android_sdk[AndroidSdkInfo].android_jar, + android_jar = get_android_sdk(ctx).android_jar, android_kit = _get_android_toolchain(ctx).android_kit.files_to_run, busybox = _get_android_toolchain(ctx).android_resources_busybox.files_to_run, java_toolchain = _common.get_java_toolchain(ctx), diff --git a/rules/aar_import/rule.bzl b/rules/aar_import/rule.bzl index ecfc3e54..45096a35 100644 --- a/rules/aar_import/rule.bzl +++ b/rules/aar_import/rule.bzl @@ -14,6 +14,10 @@ """aar_import rule.""" +load( + "//rules:utils.bzl", + "ANDROID_SDK_TOOLCHAIN_TYPE", +) load(":attrs.bzl", _ATTRS = "ATTRS") load(":impl.bzl", _impl = "impl") @@ -56,5 +60,6 @@ aar_import = rule( toolchains = [ "//toolchains/android:toolchain_type", "@bazel_tools//tools/jdk:toolchain_type", + ANDROID_SDK_TOOLCHAIN_TYPE, ], ) diff --git a/rules/android_application/android_application_rule.bzl b/rules/android_application/android_application_rule.bzl index dcdd09ad..f1eec33b 100644 --- a/rules/android_application/android_application_rule.bzl +++ b/rules/android_application/android_application_rule.bzl @@ -48,6 +48,8 @@ load( ) load( "//rules:utils.bzl", + "ANDROID_SDK_TOOLCHAIN_TYPE", + "get_android_sdk", "get_android_toolchain", _log = "log", ) @@ -84,7 +86,7 @@ def _process_feature_module( base_apk, java_package, feature_target, - ctx.attr._android_sdk[AndroidSdkInfo].aapt2, + get_android_toolchain(ctx).aapt2.files_to_run, ctx.executable._feature_manifest_script, ctx.executable._priority_feature_manifest_script, get_android_toolchain(ctx).android_resources_busybox, @@ -124,7 +126,7 @@ def _process_feature_module( transitive_r_txts = [res.transitive_r_txts], additional_apks_to_link_against = [base_apk], proto_format = True, # required for aab. - android_jar = ctx.attr._android_sdk[AndroidSdkInfo].android_jar, + android_jar = get_android_sdk(ctx).android_jar, aapt = get_android_toolchain(ctx).aapt2.files_to_run, busybox = get_android_toolchain(ctx).android_resources_busybox.files_to_run, host_javabase = _common.get_host_javabase(ctx), @@ -403,6 +405,7 @@ android_application = rule( toolchains = [ "//toolchains/android:toolchain_type", "@bazel_tools//tools/jdk:toolchain_type", + ANDROID_SDK_TOOLCHAIN_TYPE, ], _skylark_testable = True, ) diff --git a/rules/android_library/rule.bzl b/rules/android_library/rule.bzl index 324ee272..efb46128 100644 --- a/rules/android_library/rule.bzl +++ b/rules/android_library/rule.bzl @@ -19,6 +19,7 @@ load( "//rules:attrs.bzl", _attrs = "attrs", ) +load("//rules:utils.bzl", "ANDROID_SDK_TOOLCHAIN_TYPE") load(":attrs.bzl", _ATTRS = "ATTRS") load(":impl.bzl", _impl = "impl") @@ -174,8 +175,8 @@ def make_rule( outputs = outputs, toolchains = [ "//toolchains/android:toolchain_type", - "//toolchains/android_sdk:toolchain_type", "@bazel_tools//tools/jdk:toolchain_type", + ANDROID_SDK_TOOLCHAIN_TYPE, ] + additional_toolchains, _skylark_testable = True, ) diff --git a/rules/attrs.bzl b/rules/attrs.bzl index 8144f7ae..4ffb8ad4 100644 --- a/rules/attrs.bzl +++ b/rules/attrs.bzl @@ -86,14 +86,6 @@ _JAVA_RUNTIME = dict( # Android SDK attribute. _ANDROID_SDK = dict( - _android_sdk = attr.label( - allow_rules = ["android_sdk"], - default = configuration_field( - fragment = "android", - name = "android_sdk_label", - ), - providers = [AndroidSdkInfo], - ), _dummy_android_sdk = attr.label( default = "//toolchains/android_sdk:dummy_sdk_tools", ), diff --git a/rules/utils.bzl b/rules/utils.bzl index bfd7715d..fceea78f 100644 --- a/rules/utils.bzl +++ b/rules/utils.bzl @@ -18,6 +18,8 @@ load(":providers.bzl", "FailureInfo") ANDROID_TOOLCHAIN_TYPE = Label("//toolchains/android:toolchain_type") +ANDROID_SDK_TOOLCHAIN_TYPE = Label("//toolchains/android_sdk:toolchain_type") + _CUU = "\033[A" _EL = "\033[K" _DEFAULT = "\033[0m" @@ -420,7 +422,7 @@ def get_android_toolchain(ctx): def get_android_sdk(ctx): if hasattr(ctx.fragments.android, "incompatible_use_toolchain_resolution") and ctx.fragments.android.incompatible_use_toolchain_resolution: - return ctx.toolchains["//toolchains/android_sdk:toolchain_type"].android_sdk_info + return ctx.toolchains[ANDROID_SDK_TOOLCHAIN_TYPE].android_sdk_info else: return ctx.attr._android_sdk[AndroidSdkInfo] diff --git a/tools/android/defs.bzl b/tools/android/defs.bzl index 07c7a134..45d130d3 100644 --- a/tools/android/defs.bzl +++ b/tools/android/defs.bzl @@ -14,27 +14,21 @@ """A rule that returns android.jar from the current android sdk.""" +load( + "//rules:utils.bzl", + "ANDROID_SDK_TOOLCHAIN_TYPE", +) + def _android_jar_impl(ctx): + sdk_info = ctx.toolchains[ANDROID_SDK_TOOLCHAIN_TYPE].android_sdk_info return DefaultInfo( - files = depset([ctx.attr._sdk[AndroidSdkInfo].android_jar]), + files = depset([sdk_info.android_jar]), ) android_jar = rule( implementation = _android_jar_impl, - # TODO: Should use a toolchain instead of a configuration_field on - # --android_sdk as below, however that appears to be broken when used - # from an local_repository: b/183060658. - #toolchains = [ - # "//toolchains/android_sdk:toolchain_type", - #], - attrs = { - "_sdk": attr.label( - allow_rules = ["android_sdk"], - default = configuration_field( - fragment = "android", - name = "android_sdk_label", - ), - providers = [AndroidSdkInfo], - ), - }, + toolchains = [ + ANDROID_SDK_TOOLCHAIN_TYPE, + ], + fragments = ["android"], )