Commit Graph

2556 Commits

Author SHA1 Message Date
Jan Monsch
e147d481fe Removing AFTL integration from release tools.
Bug: 158639560
Test: Treehugger
Change-Id: I6949385e3448ad539099966c41ce99f156e3fdc4
2021-06-29 12:38:59 +00:00
Jaegeuk Kim
3dc47280e2 Support block_list and readonly for f2fs
Bug: 190760483
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: I9bb3a91d46494ce5ea5c842c3927ea7d97fa24f3
2021-06-24 22:29:05 -07:00
Treehugger Robot
c09cda8c6c Merge "Add ro.vendor.build.dont_use_vabc to disable VABC OTA" 2021-06-14 18:37:29 +00:00
Kelvin Zhang
10eac08fe1 Add ro.vendor.build.dont_use_vabc to disable VABC OTA
This prop is owned by OEM, OEM can set this if they want to disable
VABC.

Test: m dist, make sure generated OTA has VABC disabled
Bug: 185400304

Change-Id: Iceb2fb1f399d38a51722352a86ddf68af05fa24e
2021-06-14 10:23:14 -04:00
Tianjie
4d48d50036 Handles capex in signing script
Today, the signing script simply ignores capex files, because it
looks for hardcoded '.apex' suffix. Add support to handle capex
as well.

Bug: 190574334
Test: Sign a target file locally
Change-Id: I3085ca7b0396a4fbf1b220f7de44d4eafb60c3d8
2021-06-11 17:14:22 -07:00
Tianjie
d868c12467 Add apex info to the streaming property file
So updaters can streaming download the file, and query the apex info
inside the file.

Bug: 190244686
Test: generate an OTA package, check the streaming property
Change-Id: I17078d3f8d60ca53c6afe82f74b232e2fb242467
2021-06-10 14:44:26 -07:00
Tianjie Xu
d3c78b8cde Merge "Amend the apex info for ota package" 2021-06-09 20:16:08 +00:00
Jaegeuk Kim
1f50a36c62 Missing required packages for f2fs when building ota package
Bug: 171942852
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: Ib2ecc0cf88d71f358bd04e6c4ac129607fe4054c
2021-06-08 19:12:15 -07:00
Tianjie
a5fca03e0a Amend the apex info for ota package
We have already logged the compressed apexes in the target-files.
Because we want to support the apex metrics during OTA update, also
include the uncompressed apexes in the META/apex_info.pb.

For incremental OTA packages, include the source apex version for
each apex package as well.

Bug: 190244686
Test: unit test
Change-Id: I5cf2647c56c4feb5517f9a81aa1e9abc52515bf1
2021-06-07 20:33:46 -07:00
Kelvin Zhang
766eea72ef Handle caremap for partial OTAs
When generating a partial OTA, filter care_map.pb to include only the
partial partitions, then generate OTA.

Test: Generate a partial OTA, make sure care map is included.

Change-Id: I0eaa12772eb1d06a57451e64f70689d3183f0115
2021-06-04 16:17:32 -04:00
Jaegeuk Kim
d56fb727ba Merge changes from topic "f2fs-system"
* changes:
  Enable f2fs compression for other partitions
  Enable --readonly for system compression
2021-05-27 18:42:28 +00:00
Tianjie Xu
f4ca0567dd Merge "Check super size for factory OTA at build time" 2021-05-26 21:33:14 +00:00
Kelvin Zhang
ea7c944d62 Merge "Validate AVB props in vbmeta image" 2021-05-26 20:41:17 +00:00
Kelvin Zhang
4093d60f35 Validate AVB props in vbmeta image
Bug: 183055693
Test: th
Test: validate_target_files signed-redfin-target_files-7119741.zip

Change-Id: I027d474ba3eb6af5e05866551ff9ea506825a326
2021-05-26 17:59:24 +00:00
Jaegeuk Kim
1369654d8d Enable f2fs compression for other partitions
Bug: 171942852
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: I231f7a2b808cc792fd582cd444825e4a47722984
2021-05-25 14:54:45 -07:00
Jaegeuk Kim
46e0ea2ce1 Enable --readonly for system compression
This option is to reduce system partition size.

Bug: 171942852
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: Idc849cfce33ac0badb2b9b7953bb821c46a24472
2021-05-25 14:50:04 -07:00
Bowgo Tsai
cf9ead8972 Support AVB signing for BOARD_PREBUILT_BOOTIMAGE
Devices using GKI architecture will use a prebuilt boot.img.
However, we should still sign this prebuilt boot.img with
device-specific AVB keys.

Steps to test the CL.
1. In a device BoardConfig.mk:

   # Uses a prebuilt boot.img
   TARGET_NO_KERNEL := true
   BOARD_PREBUILT_BOOTIMAGE := device/google/redbull/boot.img

   # Enable chained vbmeta for the boot image.
   # The following can be absent, where the hash descriptor of the
   # 'boot' partition will be stored then signed in vbmeta.img instead.
   BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
   BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA4096
   BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
   BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2

2. `make bootimage`, then `avbtool info_image --image $OUT/boot.img`,
    checks the image is re-signed with a device-specific key

3. `make dist` to generate out/dist/TF.zip

4. `unzip out/dist/TF.zip IMAGES/boot.img`

5. `avbtool info_image --image out/dist/IMAGES/boot.img`,
    checks the image is re-signed with a device-specific key

6. `sign_target_files_apks \
      --avb_boot_key=external/avb/test/data/testkey_rsa8192.pem \
      --avb_boot_algorithm=SHA256_RSA8192 \
      --avb_boot_extra_args="--prop test:sign" \
      ./out/dist/*-target_files-eng.*.zip signed.zip`, resign the TF.zip

7. `unzip signed.zip IMAGES/boot.img`, then use `avbtool info_image` to
   check the boot.img is re-signed with the --avb_boot_key in step 6.

Bug: 188485657
Test: above steps
Change-Id: I7ee8b3ffe6a86aaca34bbb7a8898a97b3f8bd801
2021-05-21 08:44:37 +00:00
Kelvin Zhang
51c8f9f34c Merge "Expose ota_metadata_proto for consumption" 2021-05-19 12:59:43 +00:00
Tianjie Xu
77e0d86f26 Merge "When checking if mke2fs is used, compare using basename" 2021-05-18 02:10:02 +00:00
Treehugger Robot
20fed4ad29 Merge "check_target_files_signatures actually needs aapt2, not aapt." 2021-05-15 00:36:09 +00:00
Elliott Hughes
16a5cac394 check_target_files_signatures actually needs aapt2, not aapt.
Test: treehugger
Change-Id: Ia0ff6d16a64f96fd9e2b9d33711cc9b94734c4ff
2021-05-14 15:27:23 -07:00
Kelvin Zhang
a3a74b69ac Expose ota_metadata_proto for consumption
Recovery needs to parse OTA metadata and perform various safety checks

Test: th
Change-Id: Ibbfa55a8ec8a15d37adb57299ed6ee89b06ba368
2021-05-14 17:18:43 -04:00
Kelvin Zhang
4de9bb23f2 Reland: Enable verity computation on VABC devices
Test: th
Test: Manual OTA test on bramble, pause/resume multiple times
Test: verity enabled, VABC enabled OTA
Test: verity enabled, VABC disabled OTA
Test: verity disabled, VABC enabled OTA
Test: verity disabled, VABC disabled OTA

Change-Id: Ia236984b158761f84f54ab7a6d3d49491c249546
2021-05-14 12:38:28 -04:00
Tianjie
294ec7d9e5 Check super size for factory OTA at build time
For VAB launched device, factory OTA will write system_other
partition to the super image. So we want to check that
sum(dynamic partitions) + system_other + overhead <= super at
build time.

Since we don't know the overhead at build time, we might instead
check sum(all partitions) < super.

Bug: 185809374
Test: m check-all-partition-sizes, unittests
Change-Id: Ia7ba5999d23924a1927e9a9463856a4d0ea90c20
2021-05-13 17:41:52 -07:00
Tianjie Xu
fc15d50d6d Merge "Calculate the runtime ro.build.id in ota scripts" 2021-05-11 19:19:09 +00:00
Håkan Kvist
2e1f5271c5 When checking if mke2fs is used, compare using basename
build_image adds additional parameters (uuid, hash_seed) if
prop_dict["ext_mkuserimg"] is set to "mkuserimg_mke2fs".
The comparison does not take paths into consideration, so passing a
full path to mkuserimg_mke2fs would cause the parameters to not
be included.

This is currently not an issue for aosp builds, but could cause problems
for customized build systems.

Bug: 187742822
Test: Manual, using vendor build system, also executed 'm droid'
Change-Id: I7a8973dd0c4d8a39aea5aafcfe1aa69750fb1449
2021-05-11 16:48:53 +02:00
Treehugger Robot
dcadb68011 Merge "sign_target_files_apks: replacing GKI signing args completely" 2021-05-11 07:30:16 +00:00
Tianjie
fdda51d2ae Calculate the runtime ro.build.id in ota scripts
If the build prop ro.build.id isn't set at build time, init will
set it at runtime. The logic is appending the vbmeta digest to
the ro.build.legacy.id.

Make the same change in ota scripts, so the correct build fingerprint
will be saved in the ota metadata.

Bug: 186786987
Test: generate an OTA, check the metadata
Change-Id: I278f59c41c1f98d4cbea749e5d9e4eaf7a6b9565
2021-05-10 11:35:48 -07:00
Bowgo Tsai
bcae74def7 sign_target_files_apks: replacing GKI signing args completely
Commit I8bd8ad3acf324931b47d45fd30bc590206b1927e adds a default
value of "gki_signing_signature_args" in the misc_info.txt for
release signing to work. However, it's better to replace the default
value entirely (e.g., --prop foo:bar) as there is no need to include
them in the final release-signed image.

Bug: 178559811
Bug: 177862434
Test: atest releasetools_test
Test: atest releasetools_py3_test
Change-Id: I060b5a7076ff3e5d883abeb7d72f3db887c9fd69
2021-05-10 17:43:52 +08:00
Treehugger Robot
e86abec252 Merge "Add ota_metadata_proto_java" 2021-05-08 21:44:57 +00:00
Tianjie Xu
efc00ca7b2 Merge "Calculate the vbmeta digest when building images" 2021-05-07 19:06:32 +00:00
Tianjie
bbde59f9eb Calculate the vbmeta digest when building images
Calculate the vbmeta digest if the device builds vbmeta image. The
digest will used later to determine the build fingerprint in new
format.

One sample usage is the ota package generation, where we put the
build fingerprint in the ota metadata. But we don't have the runtime
vbmeta digest provided the bootloader.

Bug: 186786987
Test: unit tests
Change-Id: If572e2b973e295a6c95a9e23a65bb20b3afbf1b0
2021-05-05 18:04:51 +00:00
Kelvin Zhang
2b6a9c3133 Add ota_metadata_proto_java
Test: th
Change-Id: Iac9b679299db6a23cdf85d7c46f20d0538ba6015
2021-05-05 09:08:12 -04:00
Kelvin Zhang
2a3e5b1cf5 Disable downgrade VABC OTAs
Downgrade VABC OTA causes users to wait in recovery for merge to
complete, disable by default.

Test: th
Test: generate downgrade OTA, make sure VABC disabled
Test: generate upgrade OTA with --wipe_user_data, make sure VABC
disabled
Test: generate upgrade OTA, make sure VABC is used
Test: generate downgrade OTA with --vabc_downgrade, make sure VABC is
enabled
Bug: 187215486

Change-Id: Ib7e6165252d47f1ecaac4fc2329b580274c8d70e
2021-05-05 09:08:12 -04:00
Treehugger Robot
34949e63da Merge "Avoid to print undefined image_size and partition_size" 2021-05-01 03:45:13 +00:00
Kelvin Zhang
563750f483 Disable VABC if either source/target doesn't support it
If source supports VABC, delta_generator/update_engine will attempt to
use VABC. This dangerous, as the target build won't have snapuserd to
serve I/O request when device boots. Therefore, disable VABC if source
build doesn't supports it.

Test: downgrade from VABC enabled build to a build w/o VABC

Change-Id: Ie8353e00f65354c2242ee5255b6652c6b62483a4
2021-04-30 10:06:26 -04:00
Huang Jianan
f63abb1cae Avoid to print undefined image_size and partition_size
If dynamic partitioning is enabled and the partition size is not set,
we will get a KeyError before image_size or partition_size is calculated
when we try to catch exception in BuildImageMkfs.

Bug: 186704243
Test: build_image.py can correctly throw exception
Change-Id: I3d8c143ad5603d07fe94afb8bb911ead244f0bf7
Signed-off-by: Huang Jianan <huangjianan@oppo.com>
2021-04-29 07:40:46 +00:00
Treehugger Robot
243f9ea65f Merge "sign_target_files_apks: Relax ro.build.description requirements" 2021-04-24 05:13:01 +00:00
Treehugger Robot
87cfdce392 Merge "Revert "Enable support for verity writes for VABC targets"" 2021-04-24 03:36:26 +00:00
Kelvin Zhang
c777570825 Revert "Enable support for verity writes for VABC targets"
This reverts commit 6bb647fb85.

Reason for revert: b/186213024

Change-Id: I35054cf263c9118933fb885d5740546af3d4deec
2021-04-23 22:44:01 +00:00
jiajia tang
92b6078314 Simplify codes for BuildSuperImage func
Use common function LoadDictionaryFromFile(), instead
of LoadDictionaryFromLines(). Makes these codes conciser.

Change-Id: Ibb6f19744246b3415bcd639bc59dbb2aede725d9
Signed-off-by: jiajia tang <tangjiajia@xiaomi.com>
2021-04-23 19:58:40 +08:00
Treehugger Robot
8d437e4168 Merge "Enable support for verity writes for VABC targets" 2021-04-22 18:09:11 +00:00
Kelvin Zhang
6bb647fb85 Enable support for verity writes for VABC targets
We already added support on device to write verity. Flipping a flag in
ota generation tools to enable verity.

Test: th && running OTA repeatedly on bramble
Change-Id: Id1639f644eb8c23f97e171264702a7872f41411a
2021-04-21 15:19:23 -04:00
jiajia tang
92be6ee9d7 More accurate error if input_file is not exists
This patch is intended to make build log is more
accurate if input_file is not exists, then check if
it is a zipfile.

Change-Id: I30da0141ea44fc3ce0947f868a86a15a054a4346
Signed-off-by: jiajia tang <tangjiajia@xiaomi.com>
2021-04-21 16:41:58 +08:00
Daniel Norman
e9af70ad68 Performs basic APEX validation in the merged target files package.
Uses apex_utils.GetApexInfoFromTargetFiles to find and parse APEX files
in the target files partition dirs. Raises an error on failure to parse
or duplicate package names.

Bug: 177225446
Test: releasetools_test
Test: Create a merged build that provides the VNDK APEX on both vendor
      and system. Observe failure.
Change-Id: I1356e263b7b32d6063129e079f3ba7ab4ff132a7
2021-04-19 22:31:01 +00:00
Kelvin Zhang
6c17ed3185 Re-raise exceptions instead of sys.exit
Test: th
Change-Id: I3ac343b51eeeaa948712be81b640122f9981137d
2021-04-14 14:59:12 -04:00
Daniel Norman
db8cacc976 Generate care_map.pb when merging target files packages.
Test: build a merged target using Forrest,
      Observe META/care_map.pb
Bug: 182296208
Change-Id: Ic269fa99ec8ed2bd474a2f69b1be1f545c567112
2021-04-13 11:43:02 -07:00
Kelvin Zhang
2732413fa2 Moves care map generation logic to common.py, so it can be reused.
Test: th
Bug: 182296208
Change-Id: I045be7cb208412431d6ab1c26e31d38d2285738b
2021-04-13 11:42:26 -07:00
Stefen Wakefield
4260fc1575 sign_target_files_apks: Relax ro.build.description requirements
Some OEMs, namely OnePlus don't use AOSP compliant build description.
Making sure that the last piece ends with -keys is more than enough.

Change-Id: Iefa3c408a3fdda0b63db257befb8ba2d36793293
2021-04-12 17:33:29 +00:00
jiajia tang
836f76bc3a Unify the style of _MakeRamdisk for ramdisk format
RamdiskFormat class is introduced by commit : f3f842b676
But it seems _MakeRamdisk() related codes are also needed, then
both of the code style are same.

This patch takes below 2 changes:
1) adds new commom function _GetRamdiskFormat()
2) unfiy the code logic of _MakeRamdisk() and its related code logic.

Change-Id: Ibd4932a6050fbac15fcd741c70dd7854c12e887d
Signed-off-by: jiajia tang <tangjiajia@xiaomi.com>
2021-04-08 09:55:15 +00:00