Merge "Minor refactor tools/releasetools/common.py" into main

This commit is contained in:
Dennis Song
2023-10-03 06:19:23 +00:00
committed by Gerrit Code Review
2 changed files with 17 additions and 11 deletions

View File

@@ -20,7 +20,6 @@ import copy
import datetime import datetime
import errno import errno
import fnmatch import fnmatch
from genericpath import isdir
import getopt import getopt
import getpass import getpass
import gzip import gzip
@@ -34,12 +33,13 @@ import re
import shlex import shlex
import shutil import shutil
import subprocess import subprocess
import sys
import stat import stat
import sys
import tempfile import tempfile
import threading import threading
import time import time
import zipfile import zipfile
from genericpath import isdir
from hashlib import sha1, sha256 from hashlib import sha1, sha256
import images import images
@@ -112,13 +112,18 @@ SPECIAL_CERT_STRINGS = ("PRESIGNED", "EXTERNAL")
# descriptor into vbmeta.img. When adding a new entry here, the # descriptor into vbmeta.img. When adding a new entry here, the
# AVB_FOOTER_ARGS_BY_PARTITION in sign_target_files_apks need to be updated # AVB_FOOTER_ARGS_BY_PARTITION in sign_target_files_apks need to be updated
# accordingly. # accordingly.
AVB_PARTITIONS = ('boot', 'init_boot', 'dtbo', 'odm', 'product', 'pvmfw', 'recovery', AVB_PARTITIONS = ('boot', 'init_boot', 'dtbo', 'odm', 'product', 'pvmfw',
'system', 'system_ext', 'vendor', 'vendor_boot', 'vendor_kernel_boot', 'recovery', 'system', 'system_ext', 'vendor', 'vendor_boot',
'vendor_dlkm', 'odm_dlkm', 'system_dlkm') 'vendor_kernel_boot', 'vendor_dlkm', 'odm_dlkm',
'system_dlkm')
# Chained VBMeta partitions. # Chained VBMeta partitions.
AVB_VBMETA_PARTITIONS = ('vbmeta_system', 'vbmeta_vendor') AVB_VBMETA_PARTITIONS = ('vbmeta_system', 'vbmeta_vendor')
# avbtool arguments name
AVB_ARG_NAME_INCLUDE_DESC_FROM_IMG = '--include_descriptors_from_image'
AVB_ARG_NAME_CHAIN_PARTITION = '--chain_partition'
# Partitions that should have their care_map added to META/care_map.pb # Partitions that should have their care_map added to META/care_map.pb
PARTITIONS_WITH_CARE_MAP = [ PARTITIONS_WITH_CARE_MAP = [
'system', 'system',
@@ -1467,7 +1472,7 @@ def GetAvbPartitionArg(partition, image, info_dict=None):
# Check if chain partition is used. # Check if chain partition is used.
key_path = info_dict.get("avb_" + partition + "_key_path") key_path = info_dict.get("avb_" + partition + "_key_path")
if not key_path: if not key_path:
return ["--include_descriptors_from_image", image] return [AVB_ARG_NAME_INCLUDE_DESC_FROM_IMG, image]
# For a non-A/B device, we don't chain /recovery nor include its descriptor # For a non-A/B device, we don't chain /recovery nor include its descriptor
# into vbmeta.img. The recovery image will be configured on an independent # into vbmeta.img. The recovery image will be configured on an independent
@@ -1479,7 +1484,7 @@ def GetAvbPartitionArg(partition, image, info_dict=None):
# Otherwise chain the partition into vbmeta. # Otherwise chain the partition into vbmeta.
chained_partition_arg = GetAvbChainedPartitionArg(partition, info_dict) chained_partition_arg = GetAvbChainedPartitionArg(partition, info_dict)
return ["--chain_partition", chained_partition_arg] return [AVB_ARG_NAME_CHAIN_PARTITION, chained_partition_arg]
def GetAvbChainedPartitionArg(partition, info_dict, key=None): def GetAvbChainedPartitionArg(partition, info_dict, key=None):
@@ -1598,7 +1603,7 @@ def BuildVBMeta(image_path, partitions, name, needed_partitions):
# same location when running this script (we have the input target_files # same location when running this script (we have the input target_files
# zip only). For such cases, we additionally scan other locations (e.g. # zip only). For such cases, we additionally scan other locations (e.g.
# IMAGES/, RADIO/, etc) before bailing out. # IMAGES/, RADIO/, etc) before bailing out.
if arg == '--include_descriptors_from_image': if arg == AVB_ARG_NAME_INCLUDE_DESC_FROM_IMG:
chained_image = split_args[index + 1] chained_image = split_args[index + 1]
if os.path.exists(chained_image): if os.path.exists(chained_image):
continue continue

View File

@@ -1585,7 +1585,8 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase):
info_dict = {} info_dict = {}
cmd = common.GetAvbPartitionArg('system', '/path/to/system.img', info_dict) cmd = common.GetAvbPartitionArg('system', '/path/to/system.img', info_dict)
self.assertEqual( self.assertEqual(
['--include_descriptors_from_image', '/path/to/system.img'], cmd) [common.AVB_ARG_NAME_INCLUDE_DESC_FROM_IMG, '/path/to/system.img'],
cmd)
@test_utils.SkipIfExternalToolsUnavailable() @test_utils.SkipIfExternalToolsUnavailable()
def test_AppendVBMetaArgsForPartition_vendorAsChainedPartition(self): def test_AppendVBMetaArgsForPartition_vendorAsChainedPartition(self):
@@ -1598,7 +1599,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase):
} }
cmd = common.GetAvbPartitionArg('vendor', '/path/to/vendor.img', info_dict) cmd = common.GetAvbPartitionArg('vendor', '/path/to/vendor.img', info_dict)
self.assertEqual(2, len(cmd)) self.assertEqual(2, len(cmd))
self.assertEqual('--chain_partition', cmd[0]) self.assertEqual(common.AVB_ARG_NAME_CHAIN_PARTITION, cmd[0])
chained_partition_args = cmd[1].split(':') chained_partition_args = cmd[1].split(':')
self.assertEqual(3, len(chained_partition_args)) self.assertEqual(3, len(chained_partition_args))
self.assertEqual('vendor', chained_partition_args[0]) self.assertEqual('vendor', chained_partition_args[0])
@@ -1631,7 +1632,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase):
cmd = common.GetAvbPartitionArg( cmd = common.GetAvbPartitionArg(
'recovery', '/path/to/recovery.img', info_dict) 'recovery', '/path/to/recovery.img', info_dict)
self.assertEqual(2, len(cmd)) self.assertEqual(2, len(cmd))
self.assertEqual('--chain_partition', cmd[0]) self.assertEqual(common.AVB_ARG_NAME_CHAIN_PARTITION, cmd[0])
chained_partition_args = cmd[1].split(':') chained_partition_args = cmd[1].split(':')
self.assertEqual(3, len(chained_partition_args)) self.assertEqual(3, len(chained_partition_args))
self.assertEqual('recovery', chained_partition_args[0]) self.assertEqual('recovery', chained_partition_args[0])