diff --git a/mobile/.bazelrc b/mobile/.bazelrc index 00407e5a7b89..880efa2c4efe 100644 --- a/mobile/.bazelrc +++ b/mobile/.bazelrc @@ -16,10 +16,6 @@ build --spawn_strategy=local build --verbose_failures build --workspace_status_command=envoy/bazel/get_workspace_status build --xcode_version=13.2.1 -build --host_javabase=@bazel_tools//tools/jdk:remote_jdk11 -build --javabase=@bazel_tools//tools/jdk:remote_jdk11 -build --tool_java_runtime_version=remotejdk_11 -build --java_runtime_version=remotejdk_11 # https://github.com/bazelbuild/rules_jvm_external/issues/445 build --repo_env=JAVA_HOME=../bazel_tools/jdk build --define disable_known_issue_asserts=true diff --git a/mobile/WORKSPACE b/mobile/WORKSPACE index a63e90625250..c2cfdcc3d59a 100644 --- a/mobile/WORKSPACE +++ b/mobile/WORKSPACE @@ -40,5 +40,8 @@ python_configure(name = "local_config_python", python_version = "3") load("//bazel:python.bzl", "declare_python_abi") declare_python_abi(name = "python_abi", python_version = "3") -android_sdk_repository(name = "androidsdk", api_level = 30, build_tools_version = "30.0.2") -android_ndk_repository(name = "androidndk", api_level = 21) +load("//bazel:android_configure.bzl", "android_configure") +android_configure(name = "local_config_android") + +load("@local_config_android//:android_configure.bzl", "android_workspace") +android_workspace() diff --git a/mobile/bazel/android_configure.bzl b/mobile/bazel/android_configure.bzl new file mode 100644 index 000000000000..ca81f258afae --- /dev/null +++ b/mobile/bazel/android_configure.bzl @@ -0,0 +1,53 @@ +"""Repository rule for Android SDK and NDK autoconfiguration. + +This rule is a no-op unless the required android environment variables are set. +""" + +# Based on https://github.com/tensorflow/tensorflow/tree/34c03ed67692eb76cb3399cebca50ea8bcde064c/third_party/android +# Workaround for https://github.com/bazelbuild/bazel/issues/14260 + +_ANDROID_NDK_HOME = "ANDROID_NDK_HOME" +_ANDROID_SDK_HOME = "ANDROID_HOME" + +def _android_autoconf_impl(repository_ctx): + sdk_home = repository_ctx.os.environ.get(_ANDROID_SDK_HOME) + ndk_home = repository_ctx.os.environ.get(_ANDROID_NDK_HOME) + + sdk_rule = "" + if sdk_home: + sdk_rule = """ + native.android_sdk_repository( + name="androidsdk", + path="{}", + api_level=30, + build_tools_version="30.0.2", + ) +""".format(sdk_home) + + ndk_rule = "" + if ndk_home: + ndk_rule = """ + native.android_ndk_repository( + name="androidndk", + path="{}", + api_level=21, + ) +""".format(ndk_home) + + if ndk_rule == "" and sdk_rule == "": + sdk_rule = "pass" + + repository_ctx.file("BUILD.bazel", "") + repository_ctx.file("android_configure.bzl", """ +def android_workspace(): + {} + {} + """.format(sdk_rule, ndk_rule)) + +android_configure = repository_rule( + implementation = _android_autoconf_impl, + environ = [ + _ANDROID_NDK_HOME, + _ANDROID_SDK_HOME, + ], +) diff --git a/mobile/envoy b/mobile/envoy index 71248e51257e..bbcd487bd178 160000 --- a/mobile/envoy +++ b/mobile/envoy @@ -1 +1 @@ -Subproject commit 71248e51257e7f9f6fbe9cfb2ead834cd8dff550 +Subproject commit bbcd487bd178ef5254545941ac369d944da41913