Breaking changes
- The action now runs on the
node24runtime. GitHub-hosted runners are unaffected; self-hosted runners must be v2.327.1 or newer. - The
cflagsinput now applies only to themicropythonUnix port build, not tompy-cross. mpy-cross's fixed feature configuration fails to compile with many otherwise-valid MicroPython feature flags; its meaningful options (target architecture, emitter, optimization level) are runtime CLI flags and are unaffected.CFLAGS_EXTRAis still exported to all subsequent steps of the job. - The MicroPython repository is cloned to
os.homedir()/micropythoninstead of a hardcoded/home/runner/micropython. This is unchanged on GitHub-hosted runners; on self-hosted runners, use theMPY_DIRenvironment variable rather than a hardcoded path.
New features
- New outputs:
cache-hit('true'/'false') andsha(the resolved MicroPython commit SHA), useful for keying your own caches off the exact MicroPython version. - New
submodulesinput (defaulttrue): submodules are now initialized even on cache hits, soMPY_DIRworks for natmod-style builds on warm runs (previously these passed on the first run and failed on cached re-runs). Set tofalseto make cached runs ~30 seconds faster if you only need themicropython/mpy-crossbinaries. - Tag references are fetched with a fast shallow clone; branches and commit SHAs use a full clone so the built interpreter reports an accurate
git describe-based version string.
Fixes
- Git commands are invoked with argument arrays, preventing argument injection via the
repository/referenceinputs. - A cache-save race between concurrent jobs building the same configuration no longer fails an otherwise-successful build.
- Build parallelism comes from
os.cpus()instead ofnproc, for self-hosted portability.
Full Changelog: v2...v3.0.0