Loading tools/releasetools/build_image.py +0 −1 Original line number Diff line number Diff line Loading @@ -821,7 +821,6 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): d["mount_point"] = mount_point if mount_point == "system": copy_prop("system_headroom", "partition_headroom") copy_prop("system_root_image", "system_root_image") copy_prop("root_dir", "root_dir") copy_prop("root_fs_config", "root_fs_config") elif mount_point == "data": Loading tools/releasetools/common.py +5 −23 Original line number Diff line number Diff line Loading @@ -1156,8 +1156,7 @@ class PartitionBuildProps(object): return self.build_props.get(prop) def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, system_root_image=False): def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path): class Partition(object): def __init__(self, mount_point, fs_type, device, length, context, slotselect): self.mount_point = mount_point Loading Loading @@ -1216,12 +1215,6 @@ def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, device=pieces[0], length=length, context=context, slotselect=slotselect) # / is used for the system mount point when the root directory is included in # system. Other areas assume system is always at "/system" so point /system # at /. if system_root_image: assert '/system' not in d and '/' in d d["/system"] = d["/"] return d Loading @@ -1237,22 +1230,19 @@ def _FindAndLoadRecoveryFstab(info_dict, input_file, read_helper): # ../RAMDISK/system/etc/recovery.fstab. This function has to handle both # cases, since it may load the info_dict from an old build (e.g. when # generating incremental OTAs from that build). system_root_image = info_dict.get('system_root_image') == 'true' if info_dict.get('no_recovery') != 'true': recovery_fstab_path = 'RECOVERY/RAMDISK/system/etc/recovery.fstab' if not DoesInputFileContain(input_file, recovery_fstab_path): recovery_fstab_path = 'RECOVERY/RAMDISK/etc/recovery.fstab' return LoadRecoveryFSTab( read_helper, info_dict['fstab_version'], recovery_fstab_path, system_root_image) read_helper, info_dict['fstab_version'], recovery_fstab_path) if info_dict.get('recovery_as_boot') == 'true': recovery_fstab_path = 'BOOT/RAMDISK/system/etc/recovery.fstab' if not DoesInputFileContain(input_file, recovery_fstab_path): recovery_fstab_path = 'BOOT/RAMDISK/etc/recovery.fstab' return LoadRecoveryFSTab( read_helper, info_dict['fstab_version'], recovery_fstab_path, system_root_image) read_helper, info_dict['fstab_version'], recovery_fstab_path) return None Loading Loading @@ -1980,11 +1970,6 @@ def HasRamdisk(partition_name, info_dict=None): if info_dict.get("gki_boot_image_without_ramdisk") == "true": return False # A GKI boot.img has no ramdisk since Android-13. if info_dict.get("system_root_image") == "true": # The ramdisk content is merged into the system.img, so there is NO # ramdisk in the boot.img or boot-<kernel version>.img. return False if info_dict.get("init_boot") == "true": # The ramdisk is moved to the init_boot.img, so there is NO # ramdisk in the boot.img or boot-<kernel version>.img. Loading Loading @@ -3853,14 +3838,11 @@ def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img, output_sink(recovery_img_path, recovery_img.data) else: system_root_image = info_dict.get("system_root_image") == "true" include_recovery_dtbo = info_dict.get("include_recovery_dtbo") == "true" include_recovery_acpio = info_dict.get("include_recovery_acpio") == "true" path = os.path.join(input_dir, recovery_resource_dat_path) # With system-root-image, boot and recovery images will have mismatching # entries (only recovery has the ramdisk entry) (Bug: 72731506). Use bsdiff # to handle such a case. if system_root_image or include_recovery_dtbo or include_recovery_acpio: # Use bsdiff to handle mismatching entries (Bug: 72731506) if include_recovery_dtbo or include_recovery_acpio: diff_program = ["bsdiff"] bonus_args = "" assert not os.path.exists(path) Loading tools/releasetools/sign_target_files_apks.py +2 −5 Original line number Diff line number Diff line Loading @@ -83,9 +83,8 @@ Usage: sign_target_files_apks [flags] input_target_files output_target_files --replace_verity_public_key <key> Replace the certificate (public key) used for verity verification. The key file replaces the one at BOOT/RAMDISK/verity_key (or ROOT/verity_key for devices using system_root_image). It expects the key filename WITH the extension (e.g. verity_key.pub). key file replaces the one at BOOT/RAMDISK/verity_key. It expects the key filename WITH the extension (e.g. verity_key.pub). --replace_verity_keyid <path_to_X509_PEM_cert_file> Replace the veritykeyid in BOOT/cmdline of input_target_file_zip Loading Loading @@ -555,8 +554,6 @@ def ProcessTargetFiles(input_tf_zip, output_tf_zip, misc_info, # Sets this to zero for targets without APK files, e.g., gki_arm64. maxsize = 0 system_root_image = misc_info.get("system_root_image") == "true" for info in input_tf_zip.infolist(): filename = info.filename if filename.startswith("IMAGES/"): Loading tools/releasetools/test_build_image.py +1 −2 Original line number Diff line number Diff line Loading @@ -99,11 +99,10 @@ class BuildImageTest(test_utils.ReleaseToolsTestCase): } self.assertRaises(BuildImageError, CheckHeadroom, ext4fs_output, prop_dict) def test_SetUpInDirAndFsConfig_SystemRootImageTrue_NonSystem(self): def test_SetUpInDirAndFsConfig_NonSystem(self): prop_dict = { 'fs_config': 'fs-config', 'mount_point': 'vendor', 'system_root_image': 'true', } in_dir, fs_config = SetUpInDirAndFsConfig('/path/to/in_dir', prop_dict) self.assertEqual('/path/to/in_dir', in_dir) Loading tools/releasetools/test_common.py +3 −34 Original line number Diff line number Diff line Loading @@ -1348,7 +1348,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): INFO_DICT_DEFAULT = { 'recovery_api_version': 3, 'fstab_version': 2, 'system_root_image': 'true', 'no_recovery': 'true', 'recovery_as_boot': 'true', } Loading Loading @@ -1377,14 +1376,8 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): info_values = ''.join( ['{}={}\n'.format(k, v) for k, v in sorted(info_dict.items())]) common.ZipWriteStr(target_files_zip, 'META/misc_info.txt', info_values) FSTAB_TEMPLATE = "/dev/block/system {} ext4 ro,barrier=1 defaults" if info_dict.get('system_root_image') == 'true': fstab_values = FSTAB_TEMPLATE.format('/') else: fstab_values = FSTAB_TEMPLATE.format('/system') common.ZipWriteStr(target_files_zip, fstab_path, fstab_values) common.ZipWriteStr(target_files_zip, fstab_path, "/dev/block/system /system ext4 ro,barrier=1 defaults") common.ZipWriteStr( target_files_zip, 'META/file_contexts', 'file-contexts') return target_files Loading @@ -1397,7 +1390,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_legacyRecoveryFstabPath(self): Loading @@ -1408,7 +1400,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) @test_utils.SkipIfExternalToolsUnavailable() Loading @@ -1420,7 +1411,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(unzipped) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) @test_utils.SkipIfExternalToolsUnavailable() Loading @@ -1432,29 +1422,9 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(unzipped) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_systemRootImageFalse(self): # Devices not using system-as-root nor recovery-as-boot. Non-A/B devices # launched prior to P will likely have this config. info_dict = copy.copy(self.INFO_DICT_DEFAULT) del info_dict['no_recovery'] del info_dict['system_root_image'] del info_dict['recovery_as_boot'] target_files = self._test_LoadInfoDict_createTargetFiles( info_dict, 'RECOVERY/RAMDISK/system/etc/recovery.fstab') with zipfile.ZipFile(target_files, 'r', allowZip64=True) as target_files_zip: loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertNotIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_recoveryAsBootFalse(self): # Devices using system-as-root, but with standalone recovery image. Non-A/B # devices launched since P will likely have this config. info_dict = copy.copy(self.INFO_DICT_DEFAULT) del info_dict['no_recovery'] del info_dict['recovery_as_boot'] Loading @@ -1465,7 +1435,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertNotIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_noRecoveryTrue(self): Loading Loading @@ -1499,7 +1469,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(unzipped, True) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) self.assertEqual( os.path.join(unzipped, 'ROOT'), loaded_dict['root_dir']) Loading Loading
tools/releasetools/build_image.py +0 −1 Original line number Diff line number Diff line Loading @@ -821,7 +821,6 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): d["mount_point"] = mount_point if mount_point == "system": copy_prop("system_headroom", "partition_headroom") copy_prop("system_root_image", "system_root_image") copy_prop("root_dir", "root_dir") copy_prop("root_fs_config", "root_fs_config") elif mount_point == "data": Loading
tools/releasetools/common.py +5 −23 Original line number Diff line number Diff line Loading @@ -1156,8 +1156,7 @@ class PartitionBuildProps(object): return self.build_props.get(prop) def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, system_root_image=False): def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path): class Partition(object): def __init__(self, mount_point, fs_type, device, length, context, slotselect): self.mount_point = mount_point Loading Loading @@ -1216,12 +1215,6 @@ def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, device=pieces[0], length=length, context=context, slotselect=slotselect) # / is used for the system mount point when the root directory is included in # system. Other areas assume system is always at "/system" so point /system # at /. if system_root_image: assert '/system' not in d and '/' in d d["/system"] = d["/"] return d Loading @@ -1237,22 +1230,19 @@ def _FindAndLoadRecoveryFstab(info_dict, input_file, read_helper): # ../RAMDISK/system/etc/recovery.fstab. This function has to handle both # cases, since it may load the info_dict from an old build (e.g. when # generating incremental OTAs from that build). system_root_image = info_dict.get('system_root_image') == 'true' if info_dict.get('no_recovery') != 'true': recovery_fstab_path = 'RECOVERY/RAMDISK/system/etc/recovery.fstab' if not DoesInputFileContain(input_file, recovery_fstab_path): recovery_fstab_path = 'RECOVERY/RAMDISK/etc/recovery.fstab' return LoadRecoveryFSTab( read_helper, info_dict['fstab_version'], recovery_fstab_path, system_root_image) read_helper, info_dict['fstab_version'], recovery_fstab_path) if info_dict.get('recovery_as_boot') == 'true': recovery_fstab_path = 'BOOT/RAMDISK/system/etc/recovery.fstab' if not DoesInputFileContain(input_file, recovery_fstab_path): recovery_fstab_path = 'BOOT/RAMDISK/etc/recovery.fstab' return LoadRecoveryFSTab( read_helper, info_dict['fstab_version'], recovery_fstab_path, system_root_image) read_helper, info_dict['fstab_version'], recovery_fstab_path) return None Loading Loading @@ -1980,11 +1970,6 @@ def HasRamdisk(partition_name, info_dict=None): if info_dict.get("gki_boot_image_without_ramdisk") == "true": return False # A GKI boot.img has no ramdisk since Android-13. if info_dict.get("system_root_image") == "true": # The ramdisk content is merged into the system.img, so there is NO # ramdisk in the boot.img or boot-<kernel version>.img. return False if info_dict.get("init_boot") == "true": # The ramdisk is moved to the init_boot.img, so there is NO # ramdisk in the boot.img or boot-<kernel version>.img. Loading Loading @@ -3853,14 +3838,11 @@ def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img, output_sink(recovery_img_path, recovery_img.data) else: system_root_image = info_dict.get("system_root_image") == "true" include_recovery_dtbo = info_dict.get("include_recovery_dtbo") == "true" include_recovery_acpio = info_dict.get("include_recovery_acpio") == "true" path = os.path.join(input_dir, recovery_resource_dat_path) # With system-root-image, boot and recovery images will have mismatching # entries (only recovery has the ramdisk entry) (Bug: 72731506). Use bsdiff # to handle such a case. if system_root_image or include_recovery_dtbo or include_recovery_acpio: # Use bsdiff to handle mismatching entries (Bug: 72731506) if include_recovery_dtbo or include_recovery_acpio: diff_program = ["bsdiff"] bonus_args = "" assert not os.path.exists(path) Loading
tools/releasetools/sign_target_files_apks.py +2 −5 Original line number Diff line number Diff line Loading @@ -83,9 +83,8 @@ Usage: sign_target_files_apks [flags] input_target_files output_target_files --replace_verity_public_key <key> Replace the certificate (public key) used for verity verification. The key file replaces the one at BOOT/RAMDISK/verity_key (or ROOT/verity_key for devices using system_root_image). It expects the key filename WITH the extension (e.g. verity_key.pub). key file replaces the one at BOOT/RAMDISK/verity_key. It expects the key filename WITH the extension (e.g. verity_key.pub). --replace_verity_keyid <path_to_X509_PEM_cert_file> Replace the veritykeyid in BOOT/cmdline of input_target_file_zip Loading Loading @@ -555,8 +554,6 @@ def ProcessTargetFiles(input_tf_zip, output_tf_zip, misc_info, # Sets this to zero for targets without APK files, e.g., gki_arm64. maxsize = 0 system_root_image = misc_info.get("system_root_image") == "true" for info in input_tf_zip.infolist(): filename = info.filename if filename.startswith("IMAGES/"): Loading
tools/releasetools/test_build_image.py +1 −2 Original line number Diff line number Diff line Loading @@ -99,11 +99,10 @@ class BuildImageTest(test_utils.ReleaseToolsTestCase): } self.assertRaises(BuildImageError, CheckHeadroom, ext4fs_output, prop_dict) def test_SetUpInDirAndFsConfig_SystemRootImageTrue_NonSystem(self): def test_SetUpInDirAndFsConfig_NonSystem(self): prop_dict = { 'fs_config': 'fs-config', 'mount_point': 'vendor', 'system_root_image': 'true', } in_dir, fs_config = SetUpInDirAndFsConfig('/path/to/in_dir', prop_dict) self.assertEqual('/path/to/in_dir', in_dir) Loading
tools/releasetools/test_common.py +3 −34 Original line number Diff line number Diff line Loading @@ -1348,7 +1348,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): INFO_DICT_DEFAULT = { 'recovery_api_version': 3, 'fstab_version': 2, 'system_root_image': 'true', 'no_recovery': 'true', 'recovery_as_boot': 'true', } Loading Loading @@ -1377,14 +1376,8 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): info_values = ''.join( ['{}={}\n'.format(k, v) for k, v in sorted(info_dict.items())]) common.ZipWriteStr(target_files_zip, 'META/misc_info.txt', info_values) FSTAB_TEMPLATE = "/dev/block/system {} ext4 ro,barrier=1 defaults" if info_dict.get('system_root_image') == 'true': fstab_values = FSTAB_TEMPLATE.format('/') else: fstab_values = FSTAB_TEMPLATE.format('/system') common.ZipWriteStr(target_files_zip, fstab_path, fstab_values) common.ZipWriteStr(target_files_zip, fstab_path, "/dev/block/system /system ext4 ro,barrier=1 defaults") common.ZipWriteStr( target_files_zip, 'META/file_contexts', 'file-contexts') return target_files Loading @@ -1397,7 +1390,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_legacyRecoveryFstabPath(self): Loading @@ -1408,7 +1400,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) @test_utils.SkipIfExternalToolsUnavailable() Loading @@ -1420,7 +1411,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(unzipped) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) @test_utils.SkipIfExternalToolsUnavailable() Loading @@ -1432,29 +1422,9 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(unzipped) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_systemRootImageFalse(self): # Devices not using system-as-root nor recovery-as-boot. Non-A/B devices # launched prior to P will likely have this config. info_dict = copy.copy(self.INFO_DICT_DEFAULT) del info_dict['no_recovery'] del info_dict['system_root_image'] del info_dict['recovery_as_boot'] target_files = self._test_LoadInfoDict_createTargetFiles( info_dict, 'RECOVERY/RAMDISK/system/etc/recovery.fstab') with zipfile.ZipFile(target_files, 'r', allowZip64=True) as target_files_zip: loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertNotIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_recoveryAsBootFalse(self): # Devices using system-as-root, but with standalone recovery image. Non-A/B # devices launched since P will likely have this config. info_dict = copy.copy(self.INFO_DICT_DEFAULT) del info_dict['no_recovery'] del info_dict['recovery_as_boot'] Loading @@ -1465,7 +1435,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(target_files_zip) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertNotIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) def test_LoadInfoDict_noRecoveryTrue(self): Loading Loading @@ -1499,7 +1469,6 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): loaded_dict = common.LoadInfoDict(unzipped, True) self.assertEqual(3, loaded_dict['recovery_api_version']) self.assertEqual(2, loaded_dict['fstab_version']) self.assertIn('/', loaded_dict['fstab']) self.assertIn('/system', loaded_dict['fstab']) self.assertEqual( os.path.join(unzipped, 'ROOT'), loaded_dict['root_dir']) Loading