diff options
author | Damien George <damien@micropython.org> | 2021-12-10 21:26:08 +1100 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2021-12-10 21:29:27 +1100 |
commit | 3f589e2f39aeb6734962c2eadb3da8a2ca2f65c8 (patch) | |
tree | e84db9e9b4daf3f558d6547d23e69a35d0068d87 /tools/autobuild/build-boards.sh | |
parent | c613f5bb49bd83137c11912260c7691f4b284a90 (diff) | |
download | micropython-3f589e2f39aeb6734962c2eadb3da8a2ca2f65c8.tar.gz micropython-3f589e2f39aeb6734962c2eadb3da8a2ca2f65c8.zip |
tools/autobuild: Automatically build all esp32 boards.
Any board with a board.json file will be built. ESP32-based boards will be
built using the IDF at $IDF_PATH_V42, all other MCU variants (S2, S3, C3)
will be built using the IDF at $IDF_PATH_V44.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tools/autobuild/build-boards.sh')
-rwxr-xr-x | tools/autobuild/build-boards.sh | 98 |
1 files changed, 78 insertions, 20 deletions
diff --git a/tools/autobuild/build-boards.sh b/tools/autobuild/build-boards.sh index bb5d8d344e..4b5259b667 100755 --- a/tools/autobuild/build-boards.sh +++ b/tools/autobuild/build-boards.sh @@ -6,53 +6,111 @@ # $ source build-boards.sh # $ MICROPY_AUTOBUILD_MAKE=make build_rp2_boards -latest /tmp -function build_boards { +function build_board { # check/get parameters if [ $# -lt 4 ]; then - echo "usage: $0 <fw-tag> <dest-dir> <check-file> <exts...>" + echo "usage: $0 <board-json-file> <fw-tag> <dest-dir> <exts...>" return 1 fi - fw_tag=$1 - dest_dir=$2 - check_file=$3 + board_json=$1 + fw_tag=$2 + dest_dir=$3 shift shift shift + board=$(echo $board_json | awk -F '/' '{ print $2 }') + descr=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('id', '$board'))") + build_dir=/tmp/micropython-build-$board + + echo "building $descr $board" + $MICROPY_AUTOBUILD_MAKE BOARD=$board BUILD=$build_dir && ( + for ext in $@; do + dest=$dest_dir/$descr$fw_tag.$ext + if [ -r $build_dir/firmware.$ext ]; then + mv $build_dir/firmware.$ext $dest + else + # esp32 has micropython.elf and micropython.map + mv $build_dir/micropython.$ext $dest + fi + done + ) + rm -rf $build_dir +} + +function build_boards { + # check/get parameters + if [ $# -lt 4 ]; then + echo "usage: $0 <check-file> <fw-tag> <dest-dir> <exts...>" + return 1 + fi + + check_file=$1 + shift + # check we are in the correct directory if [ ! -r $check_file ]; then echo "must be in directory containing $check_file" return 1 fi + # build all boards that have a board.json file + for board_json in $(find boards/ -name board.json | sort); do + build_board $board_json $@ + done +} + +function build_esp32_boards { + # check/get parameters + if [ $# != 2 ]; then + echo "usage: $0 <fw-tag> <dest-dir>" + return 1 + fi + + fw_tag=$1 + dest_dir=$2 + + # check we are in the correct directory + if [ ! -r modesp32.c ]; then + echo "must be in esp32 directory" + return 1 + fi + + # build the boards, based on the IDF version for board_json in $(find boards/ -name board.json | sort); do - board=$(echo $board_json | awk -F '/' '{ print $2 }') - descr=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('id', '$board'))") - build_dir=/tmp/micropython-build-$board - - echo "building $descr $board" - $MICROPY_AUTOBUILD_MAKE BOARD=$board BUILD=$build_dir && ( - for ext in $@; do - mv $build_dir/firmware.$ext $dest_dir/$descr$fw_tag.$ext - done - ) - rm -rf $build_dir + mcu=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('mcu', 'unknown'))") + if idf.py --version | grep -q v4.2; then + if [ $mcu = esp32 ]; then + # build standard esp32-based boards with IDF v4.2 + if echo $board_json | grep -q GENERIC; then + # traditionally, GENERIC and GENERIC_SPIRAM boards used manifest_release.py + MICROPY_AUTOBUILD_MAKE="$MICROPY_AUTOBUILD_MAKE FROZEN_MANIFEST=$(pwd)/boards/manifest_release.py" build_board $board_json $fw_tag $dest_dir bin elf map + else + build_board $board_json $fw_tag $dest_dir bin elf map + fi + fi + else + if [ $mcu != esp32 ]; then + # build esp32-s2/s3/c3 based boards with IDF v4.4+ + build_board $board_json $fw_tag $dest_dir bin elf map + fi + fi done } function build_mimxrt_boards { - build_boards $1 $2 modmimxrt.c bin hex + build_boards modmimxrt.c $1 $2 bin hex } function build_rp2_boards { - build_boards $1 $2 modrp2.c uf2 + build_boards modrp2.c $1 $2 uf2 } function build_samd_boards { - build_boards $1 $2 samd_soc.c uf2 + build_boards samd_soc.c $1 $2 uf2 } function build_stm32_boards { - build_boards $1 $2 modpyb.c dfu hex + build_boards modpyb.c $1 $2 dfu hex } |