Skip to content

Commit 736a6e0

Browse files
committed
use postbuild script to generate combined/ota.bin to workaround $ escape with ninja target
1 parent 61b051a commit 736a6e0

File tree

2 files changed

+32
-28
lines changed

2 files changed

+32
-28
lines changed

.github/workflows/ci_set_matrix.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ def set_matrix_json():
1818
if b.is_dir():
1919
matrix[p.name]['board'].append(b.name)
2020
# For quick testing by only build 1 espressif board
21-
if p.name == 'espressif':
22-
break
21+
# if p.name == 'espressif':
22+
# break
2323
print(json.dumps(matrix))
2424

2525

ports/espressif/CMakeLists.txt

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,36 @@ cmake_print_variables(GIT_VERSION GIT_SUBMODULE_VERSIONS)
3232

3333
project(tinyuf2)
3434

35-
# Post build: generate bootloader_bin.c for self-update and combined.bin
36-
add_custom_command(TARGET tinyuf2.elf POST_BUILD
37-
COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR}/apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR}/tinyuf2.bin
38-
)
35+
set(ARTIFACT_PATH ${CMAKE_CURRENT_LIST_DIR}/_bin/${BOARD})
36+
execute_process(COMMAND mkdir -p ${ARTIFACT_PATH})
3937

40-
add_custom_command(TARGET tinyuf2.elf POST_BUILD
41-
BYPRODUCTS ${CMAKE_BINARY_DIR}/combined.bin
42-
COMMAND ${CMAKE_COMMAND} -E echo "Creating combined.bin"
43-
COMMAND bash -c "esptool.py --chip ${IDF_TARGET} merge_bin --output combined.bin $(tr '\\n' ' ' < ${CMAKE_BINARY_DIR}/flash_args)"
38+
# Create post-build script for combined.bin / combined-ota.bin
39+
file(WRITE ${CMAKE_BINARY_DIR}/tinyuf2.postbuild.sh
40+
"#!/bin/bash\n"
41+
"echo \"Creating combined.bin\"\n"
42+
"esptool.py --chip ${IDF_TARGET} merge_bin --output combined.bin $(tr '\\n' ' ' < ${CMAKE_BINARY_DIR}/flash_args)\n"
43+
)
44+
45+
# check if board is 4MB flash and create combined-ota.bin
46+
file(READ ${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/sdkconfig BOARD_SDKCONFIG_CONTENTS)
47+
string(FIND ${BOARD_SDKCONFIG_CONTENTS} "partitions-4MB-noota.csv" MATCH_INDEX)
48+
if(NOT MATCH_INDEX EQUAL -1)
49+
file(APPEND ${CMAKE_BINARY_DIR}/tinyuf2.postbuild.sh
50+
"echo \"Creating combined-ota.bin\"\n"
51+
"gen_esp32part.py ${CMAKE_CURRENT_LIST_DIR}/partitions-4MB.csv ${CMAKE_BINARY_DIR}/partition_table/partitions-table-4MB-ota.bin\n"
52+
"esptool.py --chip ${IDF_TARGET} merge_bin --output combined_ota.bin $(tr '\\n' ' ' < ${CMAKE_BINARY_DIR}/flash_args | sed 's/partition-table.bin/partitions-table-4MB-ota.bin/g')\n"
53+
"cp combined_ota.bin ${ARTIFACT_PATH}/combined_ota.bin\n"
54+
)
55+
endif()
56+
57+
add_custom_command(TARGET app POST_BUILD
58+
COMMAND bash ${CMAKE_BINARY_DIR}/tinyuf2.postbuild.sh
4459
VERBATIM
4560
)
4661

47-
## Post build: copy binaries for artifact
48-
set(ARTIFACT_PATH ${CMAKE_CURRENT_LIST_DIR}/_bin/${BOARD})
49-
add_custom_command(TARGET tinyuf2.elf POST_BUILD
62+
# Post build: copy binaries for artifact
63+
add_custom_command(TARGET app POST_BUILD
5064
COMMAND ${CMAKE_COMMAND} -E echo "Copy binaries for artifact"
51-
COMMAND mkdir -p ${ARTIFACT_PATH}
5265
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bootloader/bootloader.bin ${ARTIFACT_PATH}/bootloader.bin
5366
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/ota_data_initial.bin ${ARTIFACT_PATH}/ota_data_initial.bin
5467
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/partition_table/partition-table.bin ${ARTIFACT_PATH}/partition-table.bin
@@ -57,21 +70,12 @@ add_custom_command(TARGET tinyuf2.elf POST_BUILD
5770
VERBATIM
5871
)
5972

60-
# check if board is 4MB flash and create combined-ota.bin
61-
file(READ ${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/sdkconfig BOARD_SDKCONFIG_CONTENTS)
62-
string(FIND ${BOARD_SDKCONFIG_CONTENTS} "partitions-4MB-noota.csv" MATCH_INDEX)
63-
if(NOT MATCH_INDEX EQUAL -1)
64-
add_custom_command(TARGET tinyuf2.elf POST_BUILD
65-
BYPRODUCTS ${CMAKE_BINARY_DIR}/combined_ota.bin
66-
COMMAND ${CMAKE_COMMAND} -E echo "Creating combined_ota.bin"
67-
COMMAND gen_esp32part.py ${CMAKE_CURRENT_LIST_DIR}/partitions-4MB.csv ${CMAKE_BINARY_DIR}/partition_table/partitions-table-4MB-ota.bin
68-
COMMAND bash -c "esptool.py --chip ${IDF_TARGET} merge_bin --output combined_ota.bin $(tr '\\n' ' ' < ${CMAKE_BINARY_DIR}/flash_args | sed 's/partition-table.bin/partitions-table-4MB-ota.bin/g')"
69-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/combined_ota.bin ${ARTIFACT_PATH}/combined_ota.bin
70-
VERBATIM
71-
)
72-
endif()
73-
7473
# External project for self-update
74+
# Post build: generate bootloader_bin.c for self-update and combined.bin
75+
add_custom_command(TARGET app POST_BUILD
76+
COMMAND ${Python_EXECUTABLE} ${UF2CONV_PY} --carray -o ${CMAKE_CURRENT_LIST_DIR}/apps/self_update/main/bootloader_bin.c ${CMAKE_BINARY_DIR}/tinyuf2.bin
77+
)
78+
7579
externalproject_add(self_update
7680
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/apps/self_update
7781
BINARY_DIR ${CMAKE_BINARY_DIR}/self_update

0 commit comments

Comments
 (0)