From dc5c33c3c32db517ba21cda926b064be5a99a00b Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 18:43:51 +0100 Subject: [PATCH] merge gzip into firmware rename function --- platformio.ini | 4 ++-- scripts/gzip_fw.py | 39 --------------------------------------- scripts/rename_fw.py | 39 ++++++++++++++++++++------------------- 3 files changed, 22 insertions(+), 60 deletions(-) delete mode 100644 scripts/gzip_fw.py diff --git a/platformio.ini b/platformio.ini index e42dcbd82..520a34125 100644 --- a/platformio.ini +++ b/platformio.ini @@ -50,7 +50,6 @@ check_flags = extra_scripts = scripts/main_script.py scripts/rename_fw.py - scripts/gzip_fw.py board = esp12e platform = espressif8266 board_build.filesystem = littlefs @@ -61,7 +60,6 @@ build_flags = ${common.build_flags} [env:esp32-ci] extra_scripts = scripts/rename_fw.py - scripts/gzip_fw.py board = esp32dev platform = espressif32 board_build.partitions = min_spiffs.csv @@ -71,6 +69,7 @@ build_flags = ${common.build_flags} extra_scripts = pre:scripts/build_interface.py scripts/main_script.py + scripts/rename_fw.py board = esp12e ; https://github.com/platformio/platform-espressif8266/tree/master/boards platform = espressif8266 ; https://github.com/platformio/platform-espressif8266/releases board_build.filesystem = littlefs @@ -85,6 +84,7 @@ lib_ignore = [env:esp32] extra_scripts = pre:scripts/build_interface.py + scripts/rename_fw.py board = esp32dev platform = espressif32 ; platform = https://github.com/platformio/platform-espressif32.git diff --git a/scripts/gzip_fw.py b/scripts/gzip_fw.py deleted file mode 100644 index 8c39ede19..000000000 --- a/scripts/gzip_fw.py +++ /dev/null @@ -1,39 +0,0 @@ -Import('env') -import os -import re -import shutil -import gzip - -OUTPUT_DIR = "build{}".format(os.path.sep) - -def bin_gzip(source, target, env): - - # get the version - bag = {} - exprs = [ - (re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version'), - ] - with open('./src/version.h', 'r') as f: - for l in f.readlines(): - for expr, var in exprs: - m = expr.match(l) - if m and len(m.groups()) > 0: - bag[var] = m.group(1) - - app_version = bag.get('app_version') - - variant = "EMS-ESP-" + app_version.replace(".", "_") + "-" + str(target[0]).split(os.path.sep)[2] - - # create string with location and file names based on variant - bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) - gzip_file = "{}firmware{}{}.bin.gz".format(OUTPUT_DIR, os.path.sep, variant) - - # check if new target files exist and remove if necessary - if os.path.isfile(gzip_file): os.remove(gzip_file) - - # write gzip firmware file - with open(bin_file,"rb") as fp: - with gzip.open(gzip_file, "wb", compresslevel = 9) as f: - shutil.copyfileobj(fp, f) - -env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_gzip]) \ No newline at end of file diff --git a/scripts/rename_fw.py b/scripts/rename_fw.py index ec80c6253..37eec6187 100644 --- a/scripts/rename_fw.py +++ b/scripts/rename_fw.py @@ -1,17 +1,16 @@ -Import('env') +Import('env', "projenv") import os import re import shutil +import gzip OUTPUT_DIR = "build{}".format(os.path.sep) def bin_copy(source, target, env): - # get the version + # get the EMS-ESP version bag = {} - exprs = [ - (re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version'), - ] + exprs = [(re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version')] with open('./src/version.h', 'r') as f: for l in f.readlines(): for expr, var in exprs: @@ -19,27 +18,29 @@ def bin_copy(source, target, env): if m and len(m.groups()) > 0: bag[var] = m.group(1) - app_version = bag.get('app_version') - variant = "EMS-ESP-" + app_version.replace(".", "_") + "-" + str(target[0]).split(os.path.sep)[2] + # esp8266 or esp32 + platform = "esp" + env['PIOPLATFORM'].strip("espressif") + + # str(target[0]).split(os.path.sep)[2] + variant = "EMS-ESP-" + bag.get('app_version').replace(".", "_") + "-" + platform - # check if output directories exist and create if necessary - if not os.path.isdir(OUTPUT_DIR): - os.mkdir(OUTPUT_DIR) - - for d in ['firmware']: - if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): - os.mkdir("{}{}".format(OUTPUT_DIR, d)) - # create string with location and file names based on variant bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) + gzip_file = "{}firmware{}{}.bin.gz".format(OUTPUT_DIR, os.path.sep, variant) # check if new target files exist and remove if necessary - for f in [bin_file]: - if os.path.isfile(f): - os.remove(f) + if os.path.isfile(bin_file): os.remove(bin_file) + if os.path.isfile(gzip_file): os.remove(gzip_file) - # copy firmware.bin to firmware/.bin + # copy firmware.bin to new name shutil.copy(str(target[0]), bin_file) + # create a zip'd version + with open(bin_file, "rb") as fp: + with gzip.open(gzip_file, "wb", compresslevel = 9) as f: + shutil.copyfileobj(fp, f) + + print("Built firmwares: "+ bin_file + ", " + gzip_file) + env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_copy])