tools/ci: Include fetching pico-sdk in the CI environment setup

The Raspberry Pi pico-sdk was not available in the CI build process,
so the test builds for the rp2040 and rp2350 uCs could not execute the
last packaging stage. The SDK is now fetched and included, both at
runtime and in the Docker image.

Signed-off-by: Niccolò Maggioni <nicco.maggioni+nuttx@gmail.com>
This commit is contained in:
Niccolò Maggioni 2025-08-17 16:47:26 +02:00 committed by Xiang Xiao
parent d250808c1c
commit 0f005b7b8c
3 changed files with 58 additions and 2 deletions

View file

@ -293,6 +293,15 @@ RUN mkdir -p wamrc && \
curl -s -L "https://github.com/bytecodealliance/wasm-micro-runtime/releases/download/WAMR-1.1.2/wamrc-1.1.2-x86_64-ubuntu-20.04.tar.gz" \ curl -s -L "https://github.com/bytecodealliance/wasm-micro-runtime/releases/download/WAMR-1.1.2/wamrc-1.1.2-x86_64-ubuntu-20.04.tar.gz" \
| tar -C wamrc -xz | tar -C wamrc -xz
###############################################################################
# Build image for tool required by Raspberry Pi pico-sdk builds
###############################################################################
FROM nuttx-toolchain-base AS nuttx-toolchain-raspberrypi-pico-sdk
# Download the latest pico-sdk source archive
RUN mkdir -p pico-sdk && \
curl -s -L "https://github.com/raspberrypi/pico-sdk/releases/download/2.2.0/pico-sdk-2.2.0.tar.gz" \
| tar -C pico-sdk --strip-components 1 -xz
############################################################################### ###############################################################################
# Final Docker image used for running CI system. This includes all toolchains # Final Docker image used for running CI system. This includes all toolchains
# supported by the CI system. # supported by the CI system.
@ -478,6 +487,11 @@ COPY --from=nuttx-toolchain-esp32 /tools/blobs/* /tools/blobs/esp-bins/
COPY --from=nuttx-toolchain-wasm /tools/wasi-sdk/ wasi-sdk/ COPY --from=nuttx-toolchain-wasm /tools/wasi-sdk/ wasi-sdk/
ENV WASI_SDK_PATH="/tools/wasi-sdk" ENV WASI_SDK_PATH="/tools/wasi-sdk"
ENV PATH="/tools/wamr:$PATH" ENV PATH="/tools/wamr:$PATH"
COPY --from=nuttx-toolchain-esp32 /tools/blobs/* /tools/blobs/esp-bins/
# Raspberry Pi pico-sdk source
COPY --from=nuttx-toolchain-raspberrypi-pico-sdk /tools/pico-sdk/ pico-sdk/
ENV PICO_SDK_PATH="/tools/pico-sdk"
# gn tool # gn tool
RUN mkdir -p /tools/gn RUN mkdir -p /tools/gn

View file

@ -299,6 +299,27 @@ wasi_sdk() {
command wamrc --version command wamrc --version
} }
raspberrypi_pico_sdk() {
if [ ! -f "${NUTTXTOOLS}/pico-sdk" ]; then
local release
local basefile
release="2.2.0"
basefile="pico-sdk-${release}"
cd "${NUTTXTOOLS}"
mkdir -p pico-sdk
# Download the latest pico-sdk source archive
curl -O -L -s https://github.com/raspberrypi/pico-sdk/releases/download/${release}/${basefile}.tar.gz
tar xzf "${basefile}.tar.gz"
mv "${basefile}" pico-sdk
rm "${basefile}.tar.gz"
fi
export PICO_SDK_PATH="${NUTTXTOOLS}/pico-sdk"
echo "export PICO_SDK_PATH=${NUTTXTOOLS}/pico-sdk" >> "${NUTTXTOOLS}"/env.sh
}
setup_links() { setup_links() {
# Configure ccache # Configure ccache
mkdir -p "${NUTTXTOOLS}"/ccache/bin/ mkdir -p "${NUTTXTOOLS}"/ccache/bin/
@ -334,7 +355,7 @@ install_build_tools() {
mkdir -p "${NUTTXTOOLS}" mkdir -p "${NUTTXTOOLS}"
echo "#!/usr/bin/env sh" > "${NUTTXTOOLS}"/env.sh echo "#!/usr/bin/env sh" > "${NUTTXTOOLS}"/env.sh
install="arm_clang_toolchain arm_gcc_toolchain arm64_gcc_toolchain bloaty kconfig_frontends mips_gcc_toolchain python_tools riscv_gcc_toolchain rx_gcc_toolchain sparc_gcc_toolchain xtensa_esp_gcc_toolchain util_linux wasi_sdk" install="arm_clang_toolchain arm_gcc_toolchain arm64_gcc_toolchain bloaty kconfig_frontends mips_gcc_toolchain python_tools riscv_gcc_toolchain rx_gcc_toolchain sparc_gcc_toolchain xtensa_esp_gcc_toolchain util_linux wasi_sdk raspberrypi_pico_sdk"
oldpath=$(cd . && pwd -P) oldpath=$(cd . && pwd -P)
for func in ${install}; do for func in ${install}; do

View file

@ -379,6 +379,27 @@ wasi_sdk() {
command wamrc --version command wamrc --version
} }
raspberrypi_pico_sdk() {
if [ ! -f "${NUTTXTOOLS}/pico-sdk" ]; then
local release
local basefile
release="2.2.0"
basefile="pico-sdk-${release}"
cd "${NUTTXTOOLS}"
mkdir -p pico-sdk
# Download the latest pico-sdk source archive
curl -O -L -s https://github.com/raspberrypi/pico-sdk/releases/download/${release}/${basefile}.tar.gz
tar xzf "${basefile}.tar.gz"
mv "${basefile}" pico-sdk
rm "${basefile}.tar.gz"
fi
export PICO_SDK_PATH="${NUTTXTOOLS}/pico-sdk"
echo "export PICO_SDK_PATH=${NUTTXTOOLS}/pico-sdk" >> "${NUTTXTOOLS}"/env.sh
}
setup_links() { setup_links() {
# Configure ccache # Configure ccache
mkdir -p "${NUTTXTOOLS}"/ccache/bin/ mkdir -p "${NUTTXTOOLS}"/ccache/bin/
@ -414,7 +435,7 @@ install_build_tools() {
mkdir -p "${NUTTXTOOLS}" mkdir -p "${NUTTXTOOLS}"
echo "#!/usr/bin/env sh" > "${NUTTXTOOLS}"/env.sh echo "#!/usr/bin/env sh" > "${NUTTXTOOLS}"/env.sh
install="arm_clang_toolchain arm_gcc_toolchain arm64_gcc_toolchain avr_gcc_toolchain binutils bloaty clang_tidy gen_romfs gperf kconfig_frontends mips_gcc_toolchain python_tools riscv_gcc_toolchain rust dlang rx_gcc_toolchain sparc_gcc_toolchain xtensa_esp_gcc_toolchain u_boot_tools util_linux wasi_sdk c_cache" install="arm_clang_toolchain arm_gcc_toolchain arm64_gcc_toolchain avr_gcc_toolchain binutils bloaty clang_tidy gen_romfs gperf kconfig_frontends mips_gcc_toolchain python_tools riscv_gcc_toolchain rust dlang rx_gcc_toolchain sparc_gcc_toolchain xtensa_esp_gcc_toolchain u_boot_tools util_linux wasi_sdk c_cache raspberrypi_pico_sdk"
oldpath=$(cd . && pwd -P) oldpath=$(cd . && pwd -P)
for func in ${install}; do for func in ${install}; do