From 1eaac0072da34c754ac847620c04f52b2eae4db1 Mon Sep 17 00:00:00 2001 From: Woody Date: Sat, 3 Feb 2024 00:44:38 +0100 Subject: [PATCH 1/8] Add a separate folder for .gz release files --- pio-scripts/output_bins.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pio-scripts/output_bins.py b/pio-scripts/output_bins.py index e12b11c2c..cfedacead 100644 --- a/pio-scripts/output_bins.py +++ b/pio-scripts/output_bins.py @@ -24,12 +24,15 @@ def _create_dirs(dirs=["firmware", "map"]): def create_release(source): release_name = _get_cpp_define_value(env, "WLED_RELEASE_NAME") + # get file extension of source file (.bin or .bin.gz) + ext = source.split(".", 1)[1] if release_name: - _create_dirs(["release"]) + folder = "release" + if ext == "bin.gz": + folder = "release_gz" + _create_dirs([folder]) version = _get_cpp_define_value(env, "WLED_VERSION") - # get file extension of source file (.bin or .bin.gz) - ext = source.split(".", 1)[1] - release_file = "{}release{}WLED_{}_{}.{}".format(OUTPUT_DIR, os.path.sep, version, release_name, ext) + release_file = "{}{}{}WLED_{}_{}.{}".format(OUTPUT_DIR, folder, os.path.sep, version, release_name, ext) shutil.copy(source, release_file) def bin_rename_copy(source, target, env): From e3271b8082e6fa776c659e22f1f2987011cf48b8 Mon Sep 17 00:00:00 2001 From: Woody Date: Tue, 19 Mar 2024 18:15:18 +0100 Subject: [PATCH 2/8] Change path for ESP02-binary --- .github/workflows/wled-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index f9ffb6481..f9721fb27 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -61,7 +61,7 @@ jobs: name: firmware-${{ matrix.environment }} path: | build_output/release/*.bin - build_output/release/*_ESP02.bin.gz + build_output/release_gz/*_ESP02.bin.gz release: name: Create Release runs-on: ubuntu-latest From 7ee4b54154cdb21e4d066fd22af8a02b553898f3 Mon Sep 17 00:00:00 2001 From: Woody Date: Tue, 19 Mar 2024 20:06:09 +0100 Subject: [PATCH 3/8] optimize output_bins.py --- pio-scripts/output_bins.py | 55 +++++++++----------------------------- 1 file changed, 13 insertions(+), 42 deletions(-) diff --git a/pio-scripts/output_bins.py b/pio-scripts/output_bins.py index cfedacead..092754c38 100644 --- a/pio-scripts/output_bins.py +++ b/pio-scripts/output_bins.py @@ -3,7 +3,7 @@ import os import shutil import gzip -OUTPUT_DIR = "build_output{}".format(os.path.sep) +OUTPUT_DIR = os.path.join("build_output") def _get_cpp_define_value(env, define): define_list = [item[-1] for item in env["CPPDEFINES"] if item[0] == define] @@ -13,27 +13,20 @@ def _get_cpp_define_value(env, define): return None -def _create_dirs(dirs=["firmware", "map"]): - # check if output directories exist and create if necessary - if not os.path.isdir(OUTPUT_DIR): - os.mkdir(OUTPUT_DIR) - +def _create_dirs(dirs=["map", "release", "release_gz"]): for d in dirs: - if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): - os.mkdir("{}{}".format(OUTPUT_DIR, d)) + os.makedirs(os.path.join(OUTPUT_DIR, d), exist_ok=True) def create_release(source): release_name = _get_cpp_define_value(env, "WLED_RELEASE_NAME") - # get file extension of source file (.bin or .bin.gz) - ext = source.split(".", 1)[1] if release_name: - folder = "release" - if ext == "bin.gz": - folder = "release_gz" - _create_dirs([folder]) version = _get_cpp_define_value(env, "WLED_VERSION") - release_file = "{}{}{}WLED_{}_{}.{}".format(OUTPUT_DIR, folder, os.path.sep, version, release_name, ext) + release_file = os.path.join(OUTPUT_DIR, "release", f"WLED_{version}_{release_name}.bin") + release_gz_file = os.path.join(OUTPUT_DIR, "release_gz", f"WLED_{version}_{release_name}.bin.gz") + print(f"Copying {source} to {release_file}") shutil.copy(source, release_file) + print(f"Creating gzip file {release_gz_file} from {release_file}") + bin_gzip(release_file, release_gz_file) def bin_rename_copy(source, target, env): _create_dirs() @@ -41,38 +34,16 @@ def bin_rename_copy(source, target, env): # create string with location and file names based on variant map_file = "{}map{}{}.map".format(OUTPUT_DIR, os.path.sep, variant) - bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) - # check if new target files exist and remove if necessary - for f in [map_file, bin_file]: - if os.path.isfile(f): - os.remove(f) - - # copy firmware.bin to firmware/.bin - shutil.copy(str(target[0]), bin_file) - - create_release(bin_file) + create_release(str(target[0])) # copy firmware.map to map/.map if os.path.isfile("firmware.map"): shutil.move("firmware.map", map_file) -def bin_gzip(source, target, env): - _create_dirs() - variant = env["PIOENV"] - - # 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: +def bin_gzip(source, target): + with open(source,"rb") as fp: + with gzip.open(target, "wb", compresslevel = 9) as f: shutil.copyfileobj(fp, f) - create_release(gzip_file) - -env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_rename_copy, bin_gzip]) +env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", bin_rename_copy) From 0a344ada976abedb1f8eb33c860e58cca583a111 Mon Sep 17 00:00:00 2001 From: Woody Date: Sun, 24 Mar 2024 15:23:33 +0100 Subject: [PATCH 4/8] Add bin.gz binaries for 160mhz builds --- .github/workflows/wled-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index f9721fb27..feb0e531a 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -61,7 +61,7 @@ jobs: name: firmware-${{ matrix.environment }} path: | build_output/release/*.bin - build_output/release_gz/*_ESP02.bin.gz + build_output/release_gz/*_ESP02*.bin.gz release: name: Create Release runs-on: ubuntu-latest From d6e73fde50bd5836299c2a1b3226dfba6e640f48 Mon Sep 17 00:00:00 2001 From: Woody Date: Tue, 26 Mar 2024 17:34:01 +0100 Subject: [PATCH 5/8] only create bin.gz files for esp8266 --- pio-scripts/output_bins.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pio-scripts/output_bins.py b/pio-scripts/output_bins.py index 092754c38..10077bca4 100644 --- a/pio-scripts/output_bins.py +++ b/pio-scripts/output_bins.py @@ -22,7 +22,7 @@ def create_release(source): if release_name: version = _get_cpp_define_value(env, "WLED_VERSION") release_file = os.path.join(OUTPUT_DIR, "release", f"WLED_{version}_{release_name}.bin") - release_gz_file = os.path.join(OUTPUT_DIR, "release_gz", f"WLED_{version}_{release_name}.bin.gz") + release_gz_file = release_file + ".gz" print(f"Copying {source} to {release_file}") shutil.copy(source, release_file) print(f"Creating gzip file {release_gz_file} from {release_file}") @@ -42,6 +42,10 @@ def bin_rename_copy(source, target, env): shutil.move("firmware.map", map_file) def bin_gzip(source, target): + # only create gzip for esp8266 + if not env["PIOPLATFORM"] == "espressif8266": + return + with open(source,"rb") as fp: with gzip.open(target, "wb", compresslevel = 9) as f: shutil.copyfileobj(fp, f) From d7739f9764a72e9174e584d3da1cd39def980cea Mon Sep 17 00:00:00 2001 From: Woody Date: Tue, 26 Mar 2024 17:41:28 +0100 Subject: [PATCH 6/8] Revert "Change path for ESP02-binary" This reverts commit e3271b8082e6fa776c659e22f1f2987011cf48b8. --- .github/workflows/wled-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wled-ci.yml b/.github/workflows/wled-ci.yml index feb0e531a..32dae8777 100644 --- a/.github/workflows/wled-ci.yml +++ b/.github/workflows/wled-ci.yml @@ -61,7 +61,7 @@ jobs: name: firmware-${{ matrix.environment }} path: | build_output/release/*.bin - build_output/release_gz/*_ESP02*.bin.gz + build_output/release/*_ESP02*.bin.gz release: name: Create Release runs-on: ubuntu-latest From 5d152baac019c435d01880af5aaf07de67526b1d Mon Sep 17 00:00:00 2001 From: Woody Date: Wed, 27 Mar 2024 21:19:03 +0100 Subject: [PATCH 7/8] Do not create release_gz folder --- pio-scripts/output_bins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pio-scripts/output_bins.py b/pio-scripts/output_bins.py index 10077bca4..6df06d8c8 100644 --- a/pio-scripts/output_bins.py +++ b/pio-scripts/output_bins.py @@ -13,7 +13,7 @@ def _get_cpp_define_value(env, define): return None -def _create_dirs(dirs=["map", "release", "release_gz"]): +def _create_dirs(dirs=["map", "release"]): for d in dirs: os.makedirs(os.path.join(OUTPUT_DIR, d), exist_ok=True) From 6f6356e617caa890e0be8fdf6f8864a2389a337f Mon Sep 17 00:00:00 2001 From: Woody Date: Wed, 27 Mar 2024 21:34:51 +0100 Subject: [PATCH 8/8] fix print output for bin.gz file --- pio-scripts/output_bins.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pio-scripts/output_bins.py b/pio-scripts/output_bins.py index 6df06d8c8..e4a458a9e 100644 --- a/pio-scripts/output_bins.py +++ b/pio-scripts/output_bins.py @@ -25,7 +25,6 @@ def create_release(source): release_gz_file = release_file + ".gz" print(f"Copying {source} to {release_file}") shutil.copy(source, release_file) - print(f"Creating gzip file {release_gz_file} from {release_file}") bin_gzip(release_file, release_gz_file) def bin_rename_copy(source, target, env): @@ -45,7 +44,8 @@ def bin_gzip(source, target): # only create gzip for esp8266 if not env["PIOPLATFORM"] == "espressif8266": return - + + print(f"Creating gzip file {target} from {source}") with open(source,"rb") as fp: with gzip.open(target, "wb", compresslevel = 9) as f: shutil.copyfileobj(fp, f)