diff options
author | vladmos <vladmos@google.com> | 2018-06-01 04:51:21 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-01 04:52:44 -0700 |
commit | 20a042faa91acf8db78684de9f38c4e628d61dd6 (patch) | |
tree | c2fc5c6d30cb51cb3f6e30ed0fb2d25f5525585f /tools/android | |
parent | 2269ee2af91b7df13820381d61e8e4e26a257b3a (diff) |
Format all bzl files with buildifier
This CL aslo enables a presubmit check for correct formatting of all bzl files in //third_party/bazel.
PiperOrigin-RevId: 198857055
Diffstat (limited to 'tools/android')
-rw-r--r-- | tools/android/android_sdk_repository_template.bzl | 587 |
1 files changed, 298 insertions, 289 deletions
diff --git a/tools/android/android_sdk_repository_template.bzl b/tools/android/android_sdk_repository_template.bzl index f9b618d1e7..e41adfb0df 100644 --- a/tools/android/android_sdk_repository_template.bzl +++ b/tools/android/android_sdk_repository_template.bzl @@ -14,205 +14,206 @@ # limitations under the License. def create_config_setting_rule(): - """Create config_setting rule for windows. - - These represent the matching --host_cpu values. - """ - name = "windows" - if not native.existing_rule(name): - native.config_setting( - name = name, - values = {"host_cpu": "x64_" + name}, - ) + """Create config_setting rule for windows. + + These represent the matching --host_cpu values. + """ + name = "windows" + if not native.existing_rule(name): + native.config_setting( + name = name, + values = {"host_cpu": "x64_" + name}, + ) def create_android_sdk_rules( - name, - build_tools_version, - build_tools_directory, - api_levels, - default_api_level): - """Generate android_sdk rules for the API levels in the Android SDK. - - Args: - name: string, the name of the repository being generated. - build_tools_version: string, the version of Android's build tools to use. - build_tools_directory: string, the directory name of the build tools in - sdk's build-tools directory. - api_levels: list of ints, the API levels from which to get android.jar - et al. and create android_sdk rules. - default_api_level: int, the API level to alias the default sdk to if - --android_sdk is not specified on the command line. - """ - - create_config_setting_rule() - - windows_only_files = [ - "build-tools/%s/aapt.exe" % build_tools_directory, - "build-tools/%s/aidl.exe" % build_tools_directory, - "build-tools/%s/zipalign.exe" % build_tools_directory, - "platform-tools/adb.exe", - ] + native.glob(["build-tools/%s/aapt2.exe" % build_tools_directory]) - - linux_only_files = [ - "build-tools/%s/aapt" % build_tools_directory, - "build-tools/%s/aidl" % build_tools_directory, - "build-tools/%s/zipalign" % build_tools_directory, - "platform-tools/adb", - ] + native.glob( - ["extras", "build-tools/%s/aapt2" % build_tools_directory], - exclude_directories = 0, - ) - - # This filegroup is used to pass the minimal contents of the SDK to the - # Android integration tests. Note that in order to work on Windows, we cannot - # include directories and must keep the size small. - native.filegroup( - name = "files", - srcs = [ - "build-tools/%s/lib/apksigner.jar" % build_tools_directory, - "build-tools/%s/lib/dx.jar" % build_tools_directory, - "build-tools/%s/mainDexClasses.rules" % build_tools_directory, - ] + [ - "platforms/android-%d/%s" % (api_level, filename) - for api_level in api_levels - for filename in ["android.jar", "framework.aidl"] - ] + select({ - ":windows": windows_only_files, - "//conditions:default": linux_only_files, - }), - ) - - for api_level in api_levels: - if api_level >= 23: - # Android 23 removed most of org.apache.http from android.jar and moved it - # to a separate jar. - native.java_import( - name = "org_apache_http_legacy-%d" % api_level, - jars = ["platforms/android-%d/optional/org.apache.http.legacy.jar" % api_level] - ) - - native.android_sdk( - name = "sdk-%d" % api_level, - build_tools_version = build_tools_version, - proguard = "@bazel_tools//third_party/java/proguard", - aapt = select({ - ":windows": "build-tools/%s/aapt.exe" % build_tools_directory, - "//conditions:default": ":aapt_binary", - }), - aapt2 = select({ - ":windows": "build-tools/%s/aapt2.exe" % build_tools_directory, - "//conditions:default": ":aapt2_binary", - }), - dx = ":dx_binary", - main_dex_list_creator = ":main_dex_list_creator", - adb = select({ - ":windows": "platform-tools/adb.exe", - "//conditions:default": "platform-tools/adb", - }), - framework_aidl = "platforms/android-%d/framework.aidl" % api_level, - aidl = select({ - ":windows": "build-tools/%s/aidl.exe" % build_tools_directory, - "//conditions:default": ":aidl_binary", + name, + build_tools_version, + build_tools_directory, + api_levels, + default_api_level): + """Generate android_sdk rules for the API levels in the Android SDK. + + Args: + name: string, the name of the repository being generated. + build_tools_version: string, the version of Android's build tools to use. + build_tools_directory: string, the directory name of the build tools in + sdk's build-tools directory. + api_levels: list of ints, the API levels from which to get android.jar + et al. and create android_sdk rules. + default_api_level: int, the API level to alias the default sdk to if + --android_sdk is not specified on the command line. + """ + + create_config_setting_rule() + + windows_only_files = [ + "build-tools/%s/aapt.exe" % build_tools_directory, + "build-tools/%s/aidl.exe" % build_tools_directory, + "build-tools/%s/zipalign.exe" % build_tools_directory, + "platform-tools/adb.exe", + ] + native.glob(["build-tools/%s/aapt2.exe" % build_tools_directory]) + + linux_only_files = [ + "build-tools/%s/aapt" % build_tools_directory, + "build-tools/%s/aidl" % build_tools_directory, + "build-tools/%s/zipalign" % build_tools_directory, + "platform-tools/adb", + ] + native.glob( + ["extras", "build-tools/%s/aapt2" % build_tools_directory], + exclude_directories = 0, + ) + + # This filegroup is used to pass the minimal contents of the SDK to the + # Android integration tests. Note that in order to work on Windows, we cannot + # include directories and must keep the size small. + native.filegroup( + name = "files", + srcs = [ + "build-tools/%s/lib/apksigner.jar" % build_tools_directory, + "build-tools/%s/lib/dx.jar" % build_tools_directory, + "build-tools/%s/mainDexClasses.rules" % build_tools_directory, + ] + [ + "platforms/android-%d/%s" % (api_level, filename) + for api_level in api_levels + for filename in ["android.jar", "framework.aidl"] + ] + select({ + ":windows": windows_only_files, + "//conditions:default": linux_only_files, }), - android_jar = "platforms/android-%d/android.jar" % api_level, - shrinked_android_jar = "platforms/android-%d/android.jar" % api_level, - main_dex_classes = "build-tools/%s/mainDexClasses.rules" % build_tools_directory, - apksigner = ":apksigner", - zipalign = select({ - ":windows": "build-tools/%s/zipalign.exe" % build_tools_directory, - "//conditions:default": ":zipalign_binary", + ) + + for api_level in api_levels: + if api_level >= 23: + # Android 23 removed most of org.apache.http from android.jar and moved it + # to a separate jar. + native.java_import( + name = "org_apache_http_legacy-%d" % api_level, + jars = ["platforms/android-%d/optional/org.apache.http.legacy.jar" % api_level], + ) + + native.android_sdk( + name = "sdk-%d" % api_level, + build_tools_version = build_tools_version, + proguard = "@bazel_tools//third_party/java/proguard", + aapt = select({ + ":windows": "build-tools/%s/aapt.exe" % build_tools_directory, + "//conditions:default": ":aapt_binary", + }), + aapt2 = select({ + ":windows": "build-tools/%s/aapt2.exe" % build_tools_directory, + "//conditions:default": ":aapt2_binary", + }), + dx = ":dx_binary", + main_dex_list_creator = ":main_dex_list_creator", + adb = select({ + ":windows": "platform-tools/adb.exe", + "//conditions:default": "platform-tools/adb", + }), + framework_aidl = "platforms/android-%d/framework.aidl" % api_level, + aidl = select({ + ":windows": "build-tools/%s/aidl.exe" % build_tools_directory, + "//conditions:default": ":aidl_binary", + }), + android_jar = "platforms/android-%d/android.jar" % api_level, + shrinked_android_jar = "platforms/android-%d/android.jar" % api_level, + main_dex_classes = "build-tools/%s/mainDexClasses.rules" % build_tools_directory, + apksigner = ":apksigner", + zipalign = select({ + ":windows": "build-tools/%s/zipalign.exe" % build_tools_directory, + "//conditions:default": ":zipalign_binary", + }), + ) + + native.alias( + name = "org_apache_http_legacy", + actual = ":org_apache_http_legacy-%d" % default_api_level, + ) + + native.alias( + name = "sdk", + actual = ":sdk-%d" % default_api_level, + ) + + native.java_binary( + name = "apksigner", + main_class = "com.android.apksigner.ApkSignerTool", + runtime_deps = ["build-tools/%s/lib/apksigner.jar" % build_tools_directory], + ) + + native.filegroup( + name = "build_tools_libs", + srcs = native.glob([ + "build-tools/%s/lib/**" % build_tools_directory, + # Build tools version 24.0.0 added a lib64 folder. + "build-tools/%s/lib64/**" % build_tools_directory, + ]), + ) + + for tool in ["aapt", "aapt2", "aidl", "zipalign"]: + native.genrule( + name = tool + "_runner", + outs = [tool + "_runner.sh"], + srcs = [], + cmd = "\n".join([ + "cat > $@ << 'EOF'", + "#!/bin/bash", + "set -eu", + # The tools under build-tools/VERSION require the libraries under + # build-tools/VERSION/lib, so we can't simply depend on them as a + # file like we do with aapt. + # On Windows however we can use these binaries directly because + # there's no runfiles support so Bazel just creates a junction to + # {SDK}/build-tools. + "SDK=$${0}.runfiles/%s" % name, + # If $${SDK} is not a directory, it means that this tool is running + # from a runfiles directory, in the case of + # android_instrumentation_test. Hence, use the androidsdk + # that's already present in the runfiles of the current context. + "if [[ ! -d $${SDK} ]] ; then", + " SDK=$$(pwd)/../%s" % name, + "fi", + "exec $${SDK}/build-tools/%s/%s $$*" % (build_tools_directory, tool), + "EOF\n", + ]), + ) + + native.sh_binary( + name = tool + "_binary", + srcs = [tool + "_runner.sh"], + data = [ + ":build_tools_libs", + "build-tools/%s/%s" % (build_tools_directory, tool), + ], + ) + + native.sh_binary( + name = "fail", + srcs = select({ + ":windows": [":generate_fail_cmd"], + "//conditions:default": [":generate_fail_sh"], }), ) - native.alias( - name = "org_apache_http_legacy", - actual = ":org_apache_http_legacy-%d" % default_api_level, - ) - - native.alias( - name = "sdk", - actual = ":sdk-%d" % default_api_level, - ) - - native.java_binary( - name = "apksigner", - main_class = "com.android.apksigner.ApkSignerTool", - runtime_deps = ["build-tools/%s/lib/apksigner.jar" % build_tools_directory], - ) - - native.filegroup( - name = "build_tools_libs", - srcs = native.glob([ - "build-tools/%s/lib/**" % build_tools_directory, - # Build tools version 24.0.0 added a lib64 folder. - "build-tools/%s/lib64/**" % build_tools_directory, - ]) - ) - - for tool in ["aapt", "aapt2", "aidl", "zipalign"]: native.genrule( - name = tool + "_runner", - outs = [tool + "_runner.sh"], - srcs = [], - cmd = "\n".join([ - "cat > $@ << 'EOF'", - "#!/bin/bash", - "set -eu", - # The tools under build-tools/VERSION require the libraries under - # build-tools/VERSION/lib, so we can't simply depend on them as a - # file like we do with aapt. - # On Windows however we can use these binaries directly because - # there's no runfiles support so Bazel just creates a junction to - # {SDK}/build-tools. - "SDK=$${0}.runfiles/%s" % name, - # If $${SDK} is not a directory, it means that this tool is running - # from a runfiles directory, in the case of - # android_instrumentation_test. Hence, use the androidsdk - # that's already present in the runfiles of the current context. - "if [[ ! -d $${SDK} ]] ; then", - " SDK=$$(pwd)/../%s" % name, - "fi", - "exec $${SDK}/build-tools/%s/%s $$*" % (build_tools_directory, tool), - "EOF\n"]), + name = "generate_fail_sh", + executable = 1, + outs = ["fail.sh"], + cmd = "echo -e '#!/bin/bash\\nexit 1' >> $@; chmod +x $@", ) - native.sh_binary( - name = tool + "_binary", - srcs = [tool + "_runner.sh"], - data = [ - ":build_tools_libs", - "build-tools/%s/%s" % (build_tools_directory, tool) - ], + native.genrule( + name = "generate_fail_cmd", + executable = 1, + outs = ["fail.cmd"], + cmd = "echo @exit /b 1 > $@", ) - native.sh_binary( - name = "fail", - srcs = select({ - ":windows": [":generate_fail_cmd"], - "//conditions:default": [":generate_fail_sh"], - }), - ) - - native.genrule( - name = "generate_fail_sh", - executable = 1, - outs = ["fail.sh"], - cmd = "echo -e '#!/bin/bash\\nexit 1' >> $@; chmod +x $@", - ) - - native.genrule( - name = "generate_fail_cmd", - executable = 1, - outs = ["fail.cmd"], - cmd = "echo @exit /b 1 > $@", - ) - - - native.genrule( - name = "main_dex_list_creator_source", - srcs = [], - outs = ["main_dex_list_creator.sh"], - cmd = "\n".join(["cat > $@ <<'EOF'", + native.genrule( + name = "main_dex_list_creator_source", + srcs = [], + outs = ["main_dex_list_creator.sh"], + cmd = "\n".join([ + "cat > $@ <<'EOF'", "#!/bin/bash", "", "MAIN_DEX_LIST=$$1", @@ -223,32 +224,32 @@ def create_android_sdk_rules( "$$JAVA_BINARY $$STRIPPED_JAR $$JAR > $$MAIN_DEX_LIST", "exit $$?", "", - "EOF\n"]), - ) - - native.sh_binary( - name = "main_dex_list_creator", - srcs = ["main_dex_list_creator.sh"], - data = [":main_dex_list_creator_java"], - ) + "EOF\n", + ]), + ) - native.java_binary( - name = "main_dex_list_creator_java", - main_class = "com.android.multidex.ClassReferenceListBuilder", - runtime_deps = [":dx_jar_import"], - ) + native.sh_binary( + name = "main_dex_list_creator", + srcs = ["main_dex_list_creator.sh"], + data = [":main_dex_list_creator_java"], + ) - native.java_binary( - name = "dx_binary", - main_class = "com.android.dx.command.Main", - runtime_deps = [":dx_jar_import"], - ) + native.java_binary( + name = "main_dex_list_creator_java", + main_class = "com.android.multidex.ClassReferenceListBuilder", + runtime_deps = [":dx_jar_import"], + ) - native.java_import( - name = "dx_jar_import", - jars = ["build-tools/%s/lib/dx.jar" % build_tools_directory], - ) + native.java_binary( + name = "dx_binary", + main_class = "com.android.dx.command.Main", + runtime_deps = [":dx_jar_import"], + ) + native.java_import( + name = "dx_jar_import", + jars = ["build-tools/%s/lib/dx.jar" % build_tools_directory], + ) TAGDIR_TO_TAG_MAP = { "google_apis": "google", @@ -257,93 +258,101 @@ TAGDIR_TO_TAG_MAP = { "android-wear": "wear", } - ARCHDIR_TO_ARCH_MAP = { "x86": "x86", "armeabi-v7a": "arm", } - def create_system_images_filegroups(system_image_dirs): - """Generate filegroups for the system images in the Android SDK. - - Args: - system_image_dirs: list of strings, the directories containing system image - files to be used to create android_device rules. - """ - - # These images will need to be updated as Android releases new system images. - # We are intentionally not adding future releases because there is no - # guarantee that they will work out of the box. Supported system images should - # be added here once they have been confirmed to work with the Bazel Android - # testing infrastructure. - system_images = [(tag, str(api), arch) - for tag in ["android", "google"] - for api in [10] + range(15, 20) + range(21, 27) - for arch in ("x86", "arm")] - tv_images = [("tv", str(api), arch) - for api in range(21, 25) for arch in ("x86", "arm")] - wear_images = [("wear", str(api), "x86") - for api in range(20, 26)] + [("wear", str(api), "arm") - for api in range(24, 26)] - supported_system_images = system_images + tv_images + wear_images - - installed_system_images_dirs = {} - for system_image_dir in system_image_dirs: - apidir, tagdir, archdir = system_image_dir.split("/")[1:] - if "-" not in apidir: - continue - api = apidir.split("-")[1] # "android-24" --> "24", "android-O" --> "O" - if tagdir not in TAGDIR_TO_TAG_MAP: - continue - tag = TAGDIR_TO_TAG_MAP[tagdir] - if archdir not in ARCHDIR_TO_ARCH_MAP: - continue - arch = ARCHDIR_TO_ARCH_MAP[archdir] - if (tag, api, arch) in supported_system_images: - name = "emulator_images_%s_%s_%s" % (tag, api, arch) - installed_system_images_dirs[name] = system_image_dir - else: - # TODO(bazel-team): If the user has an unsupported system image installed, - # should we print a warning? This includes all 64-bit system-images. - pass - - for (tag, api, arch) in supported_system_images: - name = "emulator_images_%s_%s_%s" % (tag, api, arch) - if name in installed_system_images_dirs: - system_image_dir = installed_system_images_dirs[name] - # For supported system images that exist in /sdk/system-images/, we - # create a filegroup with their contents. - native.filegroup( - name = name, - srcs = native.glob([ - "%s/**" % system_image_dir, - ]), - ) - native.filegroup( - name = "%s_qemu2_extra" % name, - srcs = native.glob(["%s/kernel-ranchu" % system_image_dir]), - ) - else: - # For supported system images that are not installed in the SDK, we - # create a "poison pill" genrule to display a helpful error message to - # a user who attempts to run a test against an android_device that - # they don't have the system image for installed. - native.genrule( - name = name, - outs = [ - # Necessary so that the build doesn't fail in analysis because - # android_device expects a file named source.properties. - "poison_pill_for_%s/source.properties" % name, - ], - cmd = """echo \ + """Generate filegroups for the system images in the Android SDK. + + Args: + system_image_dirs: list of strings, the directories containing system image + files to be used to create android_device rules. + """ + + # These images will need to be updated as Android releases new system images. + # We are intentionally not adding future releases because there is no + # guarantee that they will work out of the box. Supported system images should + # be added here once they have been confirmed to work with the Bazel Android + # testing infrastructure. + system_images = [ + (tag, str(api), arch) + for tag in ["android", "google"] + for api in [10] + range(15, 20) + range(21, 27) + for arch in ("x86", "arm") + ] + tv_images = [ + ("tv", str(api), arch) + for api in range(21, 25) + for arch in ("x86", "arm") + ] + wear_images = [ + ("wear", str(api), "x86") + for api in range(20, 26) + ] + [ + ("wear", str(api), "arm") + for api in range(24, 26) + ] + supported_system_images = system_images + tv_images + wear_images + + installed_system_images_dirs = {} + for system_image_dir in system_image_dirs: + apidir, tagdir, archdir = system_image_dir.split("/")[1:] + if "-" not in apidir: + continue + api = apidir.split("-")[1] # "android-24" --> "24", "android-O" --> "O" + if tagdir not in TAGDIR_TO_TAG_MAP: + continue + tag = TAGDIR_TO_TAG_MAP[tagdir] + if archdir not in ARCHDIR_TO_ARCH_MAP: + continue + arch = ARCHDIR_TO_ARCH_MAP[archdir] + if (tag, api, arch) in supported_system_images: + name = "emulator_images_%s_%s_%s" % (tag, api, arch) + installed_system_images_dirs[name] = system_image_dir + else: + # TODO(bazel-team): If the user has an unsupported system image installed, + # should we print a warning? This includes all 64-bit system-images. + pass + + for (tag, api, arch) in supported_system_images: + name = "emulator_images_%s_%s_%s" % (tag, api, arch) + if name in installed_system_images_dirs: + system_image_dir = installed_system_images_dirs[name] + + # For supported system images that exist in /sdk/system-images/, we + # create a filegroup with their contents. + native.filegroup( + name = name, + srcs = native.glob([ + "%s/**" % system_image_dir, + ]), + ) + native.filegroup( + name = "%s_qemu2_extra" % name, + srcs = native.glob(["%s/kernel-ranchu" % system_image_dir]), + ) + else: + # For supported system images that are not installed in the SDK, we + # create a "poison pill" genrule to display a helpful error message to + # a user who attempts to run a test against an android_device that + # they don't have the system image for installed. + native.genrule( + name = name, + outs = [ + # Necessary so that the build doesn't fail in analysis because + # android_device expects a file named source.properties. + "poison_pill_for_%s/source.properties" % name, + ], + cmd = """echo \ This rule requires that the Android SDK used by Bazel has the \ following system image installed: %s. Please install this system \ image through the Android SDK Manager and try again. ; \ exit 1 """ % name, - ) - native.filegroup( - name = "%s_qemu2_extra" % name, - srcs = [], - ) + ) + native.filegroup( + name = "%s_qemu2_extra" % name, + srcs = [], + ) |