ota diff package
#!/usr/bin/env python
# --*-- encoding=UTF-8 --*--
#author by fangwh @2017.11.13
import sys
import zipfile
import os
import tempfile
import shutil
import datetime
import time
OTA_TOOLS="./build/tools/releasetools/ota_from_target_files --block"
SIGN_TOOLS ="./build/tools/releasetools/filezip.py"
SP_MONITOR_FILE = "../lichee/tools/pack/sp_image/PX7A_A80_Release_Android_scatter.txt"
def gen_outfile_name(src_file, dest_file):
print (src_file)
print (dest_file)
src_index = src_file.rfind("_")
# src_index = src_file.rfind("_",0,src_index)
print (src_index)
src_file_first = src_file[0:src_index +1]
dest_file_list = dest_file.split('_')
print (dest_file_list)
# out_file = src_file_first +dest_file_list[len(dest_file_list)-3] + "_OTA_DIFF.zip"
out_file = src_file_first +dest_file_list[len(dest_file_list)-3] +"_"+ dest_file_list[len(dest_file_list)-2] + "_OTA_DIFF.zip"
print (out_file)
return out_file
def print_zipfile_info(zip_file):
if zipfile.is_zipfile(zip_file):
src_file_list = zipfile.ZipFile(zip_file,'r')
# src_file_list.extractall(src_file_path)
for file in src_file_list.namelist():
print (file)
for info in src_file_list.infolist():
print info.filename
print '\tComment:\t', info.comment
print '\tModified:\t', datetime.datetime(*info.date_time)
print '\tSystem:\t\t', info.create_system, '(0 = Windows, 3 = Unix)'
print '\tZIP version:\t', info.create_version
print '\tCompressed:\t', info.compress_size, 'bytes'
print '\tUncompressed:\t', info.file_size, 'bytes'
print
def get_ota_file_list(path):
print path
filelist = []
keyworld1= "PayDroid"
keyworld2 = "ORG"
keyworld3 = "zip"
if path is None:
path = os.getcwd()
for dirpath,dirnames,filenames in os.walk(path):
for filename in filenames:
if filename.find(keyworld1,0, len(filename)) >=0 \
and filename.find(keyworld2,0, len(filename)) >=0 \
and filename.endswith(keyworld3):
filelist.append(filename)
filelist.sort()
return filelist
def extract_file(zip_file, path):
if os.path.exists(path):
shutil.rmtree(path)
os.mkdir(path)
if zipfile.is_zipfile(zip_file):
file_list = zipfile.ZipFile(zip_file, 'r')
file_list.extractall(path)
if __name__ == '__main__':
print (sys.version)
print (sys.argv)
length = len(sys.argv)
path_mode = False
path=''
if length == 3:
src_file = sys.argv[1]
dest_file = sys.argv[2]
elif length == 2:
path = sys.argv[1]
if not os.path.isdir(path):
print "error:not a directory!!"
exit(1)
path_mode = True
# dest_file = "PX7A_A80_PayDroid_6.0.1_Taurus_V05.1.01_20171107_OTA.zip"
# src_file = "PX7A_A80_PayDroid_6.0.1_Taurus_V05.1.01_20171105_OTA.zip"
if not path_mode:
out_file = gen_outfile_name(src_file,dest_file)
print (out_file)
# print_zipfile_info(src_file)
# print_zipfile_info(dest_file)
os.system("python %s -i %s %s %s" % (OTA_TOOLS,src_file, dest_file, out_file ))
os.system("python %s %s %s" % (SIGN_TOOLS,out_file,SP_MONITOR_FILE))
else:
filelist = get_ota_file_list(path)
today = time.strftime("%Y%m%d",time.localtime())
print today
out_path = "../"+str(today)+"_OTA_DIFF"
if os.path.exists(out_path):
shutil.rmtree(out_path)
os.mkdir(out_path)
dest_file = path +"/"+ filelist[len(filelist)-1]
print dest_file
for file in filelist[0:len(filelist)-1]:
src_file = path +"/"+file
out_file = gen_outfile_name(src_file,dest_file)
os.system("python %s -i %s %s %s" % (OTA_TOOLS,src_file, dest_file, out_file ))
os.system("python %s %s %s" % (SIGN_TOOLS,out_file,SP_MONITOR_FILE))
base_file_name = os.path.basename(out_file)
print out_path+"/"+base_file_name
shutil.move(out_file, out_path+"/"+base_file_name)