Commit Graph

2556 Commits

Author SHA1 Message Date
Kelvin Zhang
2639048c21 Fix a failure in signing test
Pixel moved away from sparse images, so validate_target_files is failing
because it expects sparse images.

Test: th
Change-Id: I322ff10c2afbacfb4d78991be60c11aac92a6d4c
2021-11-03 21:43:22 -07:00
Kelvin Zhang
9b6d4ec01b Add a compressor types option
Test: th
Change-Id: I1ff1bccf179bfd87ce9e08def0e5e38921d7d158
2021-11-03 11:17:04 -07:00
Jooyung Han
8caba5e14e Support custom APEX signing tool
When an APEX specifies its custom signing tool (custom_sign_tool:),
apexkeys.txt contains the info and sign_target_files_apks pass the value
to apex_util.

For now the Virt APEX has its own custom signing tool (sign_virt_apex),
which is added to OTATOOLS.

Bug: 193504286
Test: sign_target_files_apks invokes sign_virt_apex
Change-Id: Iba845723fe3e18f542963324b9c58cd00914c5ba
2021-10-27 16:56:22 +09:00
Jooyung Han
0f5a41da56 sign_apex --sign_tool
A new argument is a custom signing tool for APEX contents. When
specified, apex_util invokes the tool with payload's key and payload
directory.

For now, the Virt APEX has its own custom signing tool (sign_virt_apex)
to re-sign filesystem images in it.

Bug: 193504286
Test: atest releasetools_test
Test: m sign_apex sign_virt_apex
Test: sign_apex --sign_tool sign_virt_apex --payload_key ..
  --container_key .. resigned.apex
      adb install resigned.apex
      reboot & vm run-app
Change-Id: Ic4d369c2ba42a8295044a0a75e054dc8def93208
2021-10-27 16:56:22 +09:00
Jooyung Han
c4b7b34b4b fix releasetools_test
Some test cases are failing because tests are not updated accordinly.

Bug: n/a
Test: atest releasetools_test
Change-Id: I3df071f72f01dedd6df4fa462ca52b8a0b1ffd4e
2021-10-27 16:06:10 +09:00
Treehugger Robot
2992dccd43 Merge "Allow data wipe for full OTAs" 2021-10-27 04:53:16 +00:00
Kelvin Zhang
81641afae4 Allow data wipe for full OTAs
Test: th
Change-Id: I7a751b461a5442d22ebca07c98624f35c02dca15
2021-10-26 16:03:25 -07:00
Treehugger Robot
d8f17b1fc4 Merge "Add pcluster and deduplication support for erofs images." 2021-10-16 01:56:43 +00:00
Treehugger Robot
777ef8384c Merge "sign_target_files_apks: adding --allow_gsi_debug_sepolicy" 2021-10-15 05:41:55 +00:00
Bowgo Tsai
2a781692ae sign_target_files_apks: adding --allow_gsi_debug_sepolicy
https://android-review.googlesource.com/q/topic:gsi_debug_policy
adds userdebug_plat_sepolicy.cil into the GSI system.img to
reduce the steps of repacking a debug ramdisk.

This CL checks that the file userdebug_plat_sepolicy.cil shouldn't
exist before signing, unless the caller explicitly specifies
--allow_gsi_debug_sepolicy to allow it.

Note: also fixes the indentation around the block.

Bug: 201482141
Test: sign_target_files_apks *-target_files-*.zip signed.zip
Change-Id: I56ed328a9ae70cf49dbd3c6efb5a4a8c54e1b7a7
2021-10-14 16:54:37 +08:00
David Anderson
64b351b882 Add pcluster and deduplication support for erofs images.
This adds BOARD_xIMAGE_EROFS_PCLUSTER_SIZE and
BOARD_EROFS_PCLUSTER_SIZE, which set the "pcluster size" of erofs images
for individual images or all erofs images respectively. The pcluster
size affects the maximum size of a physical compressed block.

This also adds BOARD_EROFS_SHARE_DUP_BLOCKS, which turns on chunk
support in EROFS.

Bug: 201685920
Test: manual test
Change-Id: I27ec0899f89890562796dd9fa567fc74182fbefb
2021-10-13 01:03:10 -07:00
David Anderson
d29e5371e1 Add blocklist support for EROFS.
This also fixes argument ordering for mkerofsimage.sh.

Bug: 201685920
Test: build OTA with erofs
Change-Id: Ic2ba794e37a0feb73a1028eb7522d35bffbf3af6
2021-10-13 01:03:08 -07:00
David Anderson
271dab6ceb Clean up code duplication in build_image.py.
This is another code block where lots of stuff is duplicated, making it
hard to add new partitions or partition features.

Bug: N/A
Test: m otapackage, treehugger
Change-Id: I4c71275303a9246b37c03b24f531925b90d26fc8
2021-10-11 21:20:35 -07:00
Christine Tsai
28b5a7c806 Revert "Clean up code duplication in build_image.py."
This reverts commit aac502fa31.

Reason for revert: Build breakage

Bug: 202674967
Change-Id: I331aef1896db236726b5313580a1172c08173702
2021-10-11 17:25:27 +00:00
David Anderson
aac502fa31 Clean up code duplication in build_image.py.
This is another code block where lots of stuff is duplicated, making it
hard to add new partitions or partition features.

Bug: N/A
Test: m otapackage, misc_info.txt is identical
Change-Id: I435987605fc66b78bfaf454556f1eaa498e3728f
2021-10-08 17:21:43 -07:00
Treehugger Robot
0b08b8dc14 Merge "Fix aosp_x86_64-user build failure" 2021-09-27 15:51:27 +00:00
Bowgo Tsai
aba5c9eacd Fix aosp_x86_64-user build failure
Commit Ia982eb2ee3d1eb64db72c1836e433bcc53e71e3f removes boot-5.4.img
and leaves only a boot-5.10.img file, which makes 'boot_container'
become false. This leads to the failure in AddVbmetaDigest() as it will
search a 'boot.img' based on the 'boot' descriptor from the vbmeta.img.

Add a condition that if boot_images[0] is not 'boot.img' then the
build is also a boot container.

Bug: 199807830
Test: build aosp_x86_64-user
Change-Id: I4a9487b075186f0abf2ba74d3a1cf78072352a05
2021-09-27 14:11:14 +08:00
David Anderson
40a821f600 Allow changing the EROFS compressor.
This adds BOARD_EROFS_COMPRESSOR to change the compression algorithm
globally, and BOARD_{x}IMAGE_EROFS_COMPRESSOR to change it for
individual partitions.

Bug: N/A
Test: manual test
Change-Id: I2ef831558242a4070ee96269140c33b66c689351
2021-09-22 18:04:27 -07:00
David Anderson
dfc9d7912f Merge "Avoid too much reserved_size for erofs image" 2021-09-16 19:36:29 +00:00
Daniel Norman
78554ea568 Build vendor images first when rebuilding with vendor_otatools.
Only supports rebuilding vendor.img and odm.img currently.

This allows "other" images (e.g. vbmeta, super_empty, ...) to
be rebuilt using the latest tooling.

Bug: 188491126
Bug: 192422274
Test: Sign a GRF R+S merged target_files package using:
      sign_target_files_apks \
        --vendor_otatools=<otatools.zip from R> \
	--vendor_partitions=vendor,odm \
	merged-target_files.zip \
	signed-target_files.zip
Change-Id: Ib93aea9f083ee9b722c31a42dcc780b5222053b8
2021-09-15 21:53:25 +00:00
Greg Kaiser
d9c6d5fc91 Merge "Revert "Rebuild vendor images in sign_target_files_apks with vendor otatools."" 2021-09-14 19:38:29 +00:00
Greg Kaiser
e086f7222e Revert "Rebuild vendor images in sign_target_files_apks with vendor otatools."
This reverts commit a1094e9f0c.

Reason for revert: Likely cause for b/199911935

Change-Id: Ib20400cc2f740a26fbbfb0da34fdf20ed7dc620e
2021-09-14 19:32:27 +00:00
Daniel Norman
97e0c2831d Merge "Rebuild vendor images in sign_target_files_apks with vendor otatools." 2021-09-13 20:12:11 +00:00
Huang Jianan
6552727e03 Avoid too much reserved_size for erofs image
After the erofs image is built, it won't be modified again. The reserve
room is only used for the hash footer. There is no need to set an
excessive margin.

Bug: 199248596
Test: erofs image size is smaller than before
Signed-off-by: Huang Jianan <huangjianan@oppo.com>
Change-Id: If2535b9ad2c2d60bea74feeca576a168387ff341
2021-09-13 02:03:13 +00:00
Yifan Hong
1ab1c2ff96 Merge "Avoid repeated building of erofs image" 2021-09-11 00:05:45 +00:00
Tianjie
e7ab38d964 Add option to override minor version
Pass the minor version override to delta_generator. So we can test
features in tradefed before releasing it to droidfoods.

Bug: 197361113
Test: TH
Change-Id: Ie8846935dfa13784f0745513be13811908f44ac3
2021-09-09 12:16:19 -07:00
Daniel Norman
a1094e9f0c Rebuild vendor images in sign_target_files_apks with vendor otatools.
This is needed until image compilation tooling is backwards compatible.

Bug: 188491126
Bug: 192253131
Bug: 192422274
Test: Sign a GRF R+S merged target_files package using:
      sign_target_files_apks \
        --vendor_otatools=<otatools.zip from R> \
	--vendor_partitions=vendor,odm,vbmeta \
	merged-target_files.zip \
	signed-target_files.zip
Change-Id: Iec208f544b56f8ed577344d8d6ca904773d8baab
2021-09-09 17:32:22 +00:00
Huang Jianan
ffa1d57819 Avoid repeated building of erofs image
The image size of erofs is only affected by the content of the input
file, so it doesn't care about the input image_size. In addition, the
build time of erofs image is longer than ext4 due to compression. Only
execute mkfs once to reduce unnecessary time consumption.

Bug: 199248596
Test: erofs image build faster than before
Signed-off-by: Huang Jianan <huangjianan@oppo.com>
Change-Id: I23a4e640d5066485de3fea0f808998045e716d1f
2021-09-09 14:18:59 +08:00
David Anderson
9e95a02a87 Don't sparse right-sized ext4 and erofs images.
When we introduced Dynamic Partitions, we stopped giving readonly
partitions fixed sizes. In addition we introduced deduplication for
ext4. These two factors greatly reduce the impact of sparse images,
since there aren't many fill blocks to optimize.

This patch disables sparsing for images that are rightsized and do not
explicitly specify extra reserved space. This makes the images a little
easier to work with from an engineering perspective. They no longer have
to be unsparsed to interact with any tooling. It also eases a potential
source of bugs, as b/184225422 is not reproducible with sparsing off.

On Pixel, the difference between the sparsed partitions and unsparsed is
12M (out of roughly 4G).

Bug: 198001223
Test: make, treehugger, make target-files-package
      dynamic partitions are no longer sparse images
Change-Id: I74459f8abe74a15a24ba5a40cf701e6af2db8179
2021-09-01 13:12:39 -07:00
Kelvin Zhang
1250bcab0a Allow user to manually override enable_vabc_xor
--enable_vabc_xor=false to disable, --enable_vabc_xor=true or
--enable_vabc_xor to enable

Also the flag is now enabled by default. But update_engine will
still ignore XOR ops, as update_engine support for XOR is WIP.

Test: th
Change-Id: I038b0dda5cc9efcc1620e72c858626b56ffb1611
2021-08-31 18:52:47 +00:00
Kelvin Zhang
414ca429cf Check for vintf compatiblity early in generation process
Currently CheckVintfIfTrebleEnabled is called after generating payload.
Users have to wait for ~1 hour before vintf is checked. Do the check
early and fail early.

Test: th
Change-Id: I2e4a8c7eaa62c94c92973c127b1d825a26e63b35
2021-08-31 11:22:34 -07:00
Kelvin Zhang
ad427381b9 Respect VABC Xor prop in ota_from_target_files
Test: generate ota on a non-vabc xor target, make sure it's not used
Change-Id: Ibdbcfe3775c96848c37c7f580121583d4bd57fce
2021-08-12 17:55:57 -07:00
Kelvin Zhang
3645e89d8e Merge "Make apex util detect if hashtree is present" 2021-08-06 23:31:59 +00:00
Kelvin Zhang
7cab7503e2 Make apex util detect if hashtree is present
Test: sign_target_fiels_apks oriole_target_files.zip
Bug: 195194430

Change-Id: I919d169ce4d66e6a1cdbfd15babde25005971a30
2021-08-06 11:51:37 -04:00
Yifan Hong
a4140d22df releasetools: better logs.
Bug: 195481978
Test: none
Change-Id: I86edfa653715dbbfab22ea29f4fd9e64fc57ef5a
2021-08-04 18:09:15 -07:00
Kelvin Zhang
25ab998d82 Fix a bug in computing streaming property of payload.bin
When computing the data offset of an entry in zip file, we used length
of extra field from central directory. That is correct most of the time
but wrong if the extra field in central directory has different length
than the one in local file directory. Since python's zipfile doesn't
provide an API to access local file header, we need to parse local file
header ourselves and extract length of extra field.

An incorrect offset will cause magic mismatch error from update_engine,
as update_engine expects to find uncompressed payload at the recorded
offset.

Test: th, partner verification
Bug: 191443484

Change-Id: Id670cd79b0bd65adffaaa5224ae4f8065d66b358
2021-07-28 11:40:18 -04:00
Jooyung Han
6c4e8d5f97 Merge "cleanup: remove unnecessary steps in apex_utils" 2021-07-28 00:56:41 +00:00
Kelvin Zhang
a19fb315e0 Skip vbmeta_system if it doesn't exist
Test: validate_target_files bonito-target_files-7582772.zip
Change-Id: I2da4f5a7897b1ef155e17441a8f5b97c0716d601
2021-07-27 09:17:05 -04:00
Kelvin Zhang
76e3fb0597 Merge "Add an option for VABC xor" 2021-07-24 00:25:03 +00:00
Jose "Pepe" Galmes
81005b13f7 Merge "Support for dexopt postprocessing in merge_target_files." 2021-07-23 04:42:43 +00:00
Jose Galmes
9c8f6eb7e1 Support for dexopt postprocessing in merge_target_files.
When using the VSDK, dexopt is not applied during the vendor build.
To avoid a first-boot time regression, dexopt is applied during the
merge stage, by running dexopt on the vendor apps and rebuilding
the vendor image.

Bug: 188179859
Test: Tested in keystone with VSDK target
Change-Id: Ie8e2d0a82850a2901fa6f250433bcbb43f0a97f2
2021-07-22 13:39:10 -07:00
Jooyung Han
f9be5eeb44 cleanup: remove unnecessary steps in apex_utils
`zipalign` before `signapk -a 4096` is unnecessary step since `signapk
-a 4096` does the same thing.

And, compressed APEX files don't need entries to be aligned.

Bug: 193362313
Test: atest --host releasetools_test
Change-Id: I0758d1162f7c3eb8cc9c73978b5ae5484f007a3a
2021-07-22 18:37:02 +09:00
Tianjie
35ec7561d0 Amend owner files for releasetool scripts
Test: th
Change-Id: Ia77586f634609e5f3a8868e7d1237776052aab30
2021-07-21 16:10:53 -07:00
Jooyung Han
ebe9afeb4a signapk: --align-file-size flag
A new flag tells that the resulting file size should be aligned as well.

For example, signapk -a 4096 --align-file-size ... generates the output
file of 4K-aligned sized.

Bug: 192991318
Test: check built APEX file size.
  APEX files should be sized as 4K-aligned.
Change-Id: I1c287e7219b4551bbb3e5957bdb64d80adfd3c39
2021-07-21 00:19:07 +00:00
Daniel Norman
e62232d71a Merge "Adjust some behaviors for --rebuild-sepolicy" 2021-07-19 20:39:09 +00:00
Tianjie
c3bf3d00a3 Write the vbmeta digest to the output zipfile also
During signing, we write the entry directly to the output zip, intead
of a temp directory. Add the logic to write vbmeta_digest.txt to output
zipfile too. So the digest file will show up in the signed target files.

Bug: 189926233
Test: add_img_to_target_files -a <target-files.zip>
Change-Id: Ibf28a8f97512bda8c8c695e06190e1fb6573c53e
2021-07-14 16:03:08 -07:00
Kelvin Zhang
f66caeec58 Add an option for VABC xor
Test: th
Change-Id: Ia6ec01a834280cbaada82012ed35dfeeff53eba6
2021-07-12 09:44:42 -04:00
Po Hu
0e4403e846 Adjust some behaviors for --rebuild-sepolicy
1. system_ext or product may not be a standalone partition,
2. keep symbolic links in vendor image,
3. target-files package may not contain IMAGES folder.

Bug: 192422274
Change-Id: I77867408cc764abb975319a23c387ec63fcf87c3
2021-07-08 09:49:48 +08:00
Daniel Norman
571e182e9c Regenerate odm or vendor using combined sepolicy if --rebuild-sepolicy.
This allows merged devices to boot using a precompiled_sepolicy built
from merged sources, rather than recompiling this sepolicy at boot
time every boot.

Bug: 178727214
Test: Merge an R+S build using --rebuild-sepolicy and --vendor-otatools.
      Observe odm.img is rebuilt by the vendor otatools.zip
        when merging.
      Observe device boots using ODM's precompiled_sepolicy file.
Test: Same as above, for S+S.
Test: Merge an S+S build using --rebuild-sepolicy and *not*
        --vendor-otatools.
      Observe odm.img is rebuilt without using a separate otatools.zip.
      Observe device boots using ODM's precompiled_sepolicy file.
Change-Id: I9595b8a3296d6deec21db8f0c9bc5b7ec4debd57
2021-07-01 16:29:15 -07:00
Tianjie Xu
8b92dab126 Merge "Add apex info to the streaming property file" 2021-06-29 23:58:47 +00:00