forked from openkylin/platform_build
releasetools: Fix secondary payload generation.
The change in [1] removed duplicating radio images from RADIO/ to
IMAGES/. When getting the target_files zip for generating secondary
payload, we need to additionally copy the files under RADIO/ over.
[1] commit 5277d1015f
Test: python -m unittest test_ota_from_target_files
Test: Generate an OTA with secondary payload (--include_secondary).
Change-Id: I096f1642a905fb764e63f5df2edc1396aa6befd8
This commit is contained in:
parent
901d05469e
commit
1248980a8b
|
@ -1657,9 +1657,15 @@ def GetTargetFilesZipForSecondaryImages(input_file, skip_postinstall=False):
|
|||
target_file = common.MakeTempFile(prefix="targetfiles-", suffix=".zip")
|
||||
target_zip = zipfile.ZipFile(target_file, 'w', allowZip64=True)
|
||||
|
||||
input_tmp = common.UnzipTemp(input_file, UNZIP_PATTERN)
|
||||
with zipfile.ZipFile(input_file, 'r') as input_zip:
|
||||
infolist = input_zip.infolist()
|
||||
namelist = input_zip.namelist()
|
||||
|
||||
# Additionally unzip 'RADIO/*' if exists.
|
||||
unzip_pattern = UNZIP_PATTERN[:]
|
||||
if any([entry.startswith('RADIO/') for entry in namelist]):
|
||||
unzip_pattern.append('RADIO/*')
|
||||
input_tmp = common.UnzipTemp(input_file, unzip_pattern)
|
||||
|
||||
for info in infolist:
|
||||
unzipped_file = os.path.join(input_tmp, *info.filename.split('/'))
|
||||
|
@ -1675,7 +1681,7 @@ def GetTargetFilesZipForSecondaryImages(input_file, skip_postinstall=False):
|
|||
elif skip_postinstall and info.filename == POSTINSTALL_CONFIG:
|
||||
pass
|
||||
|
||||
elif info.filename.startswith(('META/', 'IMAGES/')):
|
||||
elif info.filename.startswith(('META/', 'IMAGES/', 'RADIO/')):
|
||||
common.ZipWrite(target_zip, unzipped_file, arcname=info.filename)
|
||||
|
||||
common.ZipClose(target_zip)
|
||||
|
|
|
@ -566,6 +566,8 @@ class OtaFromTargetFilesTest(unittest.TestCase):
|
|||
self.assertIn('IMAGES/boot.img', namelist)
|
||||
self.assertIn('IMAGES/system.img', namelist)
|
||||
self.assertIn('IMAGES/vendor.img', namelist)
|
||||
self.assertIn('RADIO/bootloader.img', namelist)
|
||||
self.assertIn('RADIO/modem.img', namelist)
|
||||
self.assertIn(POSTINSTALL_CONFIG, namelist)
|
||||
|
||||
self.assertNotIn('IMAGES/system_other.img', namelist)
|
||||
|
@ -583,11 +585,33 @@ class OtaFromTargetFilesTest(unittest.TestCase):
|
|||
self.assertIn('IMAGES/boot.img', namelist)
|
||||
self.assertIn('IMAGES/system.img', namelist)
|
||||
self.assertIn('IMAGES/vendor.img', namelist)
|
||||
self.assertIn('RADIO/bootloader.img', namelist)
|
||||
self.assertIn('RADIO/modem.img', namelist)
|
||||
|
||||
self.assertNotIn('IMAGES/system_other.img', namelist)
|
||||
self.assertNotIn('IMAGES/system.map', namelist)
|
||||
self.assertNotIn(POSTINSTALL_CONFIG, namelist)
|
||||
|
||||
def test_GetTargetFilesZipForSecondaryImages_withoutRadioImages(self):
|
||||
input_file = construct_target_files(secondary=True)
|
||||
common.ZipDelete(input_file, 'RADIO/bootloader.img')
|
||||
common.ZipDelete(input_file, 'RADIO/modem.img')
|
||||
target_file = GetTargetFilesZipForSecondaryImages(input_file)
|
||||
|
||||
with zipfile.ZipFile(target_file) as verify_zip:
|
||||
namelist = verify_zip.namelist()
|
||||
|
||||
self.assertIn('META/ab_partitions.txt', namelist)
|
||||
self.assertIn('IMAGES/boot.img', namelist)
|
||||
self.assertIn('IMAGES/system.img', namelist)
|
||||
self.assertIn('IMAGES/vendor.img', namelist)
|
||||
self.assertIn(POSTINSTALL_CONFIG, namelist)
|
||||
|
||||
self.assertNotIn('IMAGES/system_other.img', namelist)
|
||||
self.assertNotIn('IMAGES/system.map', namelist)
|
||||
self.assertNotIn('RADIO/bootloader.img', namelist)
|
||||
self.assertNotIn('RADIO/modem.img', namelist)
|
||||
|
||||
def test_GetTargetFilesZipWithoutPostinstallConfig(self):
|
||||
input_file = construct_target_files()
|
||||
target_file = GetTargetFilesZipWithoutPostinstallConfig(input_file)
|
||||
|
|
Loading…
Reference in New Issue