95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
import sys,os,shutil
|
|
import hashlib, sys, binascii, struct
|
|
import time
|
|
import subprocess
|
|
import re
|
|
import zipfile
|
|
import argparse
|
|
|
|
git_cmd=r'git describe --tags '#--dirty
|
|
tag_standard="boot2_v1.0.0"
|
|
|
|
release_list = [
|
|
[r'make clean;make CHIP=bl602 BOARD=bl602dk ',"bl602","release"],
|
|
[r'make clean;make CHIP=bl702 BOARD=bl702dk ',"bl702","release"],
|
|
[r'make clean;make CHIP=bl808 CPU_ID=m0 BOARD=bl808dk ',"bl808","release"],
|
|
[r'make clean;make CHIP=bl606p CPU_ID=m0 BOARD=bl606pdk ',"bl606p","release"],
|
|
[r'make clean;make CHIP=bl616 CPU_ID=m0 BOARD=bl616dk ',"bl616","release"],
|
|
]
|
|
|
|
|
|
|
|
def zipDir(dirpath,outFullName):
|
|
"""
|
|
压缩指定文件夹
|
|
:param dirpath: 目标文件夹路径
|
|
:param outFullName: 压缩文件保存路径+xxxx.zip
|
|
:return: 无
|
|
"""
|
|
zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED)
|
|
for path,dirnames,filenames in os.walk(dirpath):
|
|
# 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
|
|
fpath = path.replace(dirpath,'')
|
|
|
|
for filename in filenames:
|
|
zip.write(os.path.join(path,filename),os.path.join(fpath,filename))
|
|
zip.close()
|
|
|
|
def recreate_release_dir(dir):
|
|
if os.path.exists(dir):
|
|
shutil.rmtree(dir)#删除再建立
|
|
os.makedirs(dir)
|
|
else:
|
|
os.makedirs(dir)
|
|
|
|
def boot2_release(cmd, ver):
|
|
output,err = subprocess.Popen(cmd[0] + r' CONFIG_BOOT2_VER=' + ver,stdout=subprocess.PIPE,shell=True).communicate()
|
|
if err==None:
|
|
print(output)
|
|
else:
|
|
print("Build error")
|
|
sys.exit()
|
|
|
|
for root, dirs, files in os.walk(".", topdown=False):
|
|
for file in files:
|
|
if file.endswith(".bin"):
|
|
if cmd[1] in file:
|
|
binfile = os.path.join(root, file)
|
|
print(binfile)
|
|
print('boot2_isp_' + cmd[1] + '_v' + ver + "/" + 'boot2_isp_' + cmd[2] + ".bin")
|
|
shutil.copy(binfile, 'boot2_isp_' + cmd[1] + '_v' + ver + "/" + 'boot2_isp' + ".bin")
|
|
|
|
|
|
|
|
def get_release_ver():
|
|
|
|
print("get release ver")
|
|
output,err = subprocess.Popen(git_cmd,stdout=subprocess.PIPE,shell=True).communicate()
|
|
if err==None:
|
|
release_name = bytes.decode(output)
|
|
release_name = release_name.rstrip()
|
|
|
|
|
|
if(len(release_name) != len(tag_standard)):
|
|
print("ver len err, workspace may dirty? or has no tag?")
|
|
print("release failed!")
|
|
sys.exit()
|
|
release_name = release_name[7:12]
|
|
return release_name
|
|
|
|
else:
|
|
print("get ver error,please push correct tag")
|
|
sys.exit()
|
|
|
|
|
|
|
|
if __name__ == '__main__' :
|
|
|
|
ver = get_release_ver()
|
|
print(ver)
|
|
|
|
for x in release_list:
|
|
recreate_release_dir('boot2_isp_' + x[1] + '_v' + ver )
|
|
for x in release_list:
|
|
boot2_release(x,ver)
|
|
print("release suss") |