This repository has been archived on 2023-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
bl_mcu_sdk/examples/boot2_isp/boot2_release.py
2022-12-21 20:59:44 +08:00

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")