From 9f0c8dfaf1b07b26b29197b76ad920e02a0f49f6 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 7 Jul 2015 18:31:47 -0700 Subject: [PATCH] Scan all init.*.rc files for flash_recovery service. Clockwork builds may rename init.rc to init.core.rc. Change the OTA script to scan all init.*.rc files to determine the proper location for install-recovery.sh. Bug: 22128990 Change-Id: Icad3497d1663e074b938919b40fc239c84fbeb2b (cherry picked from commit 610754e5ad84b2e65358d85dd38a4e0c86dc9342) --- tools/releasetools/common.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index ae449c30ec..4bae9ca0b6 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -1375,18 +1375,28 @@ fi 'bonus_args': bonus_args} # The install script location moved from /system/etc to /system/bin - # in the L release. Parse the init.rc file to find out where the + # in the L release. Parse init.*.rc files to find out where the # target-files expects it to be, and put it there. sh_location = "etc/install-recovery.sh" - try: - with open(os.path.join(input_dir, "BOOT", "RAMDISK", "init.rc")) as f: + found = False + init_rc_dir = os.path.join(input_dir, "BOOT", "RAMDISK") + init_rc_files = os.listdir(init_rc_dir) + for init_rc_file in init_rc_files: + if (not init_rc_file.startswith('init.') or + not init_rc_file.endswith('.rc')): + continue + + with open(os.path.join(init_rc_dir, init_rc_file)) as f: for line in f: m = re.match(r"^service flash_recovery /system/(\S+)\s*$", line) if m: sh_location = m.group(1) - print "putting script in", sh_location + found = True break - except (OSError, IOError) as e: - print "failed to read init.rc: %s" % (e,) + + if found: + break + + print "putting script in", sh_location output_sink(sh_location, sh)