Build build_image and build_super_image as modules.
Bug: 63866463
Test: TreeHugger
Test: `atest releasetools_test`
Test: `atest releasetools_py3_test`
Change-Id: I2059a4ced709d1b2ee331a9aaaa5ca30db4ebf6b
diff --git a/tools/releasetools/Android.bp b/tools/releasetools/Android.bp
index 1bb1603..d4c4673 100644
--- a/tools/releasetools/Android.bp
+++ b/tools/releasetools/Android.bp
@@ -13,56 +13,124 @@
// limitations under the License.
python_defaults {
- name: "releasetools_defaults",
+ name: "releasetools_library_defaults",
version: {
py2: {
enabled: true,
- embedded_launcher: false,
},
py3: {
enabled: true,
- embedded_launcher: false,
},
},
}
python_library_host {
- name: "releasetools_lib",
- defaults: ["releasetools_defaults"],
+ name: "releasetools_common",
+ defaults: ["releasetools_library_defaults"],
srcs: [
- "add_img_to_target_files.py",
- "apex_utils.py",
"blockimgdiff.py",
- "build_image.py",
- "build_super_image.py",
- "check_ota_package_signature.py",
- "check_target_files_signatures.py",
"common.py",
- "edify_generator.py",
- "img_from_target_files.py",
"images.py",
- "make_recovery_patch.py",
- "merge_target_files.py",
- "ota_from_target_files.py",
- "ota_package_parser.py",
"rangelib.py",
- "sign_apex.py",
- "sign_target_files_apks.py",
"sparse_img.py",
- "target_files_diff.py",
- "validate_target_files.py",
+ ],
+ // Only the tools that are referenced directly are listed as required modules. For example,
+ // `avbtool` is not here, as the script always uses the one from info_dict['avb_avbtool'].
+ required: [
+ "aapt",
+ "boot_signer",
+ "brotli",
+ "bsdiff",
+ "imgdiff",
+ "minigzip",
+ "mkbootfs",
+ ],
+}
+
+python_library_host {
+ name: "releasetools_verity_utils",
+ defaults: ["releasetools_library_defaults"],
+ srcs: [
"verity_utils.py",
],
+ required: [
+ "append2simg",
+ "build_verity_metadata",
+ "build_verity_tree",
+ "fec",
+ ],
+}
+
+python_defaults {
+ name: "releasetools_binary_defaults",
+ version: {
+ py2: {
+ enabled: true,
+ embedded_launcher: true,
+ },
+ py3: {
+ enabled: false,
+ embedded_launcher: false,
+ },
+ },
+}
+
+python_binary_host {
+ name: "build_image",
+ defaults: ["releasetools_binary_defaults"],
+ srcs: [
+ "build_image.py",
+ ],
+ main: "build_image.py",
+ libs: [
+ "releasetools_common",
+ "releasetools_verity_utils",
+ ],
+ required: [
+ "blk_alloc_to_base_fs",
+ "e2fsck",
+ "simg2img",
+ "tune2fs",
+ ],
+}
+
+python_binary_host {
+ name: "build_super_image",
+ defaults: ["releasetools_binary_defaults"],
+ srcs: [
+ "build_super_image.py",
+ ],
+ main: "build_super_image.py",
+ libs: [
+ "releasetools_common",
+ ],
}
python_defaults {
name: "releasetools_test_defaults",
- defaults: ["releasetools_defaults"],
srcs: [
+ "add_img_to_target_files.py",
+ "apex_utils.py",
+ "build_image.py",
+ "build_super_image.py",
+ "check_ota_package_signature.py",
+ "check_target_files_signatures.py",
+ "edify_generator.py",
+ "img_from_target_files.py",
+ "make_recovery_patch.py",
+ "merge_target_files.py",
+ "ota_from_target_files.py",
+ "ota_package_parser.py",
+ "sign_apex.py",
+ "sign_target_files_apks.py",
+ "target_files_diff.py",
+ "validate_target_files.py",
+
"test_*.py",
],
libs: [
- "releasetools_lib",
+ "releasetools_common",
+ "releasetools_verity_utils",
],
data: [
"testdata/*",
@@ -79,6 +147,9 @@
version: {
py2: {
enabled: true,
+ // When using embedded launcher, atest will try (but may fail) to load libc++.so from
+ // host, because the test executable won't be able to find the needed libs via its
+ // runpath.
embedded_launcher: false,
},
py3: {
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index ee05dd5..af508fe 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -18,7 +18,7 @@
Builds output_image from the given input_directory, properties_file,
and writes the image to target_output_directory.
-Usage: build_image.py input_directory properties_file output_image \\
+Usage: build_image input_directory properties_file output_image \\
target_output_directory
"""