1# Copyright (C) 2012 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15"""Emit extra commands needed for Group during OTA installation 16(installing the bootloader).""" 17 18import common 19 20def FullOTA_InstallEnd(info): 21 try: 22 bootloader_bin = info.input_zip.read("RADIO/bootloader.raw") 23 except KeyError: 24 print "no bootloader.raw in target_files; skipping install" 25 else: 26 WriteBootloader(info, bootloader_bin) 27 28 29def IncrementalOTA_InstallEnd(info): 30 try: 31 target_bootloader_bin = info.target_zip.read("RADIO/bootloader.raw") 32 try: 33 source_bootloader_bin = info.source_zip.read("RADIO/bootloader.raw") 34 except KeyError: 35 source_bootloader_bin = None 36 37 if source_bootloader_bin == target_bootloader_bin: 38 print "bootloader unchanged; skipping" 39 else: 40 WriteBootloader(info, target_bootloader_bin) 41 except KeyError: 42 print "no bootloader.raw in target target_files; skipping install" 43 44 45def WriteBootloader(info, bootloader_bin): 46 common.ZipWriteStr(info.output_zip, "bootloader.raw", bootloader_bin) 47 fstab = info.info_dict["fstab"] 48 49 info.script.Print("Writing bootloader...") 50 51 info.script.AppendExtra('''package_extract_file("bootloader.raw", "%s");''' % 52 (fstab["/staging"].device,)) 53