summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2023-07-25 17:12:52 +1000
committerJim Mussared <jim.mussared@gmail.com>2023-08-15 17:38:02 +1000
commit91674c41b85b2d22ed263cebb46cc5d99c51c4df (patch)
tree0a438ea180fa57c514ed5497f8ab88a6a588de35
parent96258d371614c74ac2e4e9461ff6cb1ea0f97ced (diff)
downloadmicropython-91674c41b85b2d22ed263cebb46cc5d99c51c4df.tar.gz
micropython-91674c41b85b2d22ed263cebb46cc5d99c51c4df.zip
tools/autobuild: Automatically build all variants for each board.
Removes the special-case for stm32. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
-rwxr-xr-xtools/autobuild/autobuild.sh1
-rwxr-xr-xtools/autobuild/build-boards.sh76
-rwxr-xr-xtools/autobuild/build-stm32-extra.sh39
3 files changed, 50 insertions, 66 deletions
diff --git a/tools/autobuild/autobuild.sh b/tools/autobuild/autobuild.sh
index b3c9c19c7c..999a42c0ed 100755
--- a/tools/autobuild/autobuild.sh
+++ b/tools/autobuild/autobuild.sh
@@ -77,7 +77,6 @@ cd ../samd
build_samd_boards ${FW_TAG} ${LOCAL_FIRMWARE}
cd ../stm32
build_stm32_boards ${FW_TAG} ${LOCAL_FIRMWARE}
-${AUTODIR}/build-stm32-extra.sh ${FW_TAG} ${LOCAL_FIRMWARE}
popd
diff --git a/tools/autobuild/build-boards.sh b/tools/autobuild/build-boards.sh
index 689444a988..f75ccba398 100755
--- a/tools/autobuild/build-boards.sh
+++ b/tools/autobuild/build-boards.sh
@@ -3,8 +3,36 @@
# The functions in this file can be run independently to build boards.
# For example:
#
-# $ source build-boards.sh
-# $ MICROPY_AUTOBUILD_MAKE=make build_rp2_boards -latest /tmp
+# $ source tools/autobuild/build-boards.sh
+# $ cd ports/rp2
+# $ MICROPY_AUTOBUILD_MAKE="make -j8" build_rp2_boards -latest /tmp
+#
+# Or to build a single board:
+#
+# $ source tools/autobuild/build-boards.sh
+# $ cd ports/rp2
+# $ MICROPY_AUTOBUILD_MAKE="make -j8" build_board boards/PICO/board.json -latest /tmp uf2
+
+function copy_artefacts {
+ local dest_dir=$1
+ local descr=$2
+ local fw_tag=$3
+ local build_dir=$4
+ shift 4
+
+ for ext in $@; do
+ dest=$dest_dir/$descr$fw_tag.$ext
+ if [ -r $build_dir/firmware.$ext ]; then
+ mv $build_dir/firmware.$ext $dest
+ elif [ -r $build_dir/micropython.$ext ]; then
+ # esp32 has micropython.elf, etc
+ mv $build_dir/micropython.$ext $dest
+ elif [ $ext = app-bin -a -r $build_dir/micropython.bin ]; then
+ # esp32 has micropython.bin which is just the application
+ mv $build_dir/micropython.bin $dest
+ fi
+ done
+}
function build_board {
# check/get parameters
@@ -13,33 +41,29 @@ function build_board {
return 1
fi
- board_json=$1
- fw_tag=$2
- dest_dir=$3
- shift
- shift
- shift
+ local board_json=$1
+ local fw_tag=$2
+ local dest_dir=$3
+ shift 3
- 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
+ local board=$(echo $board_json | awk -F '/' '{ print $2 }')
+ local descr=$(cat $board_json | python3 -c "import json,sys; print(json.load(sys.stdin).get('id', '$board'))")
+ # Build the "default" variant. For most boards this is the only thing we build.
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
- elif [ -r $build_dir/micropython.$ext ]; then
- # esp32 has micropython.elf, etc
- mv $build_dir/micropython.$ext $dest
- elif [ $ext = app-bin -a -r $build_dir/micropython.bin ]; then
- # esp32 has micropython.bin which is just the application
- mv $build_dir/micropython.bin $dest
- fi
- done
- )
+ local build_dir=/tmp/micropython-build-$board
+ $MICROPY_AUTOBUILD_MAKE BOARD=$board BUILD=$build_dir && copy_artefacts $dest_dir $descr $fw_tag $build_dir $@
rm -rf $build_dir
+
+ # Query variants from board.json and build them. Ignore the special "idf3"
+ # variant for ESP32 boards (this allows the downloads page to still have
+ # the idf3 files for older releases that used to be explicitly built).
+ for variant in `cat $board_json | python3 -c "import json,sys; print(' '.join(v for v in json.load(sys.stdin).get('variants', {}).keys() if v != 'idf3'))"`; do
+ local variant_build_dir=$build_dir-$variant
+ echo "building variant $descr $board $variant"
+ $MICROPY_AUTOBUILD_MAKE BOARD=$board BOARD_VARIANT=$variant BUILD=$variant_build_dir && copy_artefacts $dest_dir $descr-$variant $fw_tag $variant_build_dir $@
+ rm -rf $variant_build_dir
+ done
}
function build_boards {
@@ -49,7 +73,7 @@ function build_boards {
return 1
fi
- check_file=$1
+ local check_file=$1
shift
# check we are in the correct directory
diff --git a/tools/autobuild/build-stm32-extra.sh b/tools/autobuild/build-stm32-extra.sh
deleted file mode 100755
index 887e3cd246..0000000000
--- a/tools/autobuild/build-stm32-extra.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-# Build additional variants of pyboard firmware (base variants are built by build-boards.sh).
-
-# function for building firmware
-function do_build() {
- descr=$1
- board=$2
- shift
- shift
- for variant in `$MICROPY_AUTOBUILD_MAKE BOARD=$board query-variants | grep VARIANTS: | cut -d' ' -f2-`; do
- target=$descr-$variant
- echo "building $target $board"
- build_dir=/tmp/stm-build-$board-$variant
- $MICROPY_AUTOBUILD_MAKE $@ BOARD=$board BOARD_VARIANT=$variant BUILD=$build_dir || exit 1
- mv $build_dir/firmware.dfu $dest_dir/$target$fw_tag.dfu
- mv $build_dir/firmware.hex $dest_dir/$target$fw_tag.hex
- rm -rf $build_dir
- done
-}
-
-# check/get parameters
-if [ $# != 2 ]; then
- echo "usage: $0 <fw-tag> <dest-dir>"
- exit 1
-fi
-
-fw_tag=$1
-dest_dir=$2
-
-# check we are in the correct directory
-if [ ! -r modpyb.c ]; then
- echo "must be in stm directory"
- exit 1
-fi
-
-# build the variants for each board
-do_build pybv10 PYBV10
-do_build pybv11 PYBV11
-do_build pyblitev10 PYBLITEV10