diff --git a/.github/workflows/build_release_bins.yml b/.github/workflows/build_release_bins.yml index f0a706b..62de5ba 100644 --- a/.github/workflows/build_release_bins.yml +++ b/.github/workflows/build_release_bins.yml @@ -43,15 +43,15 @@ jobs: pip install --upgrade platformio pio upgrade --dev pio pkg update --global - - name: Update build command - working-directory: ./ESP - run: | - sed -i '/\[env\]/p; s/\[env\]/upload_protocol = custom/' platformio.ini - sed -i '/\[env\]/p; s/\[env\]/upload_command = \$PYTHONEXE .\/tools\/createzip.py \$FLASH_EXTRA_IMAGES \$ESP32_APP_OFFSET \$SOURCE/' platformio.ini + #- name: Update build command + # working-directory: ./ESP + # run: | + # sed -i '/\[env\]/p; s/\[env\]/upload_protocol = custom/' platformio.ini + # sed -i '/\[env\]/p; s/\[env\]/upload_command = \$PYTHONEXE .\/tools\/createzip.py \$FLASH_EXTRA_IMAGES \$ESP32_APP_OFFSET \$SOURCE/' platformio.ini - name: Build OpenIris Firmware working-directory: ./ESP run: | - mkdir build + mkdir build/${{ matrix.target_name }}${{ matrix.target_build_type }} echo "::group::platformio.ini" cat platformio.ini echo "::endgroup::" diff --git a/ESP/lib/src/data/StateManager/StateManager.cpp b/ESP/lib/src/data/StateManager/StateManager.cpp index ec64375..427faad 100644 --- a/ESP/lib/src/data/StateManager/StateManager.cpp +++ b/ESP/lib/src/data/StateManager/StateManager.cpp @@ -6,4 +6,4 @@ StateManager webServerStateManager; StateManager mdnsStateManager; StateManager cameraStateManager; StateManager ledStateManager; -StateManager streamStateManager; \ No newline at end of file +StateManager streamStateManager; diff --git a/ESP/lib/src/data/StateManager/StateManager.hpp b/ESP/lib/src/data/StateManager/StateManager.hpp index 039563e..c163582 100644 --- a/ESP/lib/src/data/StateManager/StateManager.hpp +++ b/ESP/lib/src/data/StateManager/StateManager.hpp @@ -149,4 +149,4 @@ extern StateManager cameraStateManager; extern StateManager ledStateManager; extern StateManager streamStateManager; -#endif // STATEMANAGER_HPP \ No newline at end of file +#endif // STATEMANAGER_HPP diff --git a/ESP/platformio.ini b/ESP/platformio.ini index 208be51..d834133 100644 --- a/ESP/platformio.ini +++ b/ESP/platformio.ini @@ -68,4 +68,6 @@ lib_deps = https://github.com/me-no-dev/AsyncTCP.git build_type = debug -extra_scripts = pre:tools/customname.py +extra_scripts = + pre:tools/customname.py + post:tools/createzip.py diff --git a/ESP/tools/createzip.py b/ESP/tools/createzip.py index daa4b9e..c60a281 100644 --- a/ESP/tools/createzip.py +++ b/ESP/tools/createzip.py @@ -2,57 +2,65 @@ Import("env") import sys -from os import getcwd +import os from ntpath import basename from zipfile import ZipFile import json -my_flags = env.ParseFlags(env["BUILD_FLAGS"]) -defines = dict() -for x in my_flags.get("CPPDEFINES"): - if type(x) is tuple: - (k, v) = x - defines[k] = v - # print("Type Tuple: %s" % x) - elif type(x) is list: - k = x[0] - v = x[1] - defines[k] = v - # print("Type List: %s" % x) + +def createZip(source, target, env): + if os == "linux": + print("Program has been built, creating zip archive!") + my_flags = env.ParseFlags(env["BUILD_FLAGS"]) + defines = dict() + for x in my_flags.get("CPPDEFINES"): + if type(x) is tuple: + (k, v) = x + defines[k] = v + elif type(x) is list: + k = x[0] + v = x[1] + defines[k] = v + else: + defines[x] = "" # empty value + s = lambda x: x.replace('"', "") + + print("FLASH_EXTRA_IMAGES: %s\n" % env["FLASH_EXTRA_IMAGES"]) + print("ESP32_APP_OFFSET: %s\n" % env["ESP32_APP_OFFSET"]) + array_args = [env["FLASH_EXTRA_IMAGES"], env["ESP32_APP_OFFSET"]] + + for (offset, image) in env["FLASH_EXTRA_IMAGES"]: + print("\nImage: %s" % str(image)) + array_args.append(str(image)) + array_args.append(str(offset)) + + for _source in source: + print("\nSource: %s" % str(_source)) + array_args.append(str(_source)) + n = 2 + partitions_arg = array_args[1:] + partitions = final = [ + partitions_arg[i * n : (i + 1) * n] + for i in range((len(partitions_arg) + n - 1) // n) + ] + file_name = "./build/{0}/{1}.zip".format(str(env["PIOENV"]), env["PROGNAME"]) + with ZipFile(file_name, "w") as archive: + print('\nCreating "' + archive.filename + '"', end="\n") + parts = [] + for [offset, path] in partitions: + filename = basename(path) + archive.write(path, filename) + partition = { + "path": filename, + "offset": int(offset, 16), + } + parts.append(partition) + manifest = { + "chipFamily": "ESP32", + "parts": parts, + } + archive.writestr("manifest.json", json.dumps(manifest)) else: - defines[x] = "" # empty value - # print("Warning: unknown type for %s" % x) + print("Not running on Linux, skipping zip creation") -# strip quotes needed for shell escaping -s = lambda x: x.replace('"', "") - - -n = 2 -partitions_arg = sys.argv[1:] -partitions = final = [ - partitions_arg[i * n : (i + 1) * n] - for i in range((len(partitions_arg) + n - 1) // n) -] - -# file_name = "build/" + str(env["PIOENV"]) + "/" + env["PROGNAME"] + ".zip" - -file_name = "build/{1}/{2}.zip".format(str(env["PIOENV"]), env["PROGNAME"]) - -with ZipFile(file_name, "w") as archive: - print('Creating "' + archive.filename + '"', end="\n") - parts = [] - - for [offset, path] in partitions: - filename = basename(path) - archive.write(path, filename) - partition = { - "path": filename, - "offset": int(offset, 16), - } - parts.append(partition) - - manifest = { - "chipFamily": "ESP32", - "parts": parts, - } - archive.writestr("manifest.json", json.dumps(manifest)) +env.AddPostAction("$PROGPATH", createZip)