Merge "releasetools: Add --oem_no_mount option."

This commit is contained in:
Tao Bao
2016-02-27 00:08:39 +00:00
committed by Gerrit Code Review
2 changed files with 27 additions and 8 deletions

View File

@@ -83,11 +83,17 @@ class EdifyGenerator(object):
raise ValueError("must specify an OEM property") raise ValueError("must specify an OEM property")
if not value: if not value:
raise ValueError("must specify the OEM value") raise ValueError("must specify the OEM value")
cmd = ('file_getprop("/oem/oem.prop", "{name}") == "{value}" || ' if common.OPTIONS.oem_no_mount:
'abort("This package expects the value \\"{value}\\" for ' cmd = ('getprop("{name}") == "{value}" || '
'\\"{name}\\" on the OEM partition; this has value \\"" + ' 'abort("This package expects the value \\"{value}\\" for '
'file_getprop("/oem/oem.prop", "{name}") + "\\".");').format( '\\"{name}\\"; this has value \\"" + '
name=name, value=value) 'getprop("{name}") + "\\".");').format(name=name, value=value)
else:
cmd = ('file_getprop("/oem/oem.prop", "{name}") == "{value}" || '
'abort("This package expects the value \\"{value}\\" for '
'\\"{name}\\" on the OEM partition; this has value \\"" + '
'file_getprop("/oem/oem.prop", "{name}") + "\\".");').format(
name=name, value=value)
self.script.append(cmd) self.script.append(cmd)
def AssertSomeFingerprint(self, *fp): def AssertSomeFingerprint(self, *fp):

View File

@@ -54,6 +54,12 @@ Usage: ota_from_target_files [flags] input_target_files output_ota_package
Use the file to specify the expected OEM-specific properties Use the file to specify the expected OEM-specific properties
on the OEM partition of the intended device. on the OEM partition of the intended device.
--oem_no_mount
For devices with OEM-specific properties but without an OEM partition,
do not mount the OEM partition in the updater-script. This should be
very rarely used, since it's expected to have a dedicated OEM partition
for OEM-specific properties. Only meaningful when -o is specified.
-w (--wipe_user_data) -w (--wipe_user_data)
Generate an OTA package that will wipe the user data partition Generate an OTA package that will wipe the user data partition
when installed. when installed.
@@ -144,6 +150,7 @@ OPTIONS.no_signing = False
OPTIONS.block_based = False OPTIONS.block_based = False
OPTIONS.updater_binary = None OPTIONS.updater_binary = None
OPTIONS.oem_source = None OPTIONS.oem_source = None
OPTIONS.oem_no_mount = False
OPTIONS.fallback_to_full = True OPTIONS.fallback_to_full = True
OPTIONS.full_radio = False OPTIONS.full_radio = False
OPTIONS.full_bootloader = False OPTIONS.full_bootloader = False
@@ -526,7 +533,8 @@ def WriteFullOTAPackage(input_zip, output_zip):
if oem_props is not None and len(oem_props) > 0: if oem_props is not None and len(oem_props) > 0:
if OPTIONS.oem_source is None: if OPTIONS.oem_source is None:
raise common.ExternalError("OEM source required for this build") raise common.ExternalError("OEM source required for this build")
script.Mount("/oem", recovery_mount_options) if not OPTIONS.oem_no_mount:
script.Mount("/oem", recovery_mount_options)
oem_dict = common.LoadDictionaryFromLines( oem_dict = common.LoadDictionaryFromLines(
open(OPTIONS.oem_source).readlines()) open(OPTIONS.oem_source).readlines())
@@ -777,7 +785,8 @@ def WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_zip):
if oem_props is not None and len(oem_props) > 0: if oem_props is not None and len(oem_props) > 0:
if OPTIONS.oem_source is None: if OPTIONS.oem_source is None:
raise common.ExternalError("OEM source required for this build") raise common.ExternalError("OEM source required for this build")
script.Mount("/oem", recovery_mount_options) if not OPTIONS.oem_no_mount:
script.Mount("/oem", recovery_mount_options)
oem_dict = common.LoadDictionaryFromLines( oem_dict = common.LoadDictionaryFromLines(
open(OPTIONS.oem_source).readlines()) open(OPTIONS.oem_source).readlines())
@@ -1062,7 +1071,8 @@ def WriteVerifyPackage(input_zip, output_zip):
if oem_props is not None and len(oem_props) > 0: if oem_props is not None and len(oem_props) > 0:
if OPTIONS.oem_source is None: if OPTIONS.oem_source is None:
raise common.ExternalError("OEM source required for this build") raise common.ExternalError("OEM source required for this build")
script.Mount("/oem", recovery_mount_options) if not OPTIONS.oem_no_mount:
script.Mount("/oem", recovery_mount_options)
oem_dict = common.LoadDictionaryFromLines( oem_dict = common.LoadDictionaryFromLines(
open(OPTIONS.oem_source).readlines()) open(OPTIONS.oem_source).readlines())
@@ -1821,6 +1831,8 @@ def main(argv):
OPTIONS.wipe_user_data = True OPTIONS.wipe_user_data = True
elif o in ("-o", "--oem_settings"): elif o in ("-o", "--oem_settings"):
OPTIONS.oem_source = a OPTIONS.oem_source = a
elif o == "--oem_no_mount":
OPTIONS.oem_no_mount = True
elif o in ("-e", "--extra_script"): elif o in ("-e", "--extra_script"):
OPTIONS.extra_script = a OPTIONS.extra_script = a
elif o in ("-a", "--aslr_mode"): elif o in ("-a", "--aslr_mode"):
@@ -1879,6 +1891,7 @@ def main(argv):
"block", "block",
"binary=", "binary=",
"oem_settings=", "oem_settings=",
"oem_no_mount",
"verify", "verify",
"no_fallback_to_full", "no_fallback_to_full",
"stash_threshold=", "stash_threshold=",