Home | History | Annotate | Download | only in releasetools
      1 #!/usr/bin/env python
      2 #
      3 # Copyright (C) 2014 The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #      http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 
     17 from __future__ import print_function
     18 
     19 import logging
     20 import os
     21 import sys
     22 
     23 import common
     24 
     25 if sys.hexversion < 0x02070000:
     26   print("Python 2.7 or newer is required.", file=sys.stderr)
     27   sys.exit(1)
     28 
     29 logger = logging.getLogger(__name__)
     30 
     31 OPTIONS = common.OPTIONS
     32 
     33 
     34 def main(argv):
     35   args = common.ParseOptions(argv, __doc__)
     36   input_dir, output_dir = args
     37 
     38   common.InitLogging()
     39 
     40   OPTIONS.info_dict = common.LoadInfoDict(input_dir)
     41 
     42   recovery_img = common.GetBootableImage("recovery.img", "recovery.img",
     43                                          input_dir, "RECOVERY")
     44   boot_img = common.GetBootableImage("boot.img", "boot.img",
     45                                      input_dir, "BOOT")
     46 
     47   if not recovery_img or not boot_img:
     48     sys.exit(0)
     49 
     50   def output_sink(fn, data):
     51     with open(os.path.join(output_dir, "SYSTEM", *fn.split("/")), "wb") as f:
     52       f.write(data)
     53 
     54   common.MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img)
     55 
     56 
     57 if __name__ == '__main__':
     58   main(sys.argv[1:])
     59