From 7e80a22c650110baa31d2129d6e5738dbf476fff Mon Sep 17 00:00:00 2001 From: Anson Mansfield Date: Sat, 8 Nov 2025 11:55:26 -0500 Subject: [PATCH] micropython: Add MicroPython build container. Signed-off-by: Anson Mansfield --- .github/workflows/build.yml | 1 + Dockerfile.micropython | 19 ++++++++++++++++++ micropython/build.sh | 39 +++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 Dockerfile.micropython create mode 100755 micropython/build.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b148380..f354b62 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,6 +24,7 @@ jobs: - rust-linux - vast - mads + - micropython - nix - bloaty - lfortran diff --git a/Dockerfile.micropython b/Dockerfile.micropython new file mode 100644 index 0000000..2e17222 --- /dev/null +++ b/Dockerfile.micropython @@ -0,0 +1,19 @@ +FROM ubuntu:20.04 + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update -y -q && apt-get upgrade -y -q && apt-get update -y -q && \ + apt-get install -y -q \ + python3 \ + build-essential \ + libreadline-dev \ + libffi-dev \ + git \ + pkg-config \ + gcc-arm-none-eabi \ + libnewlib-arm-none-eabi + +RUN mkdir -p /root +COPY micropython /root/ +COPY common.sh /root/ + +WORKDIR /root diff --git a/micropython/build.sh b/micropython/build.sh new file mode 100755 index 0000000..55ce77e --- /dev/null +++ b/micropython/build.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +set -ex +source common.sh + +VERSION=$1 + +URL=https://github.com/micropython/micropython.git +REPO=micropython +FULLNAME=micropython-${VERSION}.tar.xz +OUTPUT=$2/${FULLNAME} + +REVISION="micropython-${VERSION}" +LAST_REVISION="${3:-}" + +DEST="/opt/compiler-explorer/${REVISION}" + +initialise "${REVISION}" "${OUTPUT}" "${LAST_REVISION}" + +if [[ $VERSION == 'preview' ]]; then + git clone --depth 1 "${URL}" "${REPO}" +else + git clone --depth 1 "${URL}" -b "v${VERSION}" "${REPO}" +fi; + +( + cd "${REPO}" + set +u + source tools/ci.sh + ci_unix_standard_build +) + +mkdir -p "${DEST}" "${DEST}/bin" "${DEST}/tools" "${DEST}/py" +cp "${REPO}/mpy-cross/build/mpy-cross" "${DEST}/bin/mpy-cross" +cp "${REPO}/ports/unix/build-standard/micropython" "${DEST}/bin/micropython" +cp "${REPO}/tools/mpy-tool.py" "${DEST}/tools/mpy-tool.py" +cp "${REPO}/py/makeqstrdata.py" "${DEST}/py/makeqstrdata.py" + +complete "${DEST}" "${FULLNAME}" "${OUTPUT}"