Consider prebuilt vendor.img as having vendor partition.
vendor.img could be built from the source - in which case we have
unpacked files under VENDOR/ - or dropped in as a prebuilt binary blob.
We should consider either of them as target having a vendor partition.
Because we need to add its AVB hashtree info into vbmeta.img if target
is using AVB. Otherwise libfs_mgr would refuse to mount this
For targets not using AVB, this change is no-op.
Test: Having vendor.img as prebuilt, `make dist`. Check that the
generated vbmeta.img contains the info from vendor.img.
Test: Build, flash and boot the above image.zip.
(cherry picked from commit b22afea0f0ea3880f9386a837850b13bcffc295c)
(cherry picked from commit 2a2dbcd4b5f19751f2f2ccb3ffad84ffda96aae2)
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index cf78d5e..a203fe0 100755
@@ -502,7 +502,13 @@
print("target_files appears to already contain images.")
- has_vendor = os.path.isdir(os.path.join(OPTIONS.input_tmp, "VENDOR"))
+ # vendor.img is unlike system.img or system_other.img. Because it could be
+ # built from source, or dropped into target_files.zip as a prebuilt blob. We
+ # consider either of them as vendor.img being available, which could be used
+ # when generating vbmeta.img for AVB.
+ has_vendor = (os.path.isdir(os.path.join(OPTIONS.input_tmp, "VENDOR")) or
+ os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
has_system_other = os.path.isdir(os.path.join(OPTIONS.input_tmp,