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 18 import common 19 20 def 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 29 def 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 45 def 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