61 lines
2.1 KiB
Python
Executable File
61 lines
2.1 KiB
Python
Executable File
from hashlib import sha256
|
||
import json
|
||
import os
|
||
import shutil
|
||
import zipfile
|
||
|
||
# 获取当前目录
|
||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||
|
||
# 构建输出目录路径
|
||
package_dir = os.path.join(current_dir, "output", "package")
|
||
|
||
shutil.rmtree(package_dir, ignore_errors=True)
|
||
shutil.rmtree(os.path.join(current_dir, "output", "package.zip"), ignore_errors=True)
|
||
|
||
# 确保输出目录存在
|
||
os.makedirs(package_dir, exist_ok=True)
|
||
|
||
# 复制文件
|
||
shutil.copy(os.path.join(current_dir, "output", "LPT262_hilink_UPGRADE.bin"),
|
||
os.path.join(package_dir, "image2_all_ota1.bin"))
|
||
shutil.copy(os.path.join(current_dir, "output", "LPT262_hilink_UPGRADE.bin"),
|
||
os.path.join(package_dir, "image2_all_ota2.bin"))
|
||
|
||
print("文件已复制到输出目录")
|
||
|
||
json_file = os.path.join(current_dir, "output", "package", "filelist.json")
|
||
json_data = {}
|
||
|
||
def calc_sha256(filepath):
|
||
h = sha256()
|
||
with open(filepath, "rb") as f:
|
||
for chunk in iter(lambda: f.read(4096), b""):
|
||
h.update(chunk)
|
||
return h.hexdigest()
|
||
|
||
file1 = os.path.join(package_dir, "image2_all_ota1.bin")
|
||
file2 = os.path.join(package_dir, "image2_all_ota2.bin")
|
||
|
||
json_data['image2_all_ota1.bin'] = {}
|
||
json_data['image2_all_ota1.bin']['sha256'] = calc_sha256(file1)
|
||
json_data['image2_all_ota2.bin'] = {}
|
||
json_data['image2_all_ota2.bin']['sha256'] = calc_sha256(file2)
|
||
|
||
print("file1 sha1: ", json_data['image2_all_ota1.bin']['sha256'])
|
||
print("file2 sha2: ", json_data['image2_all_ota2.bin']['sha256'])
|
||
|
||
with open(json_file, "w") as f:
|
||
json.dump(json_data, f)
|
||
|
||
package_file = os.path.join(current_dir, "output", "package.zip")
|
||
with zipfile.ZipFile(package_file, "w") as zip:
|
||
# 遍历package_dir目录及其所有子文件夹,将所有文件打包,并保留目录结构
|
||
for root, dirs, files in os.walk(package_dir):
|
||
for file in files:
|
||
file_path = os.path.join(root, file)
|
||
# 归一化存储在zip中的路径,使其以package_dir为根目录
|
||
arcname = os.path.relpath(file_path, os.path.dirname(package_dir))
|
||
zip.write(file_path, arcname)
|
||
|
||
print("升级包:package.zip sha256: ", calc_sha256(package_file)) |