Backed out changeset 0d6f20caaa6b (bug 1686880) for Android bustages on android-sdk.configure . CLOSED TREE
This commit is contained in:
@@ -67,31 +67,21 @@ def android_version(value, min_version):
|
|||||||
return version
|
return version
|
||||||
|
|
||||||
|
|
||||||
@depends("--with-android-ndk", want_bootstrap)
|
@depends("--with-android-ndk")
|
||||||
@imports(_from="os.path", _import="isdir")
|
@imports(_from="os.path", _import="isdir")
|
||||||
@imports(_from="mozboot.android", _import="get_os_name_for_android")
|
def ndk(value):
|
||||||
@imports(_from="mozboot.android", _import="ensure_android_ndk")
|
|
||||||
@imports(_from="mozboot.android", _import="NDK_PATH")
|
|
||||||
def ndk(value, want_bootstrap):
|
|
||||||
if value:
|
if value:
|
||||||
ndk_path = value[0]
|
if not isdir(value[0]):
|
||||||
if not isdir(ndk_path):
|
|
||||||
die(
|
die(
|
||||||
"The path you specified with --with-android-ndk (%s) is not "
|
"The path you specified with --with-android-ndk (%s) is not "
|
||||||
"a directory" % ndk_path
|
"a directory" % value[0]
|
||||||
)
|
)
|
||||||
return ndk_path
|
return value[0]
|
||||||
if not want_bootstrap("android-ndk"):
|
|
||||||
die(
|
|
||||||
"You must specify --with-android-ndk=/path/to/ndk when targeting Android, "
|
|
||||||
"or try |mach bootstrap|."
|
|
||||||
)
|
|
||||||
|
|
||||||
os_name = get_os_name_for_android()
|
die(
|
||||||
|
"You must specify --with-android-ndk=/path/to/ndk when targeting Android, "
|
||||||
ensure_android_ndk(os_name)
|
"or try |mach bootstrap|."
|
||||||
|
)
|
||||||
return str(NDK_PATH)
|
|
||||||
|
|
||||||
|
|
||||||
set_config("ANDROID_NDK", ndk)
|
set_config("ANDROID_NDK", ndk)
|
||||||
|
|||||||
@@ -29,95 +29,21 @@ option(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@depends(host)
|
@depends("--with-android-sdk")
|
||||||
@imports(_from="mozboot.android", _import="get_os_name_for_android")
|
|
||||||
@imports(_from="mozboot.android", _import="get_os_tag_for_android")
|
|
||||||
def android_os_info(host):
|
|
||||||
os_name = get_os_name_for_android()
|
|
||||||
os_tag = get_os_tag_for_android(os_name)
|
|
||||||
os_arch = host.cpu
|
|
||||||
|
|
||||||
if os_name == "windows" and os_arch.startswith("arm"):
|
|
||||||
die(
|
|
||||||
"Building for Android is not supported on ARM64 Windows because "
|
|
||||||
"Google does not distribute an emulator binary for ARM64 Windows. "
|
|
||||||
"See also https://issuetracker.google.com/issues/264614669."
|
|
||||||
)
|
|
||||||
|
|
||||||
return namespace(os_name=os_name, os_tag=os_tag, os_arch=os_arch)
|
|
||||||
|
|
||||||
|
|
||||||
@depends(android_os_info)
|
|
||||||
@imports(_from="mozboot.android", _import="AVD_MANIFEST_X86_64")
|
|
||||||
@imports(_from="mozboot.android", _import="AVD_MANIFEST_ARM64")
|
|
||||||
@imports(_from="mozboot.android", _import="get_avd_manifest")
|
|
||||||
def avd_manifest(android_os_info):
|
|
||||||
if any(k in android_os_info.os_arch for k in ("x86", "x86_64")):
|
|
||||||
avd_manifest_path_for_arch = AVD_MANIFEST_X86_64
|
|
||||||
else:
|
|
||||||
avd_manifest_path_for_arch = AVD_MANIFEST_ARM64
|
|
||||||
|
|
||||||
return get_avd_manifest(avd_manifest_path_for_arch)
|
|
||||||
|
|
||||||
|
|
||||||
@imports(_from="os.path", _import="exists")
|
|
||||||
@imports(_from="mozboot.android", _import="get_android_packages")
|
|
||||||
@imports(_from="mozboot.android", _import="ensure_android_packages")
|
|
||||||
@imports(_from="mozboot.android", _import="AndroidPackageList")
|
|
||||||
def _ensure_android_package(
|
|
||||||
package_relative_path,
|
|
||||||
sdk_root,
|
|
||||||
os_name,
|
|
||||||
os_arch,
|
|
||||||
want_bootstrap,
|
|
||||||
package_prefix,
|
|
||||||
package_list_enum,
|
|
||||||
avd_manifest=None,
|
|
||||||
):
|
|
||||||
full_path = os.path.join(sdk_root, package_relative_path)
|
|
||||||
|
|
||||||
if exists(full_path):
|
|
||||||
return [full_path]
|
|
||||||
if not want_bootstrap("android-sdk"):
|
|
||||||
die(
|
|
||||||
f"You must install the Android {package_relative_path}. "
|
|
||||||
f"Try |mach bootstrap|. (Looked for {full_path})"
|
|
||||||
)
|
|
||||||
packages = get_android_packages(package_list_enum)
|
|
||||||
to_install = {pkg for pkg in packages if pkg.startswith(package_prefix)}
|
|
||||||
ensure_android_packages(
|
|
||||||
os_name,
|
|
||||||
os_arch,
|
|
||||||
packages=to_install,
|
|
||||||
no_interactive=True,
|
|
||||||
avd_manifest=avd_manifest,
|
|
||||||
)
|
|
||||||
return [full_path]
|
|
||||||
|
|
||||||
|
|
||||||
@depends("--with-android-sdk", android_os_info, want_bootstrap)
|
|
||||||
@imports(_from="os.path", _import="isdir")
|
@imports(_from="os.path", _import="isdir")
|
||||||
@imports(_from="mozboot.android", _import="ensure_android_sdk")
|
def android_sdk_root(value):
|
||||||
@imports(_from="mozboot.android", _import="get_sdk_path")
|
|
||||||
def android_sdk_root(value, android_os_info, want_bootstrap):
|
|
||||||
if value:
|
if value:
|
||||||
sdk_path = value[0]
|
if not isdir(value[0]):
|
||||||
if not isdir(sdk_path):
|
|
||||||
die(
|
die(
|
||||||
"The path you specified with --with-android-sdk (%s) is not "
|
"The path you specified with --with-android-sdk (%s) is not "
|
||||||
"a directory" % sdk_path
|
"a directory" % value[0]
|
||||||
)
|
)
|
||||||
return sdk_path
|
return value[0]
|
||||||
|
|
||||||
if not want_bootstrap("android-sdk"):
|
die(
|
||||||
die(
|
"You must specify --with-android-sdk=/path/to/sdk when targeting Android, "
|
||||||
"You must specify --with-android-sdk=/path/to/sdk when targeting Android, "
|
"or try |mach bootstrap|."
|
||||||
"or try |mach bootstrap|."
|
)
|
||||||
)
|
|
||||||
|
|
||||||
ensure_android_sdk(android_os_info.os_name, android_os_info.os_tag)
|
|
||||||
|
|
||||||
return str(get_sdk_path(android_os_info.os_name))
|
|
||||||
|
|
||||||
|
|
||||||
@dependable
|
@dependable
|
||||||
@@ -166,113 +92,45 @@ def valid_android_min_sdk(min_sdk_version, target_sdk_version):
|
|||||||
set_config("MOZ_ANDROID_MIN_SDK_VERSION", valid_android_min_sdk)
|
set_config("MOZ_ANDROID_MIN_SDK_VERSION", valid_android_min_sdk)
|
||||||
|
|
||||||
|
|
||||||
@depends(android_sdk_root, android_sdk_version, android_os_info, want_bootstrap)
|
@depends(android_sdk_root, android_sdk_version)
|
||||||
@checking("for Android build-tools")
|
@checking("for Android build-tools")
|
||||||
@imports(_from="mozboot.android", _import="AndroidPackageList")
|
@imports(_from="os.path", _import="exists")
|
||||||
def android_build_tools(sdk_root, sdk_version, android_os_info, want_bootstrap):
|
@imports(_from="os.path", _import="isdir")
|
||||||
prefix = "build-tools"
|
def android_build_tools(sdk_root, sdk_version):
|
||||||
return _ensure_android_package(
|
android_build_tools_base = os.path.join(sdk_root, "build-tools")
|
||||||
package_relative_path=os.path.join(prefix, sdk_version.build_tools_version),
|
version = sdk_version.build_tools_version
|
||||||
sdk_root=sdk_root,
|
if isdir(os.path.join(android_build_tools_base, version)):
|
||||||
os_name=android_os_info.os_name,
|
tools = os.path.join(android_build_tools_base, version)
|
||||||
os_arch=android_os_info.os_arch,
|
for zipalign in ("zipalign", "zipalign.exe"):
|
||||||
want_bootstrap=want_bootstrap,
|
if exists(os.path.join(tools, zipalign)):
|
||||||
package_prefix=prefix,
|
return [tools]
|
||||||
package_list_enum=AndroidPackageList.ALL,
|
|
||||||
|
die(
|
||||||
|
"You must install the Android build-tools version %s. "
|
||||||
|
"Try |mach bootstrap|. (Looked for %s/%s)"
|
||||||
|
% (version, android_build_tools_base, version)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@depends(android_sdk_root, android_os_info, want_bootstrap)
|
@depends(android_sdk_root)
|
||||||
@checking("for Android platform-tools")
|
@checking("for Android platform-tools")
|
||||||
@imports(_from="mozboot.android", _import="AndroidPackageList")
|
|
||||||
def android_platform_tools(sdk_root, android_os_info, want_bootstrap):
|
|
||||||
prefix = "platform-tools"
|
|
||||||
return _ensure_android_package(
|
|
||||||
package_relative_path=prefix,
|
|
||||||
sdk_root=sdk_root,
|
|
||||||
os_name=android_os_info.os_name,
|
|
||||||
os_arch=android_os_info.os_arch,
|
|
||||||
want_bootstrap=want_bootstrap,
|
|
||||||
package_prefix=prefix,
|
|
||||||
package_list_enum=AndroidPackageList.ALL,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@depends(android_sdk_root, android_sdk_version, android_os_info, want_bootstrap)
|
|
||||||
@checking("for Android platforms")
|
|
||||||
@imports(_from="mozboot.android", _import="AndroidPackageList")
|
|
||||||
def android_platforms(sdk_root, sdk_version, android_os_info, want_bootstrap):
|
|
||||||
prefix = "platforms"
|
|
||||||
platforms_path = os.path.join(prefix, "android-" + sdk_version.compile_sdk_version)
|
|
||||||
return _ensure_android_package(
|
|
||||||
package_relative_path=platforms_path,
|
|
||||||
sdk_root=sdk_root,
|
|
||||||
os_name=android_os_info.os_name,
|
|
||||||
os_arch=android_os_info.os_arch,
|
|
||||||
want_bootstrap=want_bootstrap,
|
|
||||||
package_prefix=prefix,
|
|
||||||
package_list_enum=AndroidPackageList.ALL,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Emulator
|
|
||||||
@depends(android_sdk_root, android_os_info, want_bootstrap, avd_manifest)
|
|
||||||
@checking("for Android emulator")
|
|
||||||
@imports(_from="os.path", _import="exists")
|
@imports(_from="os.path", _import="exists")
|
||||||
@imports(_from="mozboot.android", _import="AndroidPackageList")
|
@imports(_from="os.path", _import="isdir")
|
||||||
def android_emulator(sdk_root, android_os_info, want_bootstrap, avd_manifest):
|
def android_platform_tools(sdk_root):
|
||||||
prefix = "emulator"
|
tools = os.path.join(sdk_root, "platform-tools")
|
||||||
return _ensure_android_package(
|
for adb in ("adb", "adb.exe"):
|
||||||
package_relative_path=prefix,
|
if exists(os.path.join(tools, adb)):
|
||||||
sdk_root=sdk_root,
|
return [tools]
|
||||||
os_name=android_os_info.os_name,
|
|
||||||
os_arch=android_os_info.os_arch,
|
die(
|
||||||
want_bootstrap=want_bootstrap,
|
"You must install the Android platform-tools. Try |mach bootstrap|. (Looked for %s)"
|
||||||
package_prefix=prefix,
|
% tools
|
||||||
package_list_enum=AndroidPackageList.EMULATOR,
|
|
||||||
avd_manifest=avd_manifest,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@depends(toolchains_base_dir, want_bootstrap)
|
@depends(android_sdk_root)
|
||||||
@checking("for Bundletool")
|
def android_emulator_path(sdk_root):
|
||||||
@imports(_from="os.path", _import="exists")
|
return [os.path.join(sdk_root, "emulator")]
|
||||||
@imports(_from="mozboot.android", _import="ensure_bundletool")
|
|
||||||
def android_bundletool(toolchains_base_dir, want_bootstrap):
|
|
||||||
bundletool_path = os.path.join(toolchains_base_dir, "bundletool.jar")
|
|
||||||
if exists(bundletool_path):
|
|
||||||
return [bundletool_path]
|
|
||||||
|
|
||||||
if not want_bootstrap("android-sdk"):
|
|
||||||
die(
|
|
||||||
"You must install Bundletool. Try |mach bootstrap|. (Looked for %s)"
|
|
||||||
% bundletool_path
|
|
||||||
)
|
|
||||||
|
|
||||||
ensure_bundletool()
|
|
||||||
|
|
||||||
return [bundletool_path]
|
|
||||||
|
|
||||||
|
|
||||||
@depends(toolchains_base_dir, android_os_info, want_bootstrap, avd_manifest)
|
|
||||||
@checking("for AVD")
|
|
||||||
@imports(_from="os.path", _import="exists")
|
|
||||||
@imports(_from="mozboot.android", _import="ensure_android_avd")
|
|
||||||
def android_avd(toolchains_base_dir, android_os_info, want_bootstrap, avd_manifest):
|
|
||||||
avd_path = os.path.join(toolchains_base_dir, "android-device", "avd")
|
|
||||||
if exists(avd_path):
|
|
||||||
return [avd_path]
|
|
||||||
|
|
||||||
if not want_bootstrap("android-sdk"):
|
|
||||||
die("You must install AVD. Try |mach bootstrap|. (Looked for %s)" % avd_path)
|
|
||||||
|
|
||||||
ensure_android_avd(
|
|
||||||
android_os_info.os_name,
|
|
||||||
android_os_info.os_arch,
|
|
||||||
no_interactive=True,
|
|
||||||
avd_manifest=avd_manifest,
|
|
||||||
)
|
|
||||||
return [avd_path]
|
|
||||||
|
|
||||||
|
|
||||||
@template
|
@template
|
||||||
@@ -290,11 +148,11 @@ def check_android_tools(tool, tool_dir):
|
|||||||
return require_tool
|
return require_tool
|
||||||
|
|
||||||
|
|
||||||
set_config("ANDROID_SDK_ROOT", android_sdk_root)
|
|
||||||
|
|
||||||
check_android_tools("zipalign", android_build_tools)
|
check_android_tools("zipalign", android_build_tools)
|
||||||
check_android_tools("adb", android_platform_tools)
|
check_android_tools("adb", android_platform_tools)
|
||||||
check_android_tools("emulator", android_emulator)
|
check_android_tools("emulator", android_emulator_path)
|
||||||
|
|
||||||
|
set_config("ANDROID_SDK_ROOT", android_sdk_root)
|
||||||
|
|
||||||
set_config("ANDROID_BUILD_TOOLS_VERSION", android_sdk_version.build_tools_version)
|
set_config("ANDROID_BUILD_TOOLS_VERSION", android_sdk_version.build_tools_version)
|
||||||
set_config("ANDROID_TARGET_SDK", android_sdk_version.target_sdk_version)
|
set_config("ANDROID_TARGET_SDK", android_sdk_version.target_sdk_version)
|
||||||
|
|||||||
Reference in New Issue
Block a user