mirror of
https://github.com/micropython/micropython.git
synced 2025-12-16 09:50:15 +01:00
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c5_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_p4) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_hardfp) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_softfp) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
qemu port / build_and_test_rv64 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / repr_b (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, true, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, true, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
The destination directory for the firmware built by `autobuild.sh` is currently hard-coded to `/tmp/autobuild-firmware-$$`. Now that there are many boards built by this script, the `/tmp` partition can run out of space. This commit makes the destination directory configurable via the `MICROPY_AUTOBUILD_DEST` environment variable. Signed-off-by: Damien George <damien@micropython.org>
125 lines
3.9 KiB
Bash
Executable File
125 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Build firmware for ports.
|
|
#
|
|
# Requirements:
|
|
# - All toolchains must be in path (arm-none-eabi-gcc, xtensa-lx106-elf)
|
|
# - IDF_PATH_V50 must be set
|
|
# - MICROPY_AUTOBUILD_MICROPYTHON_REPO must be set to location of micropython repository
|
|
# - MICROPY_AUTOBUILD_MAKE must be set to the make command to use, eg "make -j2"
|
|
# - MICROPY_AUTOBUILD_DEST must be set to a directory name to place the output firmware
|
|
# (this directory will be created, and removed at the end if firmware is copied to a
|
|
# remote machine using MICROPY_AUTOBUILD_REMOTE_MACHINE and MICROPY_AUTOBUILD_REMOTE_DIR)
|
|
#
|
|
# Optional settings:
|
|
# - MICROPY_AUTOBUILD_REMOTE_MACHINE can be set to a remote ssh machine to copy files to
|
|
# - MICROPY_AUTOBUILD_REMOTE_DIR can be set to destination directory on remote machine
|
|
|
|
if [ ! -d "$IDF_PATH_V50" ]; then
|
|
echo "must set IDF_PATH_V50"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$MICROPY_AUTOBUILD_MICROPYTHON_REPO" ]; then
|
|
echo "must set MICROPY_AUTOBUILD_MICROPYTHON_REPO"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$MICROPY_AUTOBUILD_MAKE" ]; then
|
|
echo "must set MICROPY_AUTOBUILD_MAKE"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$MICROPY_AUTOBUILD_DEST" ]; then
|
|
echo "must set MICROPY_AUTOBUILD_DEST"
|
|
exit 1
|
|
fi
|
|
|
|
########################################
|
|
# Initialisation
|
|
|
|
# get directory of this script for access to other build scripts
|
|
AUTODIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
# source additional functions
|
|
source ${AUTODIR}/build-boards.sh
|
|
|
|
# make local directory to put firmware
|
|
LOCAL_FIRMWARE=${MICROPY_AUTOBUILD_DEST}
|
|
mkdir -p ${LOCAL_FIRMWARE}
|
|
|
|
# get latest MicroPython
|
|
git -C ${MICROPY_AUTOBUILD_MICROPYTHON_REPO} pull
|
|
git -C ${MICROPY_AUTOBUILD_MICROPYTHON_REPO} submodule update --init
|
|
git -C ${MICROPY_AUTOBUILD_MICROPYTHON_REPO}/lib/pico-sdk submodule update --init
|
|
|
|
########################################
|
|
# Build all firmware
|
|
|
|
# Fail on some things which are warnings otherwise
|
|
export MICROPY_MAINTAINER_BUILD=1
|
|
|
|
pushd ${MICROPY_AUTOBUILD_MICROPYTHON_REPO}
|
|
|
|
# build cross compiler
|
|
make -C mpy-cross
|
|
|
|
# make the firmware tag
|
|
# final filename will be <BOARD><-VARIANT>-<DATE>-v<SEMVER>.ext
|
|
# where SEMVER is vX.Y.Z or vX.Y.Z-preview.N.gHASH or vX.Y.Z-preview.N.gHASH.dirty
|
|
FW_DATE=$(date '+%Y%m%d')
|
|
# same logic as makeversionhdr.py, convert git-describe output into semver-compatible
|
|
FW_GIT_TAG="$(git describe --tags --dirty --always --match 'v[1-9].*' --abbrev=10)"
|
|
FW_SEMVER_MAJOR_MINOR_PATCH="$(echo $FW_GIT_TAG | cut -d'-' -f1)"
|
|
FW_SEMVER_PRERELEASE="$(echo $FW_GIT_TAG | cut -s -d'-' -f2-)"
|
|
if [ -z "$FW_SEMVER_PRERELEASE" ]; then
|
|
FW_SEMVER="$FW_SEMVER_MAJOR_MINOR_PATCH"
|
|
else
|
|
FW_SEMVER="$FW_SEMVER_MAJOR_MINOR_PATCH-$(echo $FW_SEMVER_PRERELEASE | tr - .)"
|
|
fi
|
|
FW_TAG="-$FW_DATE-$FW_SEMVER"
|
|
|
|
# build new firmware
|
|
cd ports/alif
|
|
build_alif_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../cc3200
|
|
build_cc3200_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../esp8266
|
|
build_esp8266_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../esp32
|
|
(source ${IDF_PATH_V50}/export.sh && build_esp32_boards ${FW_TAG} ${LOCAL_FIRMWARE})
|
|
cd ../mimxrt
|
|
build_mimxrt_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../nrf
|
|
build_nrf_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../renesas-ra
|
|
build_renesas_ra_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../rp2
|
|
build_rp2_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../samd
|
|
build_samd_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
cd ../stm32
|
|
build_stm32_boards ${FW_TAG} ${LOCAL_FIRMWARE}
|
|
|
|
popd
|
|
|
|
########################################
|
|
# Copy firmware to remote machine
|
|
|
|
if [ -z "$MICROPY_AUTOBUILD_REMOTE_MACHINE" -o -z "$MICROPY_AUTOBUILD_REMOTE_DIR" ]; then
|
|
echo "No remote given, leaving firmware in ${LOCAL_FIRMWARE}"
|
|
exit 0
|
|
fi
|
|
|
|
# copy new firmware to remote machine
|
|
scp ${LOCAL_FIRMWARE}/* ${MICROPY_AUTOBUILD_REMOTE_MACHINE}:${MICROPY_AUTOBUILD_REMOTE_DIR}/
|
|
|
|
# remove old firmware
|
|
${AUTODIR}/remove_old_firmware.py ${MICROPY_AUTOBUILD_REMOTE_MACHINE} ${MICROPY_AUTOBUILD_REMOTE_DIR}
|
|
|
|
########################################
|
|
# Clean up
|
|
|
|
/bin/rm -v ${LOCAL_FIRMWARE}/*
|
|
/bin/rmdir ${LOCAL_FIRMWARE}
|