summaryrefslogtreecommitdiff
path: root/.github
AgeCommit message (Collapse)Author
2025-12-01esp32/boards/ESP32_GENERIC_P4: Add board definition for ESP32P4.Vincent1-python
Includes a base variant with LAN, and C5_WIFI and C6_WIFI variants with LAN, WiFi and BLE. And builds this board in the esp32 CI, to cover the P4 support. Signed-off-by: Vincent1-python <pywei201209@163.com> Signed-off-by: Angus Gratton <angus@redyak.com.au> Signed-off-by: Damien George <damien@micropython.org>
2025-11-30tools/ci.sh: Install latest ARM toolchain for stm32 CI.Damien George
This is needed to build Cortex-M55 (STM32N6) based boards. Signed-off-by: Damien George <damien@micropython.org>
2025-11-27github/workflows: Test mpy-cross debug emitter.Alessandro Gatti
This commit adds a new workflow step to the CI, to test the debug emitter provided by mpy-cross. The checks being done are limited to make sure that the debug emitter does not crash and emits opcodes for a simple test file that is guaranteed to work for all configurations. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-11-26github/workflows: Bump actions/checkout from 5 to 6.dependabot[bot]
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17tools/ci.sh: Build ESP32_GENERIC_C5 as part of esp32 CI.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-10-20github/workflows: Free up more disk space on zephyr workflow.Damien George
Zephyr CI is currently failing, because the runner is out of space. Free up some more space using the existing plugin. Fixes issue #18290. Signed-off-by: Damien George <damien@micropython.org>
2025-10-08tools/ci.sh: Add and use new ci_code_size_report function.Jeff Epler
Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2025-10-04github/workflows: Switch to macos-26 for unix CI.Angus Gratton
To test if Apple Clang 17.0.0 + macOS 26 builds the unix port cleanly. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-10-02github/workflows: Use new ci.sh style for calling functions.Jeff Epler
During CI, invoke `ci.sh` the same way we'd recommend a developer to do so locally. Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2025-09-28github/workflows: Add 32-bit OBJ_REPR_B CI job.Jeff Epler
This showed up some interesting errors (hopefully all fixed now). Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2025-09-25github/workflows: Run esp32&zephyr daily to keep mstr branch caches hot.Angus Gratton
Currently it seems if master branch doesn't build for 1-2 days then the cached ESP-IDF install (1.6GB) and Zephyr workspace (3.1GB) caches expire. Then each PR branch has to create its own redundant cache instead of falling back to the default branch cache, which is expensive and quickly blows our 10GB cache limit. Currently this is mitigated (and possibly happens more frequently) due to GitHub's relatively soft enforcement of the limit (at time of writing we're using 33GB of 10GB), but apparently they're going to start enforcing it more aggressively in October. (We may find we need to do this twice a day...) This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-09-24github/workflows: Retry Windows VC2017 & 2019 install steps.Angus Gratton
The Windows 8.1 sdksetup.exe in particular seems seems to fail intermittently pretty often, so retry each step up to four times before failing outright. Delete the Chocolatey temp directory between each run, as it seems like the root cause is a corrupt download. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-09-22github/workflows: Bump actions/checkout from 4 to 5.dependabot[bot]
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19qemu/riscv64: Add new QEMU RV64 port.Alessandro Gatti
This adds a QEMU-based bare metal RISC-V 64 bits port. For the time being only QEMU's "virt" 64 bits board is supported, using the lp64 ABI and the RV64IMC architecture. The port's README is also updated to keep track of these changes. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-09-16github/workflows: Bump actions/setup-python from 5 to 6.dependabot[bot]
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2025-09-16github/workflows: Bump actions/github-script from 7 to 8.dependabot[bot]
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2025-09-15all: Remove Python 2.7 support.Jeff Epler
Python 2.7 has been EOL since January 2020. Ubuntu oldoldlts (Focal Fossa, 20.04) has Python 3.8. Debian oldoldstable (Buster, from 2019) has Python 3.7. RHEL 8 (from 2019) has Python 3.6. It's easier than ever to install a modern Python using uv. Given this, it seems like a fine idea to drop Python 2.7 support. Even though the build is not tested on Python as old as 3.3, I left comments stating that "3.3+" is the baseline Python version. However, it might make sense to bump this to e.g., 3.10, the oldest Python 3 version used during CI. Or, using uv or another method actually test on the oldest Python interpreter that is desirable to support (uv goes back to Python 3.7 easily; in October 2025, the oldest supported Python interpreter version will be 3.10) Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-08-26tools/ci.sh: Extend Arm testing to include hardfp targets.Alessandro Gatti
This commit lets CI extend the testing scope of the QEMU Arm target, by letting it perform the usual battery of tests (interpreter and natmods) also on hardfp targets. The default board for Arm testing lacks hardware floating point support, so natmods weren't tested in that specific configuration. With the introduction of the "MPS_AN500" QEMU target, now this is made possible as said board emulates a Cortex-M7 machine with a single- and double-precision floating point unit. To reduce the impact on build times, the "ci_qemu_build_arm_thumb" CI step was split in two: "ci_qemu_build_arm_thumb_softfp" and "ci_qemu_build_arm_thumb_hardfp" - so hopefully those can run in parallel whenever possible. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-08-16github/workflows: Bump actions/checkout from 4 to 5.dependabot[bot]
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15github/workflows: Run webassembly and zephyr workflows if tests/ change.Damien George
Because these ports run tests as part of CI, and need to be run if any of the tests change, to check those changes. Signed-off-by: Damien George <damien@micropython.org>
2025-08-02github/workflows: Add a CI job to build ESP32-C2 and ESP32-C6 boards.Damien George
So that all six supported SoCs are built by CI. Signed-off-by: Damien George <damien@micropython.org>
2025-08-01github/workflows: Build unix port for docs and run workflow more often.Damien George
The unix port is needed to build the docs, due to the cpydiff tests which run both CPython and MicroPython (unix port). That was previously not failing the CI because the output from MicroPython was: /bin/sh: 1: ../ports/unix/build-standard/micropython: not found which doesn't match the CPython output for any of the cpydiff tests, and so it was considered a "pass" in terms of the output differing. Also, run the docs workflow when py/ or tests/cpydiff/ changes, because the cpydiff results may change when the core code changes. Signed-off-by: Damien George <damien@micropython.org>
2025-07-23github/workflows: Add new CI job to test unix port with GIL enabled.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-07-18unix/variants: Add a 'longlong' variant to test 64-bit bigints in CI.Angus Gratton
Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-07-06github/workflows: Use Python 3.11 for unix coverage testing.Jeff Epler
This removes the need for an explicit `sys_settrace_features.py.exp` file. This means that people testing locally will also need to install Python 3.11 in some way, such as with pyenv or uv, and use it during `make VARIANT=coverage test`, or they will get failures. When using Python from GitHub actions/setup-python, pip3 can't be wrapped by sudo, because this invokes the operating system python instead. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-06github/workflows: Remove the unix "settrace" CI job.Jeff Epler
This becomes redundant when the main coverage build includes settrace. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-07-01github/workflows: Run the address sanitizer (ASan) build during CI.Jeff Epler
Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-06-16github/workflows: Add sanitize_undefined workflow to unix port CI.Jeff Epler
gcc's "undefined behavior" sanitizer can catch a range of misbehaviors at runtime that normally go unnoticed. These include integer and pointer operations that are "undefined" per the relevant C specification. This commit enables undefined behavior detection during a new unix coverage-like build. Signed-off-by: Jeff Epler <jepler@gmail.com>
2025-06-11github/workflows: Use windows-latest runner for all Windows CI jobs.Damien George
The windows-2019 runner has been deprecated by GitHub, so stop using that. Also take the chance to stop using windows-2022 and just use windows-latest everywhere. Signed-off-by: Damien George <damien@micropython.org>
2025-06-10github/workflows: Split QEMU/Arm builds into separate entries.Alessandro Gatti
This commit takes the QEMU/Arm CI build and test step and splits it into three separate steps (bigendian, sabrelite, thumb), to allow them to run in parallel. Currently the QEMU/Arm CI build step would take up to 16 minutes, often being the last step blocking a full test run. With this commit, when the steps run in parallel the time it takes to complete the QEMU/Arm build and test procedure is cut in half - taking between 8 to 9 minutes depending on the CI runner load. The existing `ci_build_and_test_arm` function has been removed, in favour of having three separate functions - one per configuration. They are called `ci_build_and_test_arm_bigendian`, `ci_build_and_test_arm_sabrelite`, and `ci_build_and_test_arm_thumb`. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-04-24top: Bump Ruff version to v0.11.6.Angus Gratton
Brings it into sync with a matching change to micropython-lib (which was much older). Includes one small automatic fix. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-04-09github/workflows: Add Alif port to CI.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-02-25all: Upgrade to ruff v0.9.6.Christian Clauss
Signed-off-by: Christian Clauss <cclauss@me.com>
2025-02-25all: Upgrade codespell to v2.4.1.Christian Clauss
This commit upgrades from codespell==2.2.6 to the current codespell==2.4.1, adding emac to the ignore-words-list. Signed-off-by: Christian Clauss <cclauss@me.com>
2025-02-25github/workflows: Include the Python version in the ESP-IDF cache key.Angus Gratton
Changing runner OS can change Python version, and ESP-IDF installs are keyed on ESP-IDF and Python version together. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2025-02-25github/workflows: Stop using ubuntu-20.04.Damien George
For GitHub Actions, ubuntu-20.04 is deprecated and will be removed by 1st April 2025. See announcement at https://github.com/actions/runner-images/issues/11101 This commit changes actions that use ubuntu-20.04 to a newer image. Signed-off-by: Damien George <damien@micropython.org>
2025-01-14github/workflows: Use ubuntu-22.04 for unix qemu CI.Damien George
To use an older version of libffi. Signed-off-by: Damien George <damien@micropython.org>
2025-01-14github/workflows: Use Python 3.11 for unix settrace jobs.Damien George
GitHub Actions has updated ubuntu-latest to 24.04, which now defaults CPython to 3.12, which has a known regression with settrace. Fix that by explicitly using CPython 3.11. Signed-off-by: Damien George <damien@micropython.org>
2024-12-18ci: Add caching of ccache for Zephyr.Angus Gratton
Similar to the ESP32 builds, but needs additional step to pass the ccache directory through to the Zephyr container. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-12-18ci: Cache Zephyr workspace installation.Angus Gratton
Can save several minutes downloading the Zephyr docker image and/or cloning repo from GitHub. Cache keyed on the Zephyr version, which AFAIK is the only determinant for the workspace contents. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-11-30github/workflows: Bump codecov/codecov-action from 4 to 5.dependabot[bot]
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4...v5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2024-11-28github/workflows: Workaround using CPython 3.12 in MSYS2 builds.Angus Gratton
Once MSYS2 repository updates past Python 3.12, this commit can be reverted. Explanation: CPython 3.12 can't pass sys_settrace_features test (see parent commit for explanation). MSYS2 mingw-w64-ARCH-python package is currently 3.12.7. MSYS2 doesn't recommend installing old packages from their archive (due to library dependencies), so switch to the GitHub CI setup-python action for now. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-10-31tools/ci.sh: Fix reference commit for code size comparison.Angus Gratton
Previously the code size comparison was between the merge base (i.e. where the PR branched), and the generated merge commit into master. If the PR branch was older than current master, this meant the size comparison could incorrectly include changes already merged on master but missing from the PR branch. This commit changes it to compare the generated merge commit against current master, i.e. the size impact if this PR was to be merged. This commit also disables running the code size check on "push", it now only runs on pull_request events. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-10-31tools/ci.sh: Fix commit msg checking when PR branch HEAD behind master.Angus Gratton
Fixes the problem noted at https://github.com/micropython/micropython/pull/15547#issuecomment-2434479702 which is that, because default CI HEAD for a PR is a (generated) merge commit into the master branch's current HEAD, then if the PR branch isn't fully rebased then the commit check runs against commits from master as well! Also drops running this check on push, the pull_request event is triggered by default on open and update ("synchronized" event), which probably covers the cases where this check should run. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-10-03github/workflows: Free up disk space on zephyr workflow.Damien George
The zephyr builds take up quite a lot of space. Signed-off-by: Damien George <damien@micropython.org>
2024-09-23github/workflows: Update Ubuntu images for code size CI tasks.Alessandro Gatti
This updates the Ubuntu OS image the code size CI tasks run on, from 20.04-LTS to 22.04-LTS. This is needed because 20.04 didn't have packages that are needed to build RISC-V 32 code. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-09-06qemu: Rename qemu-arm port to qemu.Damien George
Because this port now supports multiple architectures. Signed-off-by: Damien George <damien@micropython.org>
2024-09-04qemu-arm: Merge RISC-V 32-bit support into qemu-arm port.Damien George
Currently both the qemu-arm and qemu-riscv ports share a lot of code and functionality. This commit merges the qemu-riscv port into the qemu-arm port. The only real differences between the two are the toolchains used to build the code, and the initialisation/startup framework. Everything else is pretty much the same, so this brings the following benefits: - less code duplication - less burden on maintenance - generalised qemu port, could in the future support other architectures A new board `VIRT_RV32` has been added to the qemu-arm port which is the existing RISC-V board from the qemu-riscv port. To build it: $ make BOARD=VIRT_RV32 repl To cleanly separate the code for the different architectures, startup code has been moved to ports/qemu-arm/mcu/<arch>/. Signed-off-by: Damien George <damien@micropython.org>
2024-08-28qemu-arm: Rework to provide a REPL and run tests via a pty serial port.Damien George
Currently, the qemu-arm (and qemu-riscv) port has two build modes: - a simple test that executes a Python string; and - a full test that uses tinytest to embed all tests within the firmware, then executes that and captures the output. This is very different to all the other ports. A difficulty with using tinytest is that with the large number of tests the firmware overflows its virtual flash size. It's also hard to run tests via .mpy files and with the native emitter. Being different to the other ports also means an extra burden on maintenance. This commit reworks the qemu-arm port so that it has a single build target that creates a standard firmware which has a REPL. When run under qemu-system-arm, the REPL acts like any other bare-metal port, complete with soft reset (use machine.reset() to turn it off and exit qemu-system-arm). This approach gives many benefits: - allows playing with a REPL without hardware; - allows running the test suite as it would on a bare-metal board, by making qemu-system-arm redirect the UART serial of the virtual device to a /dev/pts/xx file, and then running run-tests.py against that serial device; - skipping tests is now done via the logic in `run-tests.py` and no longer needs multiple places to define which tests to skip (`tools/tinytest-codegen.py`, `ports/qemu-arm/tests_profile.txt` and also `tests/run-tests.py`); - allows testing/using mpremote with the qemu-arm port. Eventually the qemu-riscv port would have a similar change. Prior to this commit the test results were: 743 tests ok. (121 skipped) With this commit the test results are: 753 tests performed (22673 individual testcases) 753 tests passed 138 tests skipped More tests are skipped because more are included in the run. But overall more tests pass. Signed-off-by: Damien George <damien@micropython.org>
2024-08-28github/workflows: Add CI to run tests against zephyr with qemu.Damien George
With this change, the zephyr port is tested against the standard test suite via the following scheme: - the zephyr port is built with the `qemu_cortex_m3` board and the `prj_minimal.conf` configuration - `qemu-system-arm` runs `zephyr.elf` - the zephyr console is redirected to a pts/pty - `tests/run-tests.py` is run in bare-metal mode against the pts/pty device This allows testing the zephyr port as though it were a physical board attached over a serial port. Signed-off-by: Damien George <damien@micropython.org>