cibuildmp 0.4.1__tar.gz → 0.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/test-all-platforms.yml +21 -18
- cibuildmp-0.4.2/.github/workflows/test-upstream-natmod.yml +131 -0
- cibuildmp-0.4.2/.github/workflows/test-upstream-usermodule.yml +241 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/CHANGELOG.md +65 -1
- {cibuildmp-0.4.1/src/cibuildmp.egg-info → cibuildmp-0.4.2}/PKG-INFO +8 -7
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/README.md +7 -6
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/windows.Dockerfile +2 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/0000-TRACKER.md +26 -5
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/ACTIONS.md +2 -2
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0054-usermod-example-from-upstream-usercmodule.md +26 -3
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0055-natmod-example-from-upstream-natmod.md +59 -4
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0068-docker-dependabot-grouping-and-mipsel-ubuntu-26-04.md +9 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0069-upstream-usercmodule-narrow-ci-slice.md +80 -3
- cibuildmp-0.4.2/docs/records/0071-micropython-placeholder-in-user-c-modules.md +85 -0
- cibuildmp-0.4.2/docs/records/0072-natmod-micropython-placeholder-and-upstream-natmod-ci.md +180 -0
- cibuildmp-0.4.2/examples/natmod/cibuildmp.toml +62 -0
- cibuildmp-0.4.2/examples/usercmodule/cibuildmp.toml +60 -0
- cibuildmp-0.4.2/examples/usercmodule/micropython.cmake +36 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/natmod/__init__.py +18 -1
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/natmod/build.py +19 -6
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/orchestrate.py +16 -1
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/resources/pinned_docker_images.toml +1 -1
- {cibuildmp-0.4.1 → cibuildmp-0.4.2/src/cibuildmp.egg-info}/PKG-INFO +8 -7
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp.egg-info/SOURCES.txt +4 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp.egg-info/scm_file_list.json +4 -0
- cibuildmp-0.4.2/src/cibuildmp.egg-info/scm_version.json +8 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_build.py +27 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_cli.py +29 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_orchestrate.py +36 -0
- cibuildmp-0.4.1/.github/workflows/test-upstream-usermodule.yml +0 -168
- cibuildmp-0.4.1/examples/usercmodule/cibuildmp.toml +0 -16
- cibuildmp-0.4.1/examples/usercmodule/micropython.cmake +0 -36
- cibuildmp-0.4.1/src/cibuildmp.egg-info/scm_version.json +0 -8
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.dockerignore +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-natmod/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-usermod-armv7m/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-usermod-esp32/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-usermod-rp2040/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-usermod-unix/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-usermod-webassembly/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/build-usermod-windows/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/clone-micropython/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/actions/fetch-micropython/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/dependabot.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/build-examples.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/publish-docker-images.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/publish.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/test-platforms.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/tests.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.github/workflows/verify-docker-images.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/.gitignore +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/CLAUDE.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/CONTRIBUTING.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/LICENSE +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/action.yml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/ghcr_prune_scan.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/plan_test_matrix.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/publish_images.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/refresh_natmod_archs.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/refresh_usermod_boards.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/render_test_summary.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/bin/update_docker.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/cibuildmp.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/arm_embedded.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/esp_idf_base.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/manylinux_2_28_aarch64.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/manylinux_2_28_i686.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/manylinux_2_28_ppc64le.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/manylinux_2_28_s390x.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/manylinux_2_28_x86_64.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/manylinux_2_39_mipsel.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/natmod_host.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/ppc64le_linux.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/pypa-tracker.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/riscv_embedded.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/webassembly.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/xtensa_esp.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docker/xtensa_lx106.Dockerfile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/BACKLOG.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0001-natmod-first.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0002-delegate-compile-own-environment.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0003-toolchain-resolution-per-target.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0004-config-file-location.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0005-one-identifier-namespace.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0006-no-test-runners-phase1.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0007-usermod-vendors-mpbuild-board-db.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0008-tool-distribution-deferred.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0009-one-job-loop-fanout-opt-in.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0010-pinned-data-in-resources.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0011-one-repo-absorbs-micropython-native-ci.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0012-pyelftools-ar-own-deps.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0013-micropython-list-dedup-by-abi.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0014-mip-package-per-identifier.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0015-rv32imc-arch-flags-identifier.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0016-usermod-user-c-modules-dir-vs-cmake.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0017-usermod-frozen-manifest-merge.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0018-windows-provisioning-fourth-story.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0019-esp-idf-provisioning-heaviest.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0020-usermod-runner-selection-structural.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0021-usermod-execution-central-value.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0022-zephyr-third-selector-axis.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0023-usermod-identifier-scheme-config-output.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0024-unix-armhf-mipsel-cross-compiles.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0025-dockerfiles-bake-unix-cross-toolchains.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0026-one-docker-image-per-port.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0027-orchestrate-output-dir-and-exec-bit-fixes.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0028-container-per-port-migration-plan.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0029-github-actions-job-summary.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0030-container-approach-natmod-and-docker-vs-qemu.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0031-unix-musllinux-libc-axis.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0032-unix-docker-default-and-webassembly-wiring.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0033-cibuildmp-never-builds-docker-image-itself.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0034-m0-skeleton.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0035-m1-micropython-mpy-cross-provisioning.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0036-m2-toolchain-resolver.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0037-m3-the-build-itself.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0038-m5-adopt-in-three-repos.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0039-usermod-composite-actions-status.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0040-usermod-tests-deferred.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0041-docs-restructure.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0042-windows-docker-wiring-and-resolver-removal.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0043-unix-adopts-cibuildwheel-native-image-model.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0044-unix-native-images-landed.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0045-only-is-a-filter-not-a-forced-identifier.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0046-pin-staleness-checker.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0047-run-output-parity-with-cibuildwheel.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0048-build-skip-live-in-opposite-tables.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0049-no-matrix-generation-archs-vocabulary.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0050-natmod-is-docker-only.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0051-usermod-identifiers-have-no-version-axis.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0052-config-is-a-tree-not-a-selector-matrix.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0053-usermod-ports-without-a-build-driver.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0056-usermod-with-no-user-c-module.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0057-multiple-modules-per-build.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0058-image-groups-are-toolchains-not-ports.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0059-ghcr-untagged-cleanup-deletes-referenced-manifests.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0060-rp2-build-driver.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0061-usermod-build-drivers-split-per-port.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0062-test-platforms-per-port-orchestrator.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0063-keep-going-and-json-build-report.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0065-bucketed-test-matrix-planning.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0066-extra-cmake-args.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0067-user-c-modules-flat-shape-autodetect.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/records/0070-unix-collected-binary-missing-repaired-lib-sidecar.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/reference/design.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/reference/open-questions.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/docs/reference/vendored-images.md +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/cibuildmp.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/micropython.cmake +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/natmod/Makefile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/natmod/template.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/src/facade.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/src/template_core.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/src/template_core.h +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/usermod/manifest.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/usermod/micropython.mk +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/template/usermod/template_usermod.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/usercmodule/smoke_test.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/Makefile +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/NOTICE +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/cibuildmp.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/esp8266-rom.S +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/libc.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/runtime.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/wasm-rt-impl-tableops.inc +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/wasm-rt-impl.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/wasm-rt-impl.h +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/wasm-rt-mem-impl-helper.inc +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/wasm-rt-mem-impl.c +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/runtime/wasm-rt.h +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/examples/wasm2mpy/test/zig.wasm +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/pyproject.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/setup.cfg +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/__init__.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/__main__.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/cli.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/dockerrun.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/options.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/__init__.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/natmod/options.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/natmod/targets.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/__init__.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/boards.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_common.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_esp32.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_qemu.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_rp2.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_unix.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_webassembly.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/build_windows.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/espidf.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/manifests.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/options.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/portinfo.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/platforms/usermod/targets.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/report.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/resources/build-platforms.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/resources/natmod.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/resources/pinned_pypa_images.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/resources/usermod.toml +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/resources.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/selector.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/sources.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp/stepsummary.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp.egg-info/dependency_links.txt +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp.egg-info/entry_points.txt +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp.egg-info/requires.txt +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/src/cibuildmp.egg-info/top_level.txt +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/conftest.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_boards.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_cli_multi_family.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_espidf.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_manifests.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_options.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_options_cascade.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_overrides.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_plan_test_matrix.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_portinfo.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_render_test_summary.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_report.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_selector.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_sources.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_stepsummary.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_targets.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_common.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_esp32.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_qemu.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_rp2.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_unix.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_webassembly.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_build_windows.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_dockerrun.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_options.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/tests/test_usermod_targets.py +0 -0
- {cibuildmp-0.4.1 → cibuildmp-0.4.2}/uv.lock +0 -0
|
@@ -23,11 +23,16 @@ name: Test platforms
|
|
|
23
23
|
# first place -- not upload order, not sorted (docs/records/0065).
|
|
24
24
|
|
|
25
25
|
on:
|
|
26
|
-
pull_request:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
# No `pull_request` any more: the full real matrix (200+ identifiers,
|
|
27
|
+
# bucketed across up to 20 concurrent jobs) takes far too long to run on
|
|
28
|
+
# every PR for how rarely its answer actually changes -- `push`/`pull_request`
|
|
29
|
+
# CI already runs `tests.yml`'s own unit suite and `build-examples.yml`'s
|
|
30
|
+
# narrower matrix on every change; this file is for the full sweep,
|
|
31
|
+
# wanted only occasionally, not gating every PR's own turnaround time.
|
|
32
|
+
# Weekly by default -- change the cron below, or just run
|
|
33
|
+
# `workflow_dispatch` by hand whenever a real answer is wanted sooner.
|
|
34
|
+
schedule:
|
|
35
|
+
- cron: "0 3 * * 0"
|
|
31
36
|
workflow_dispatch:
|
|
32
37
|
inputs:
|
|
33
38
|
build:
|
|
@@ -50,15 +55,12 @@ concurrency:
|
|
|
50
55
|
|
|
51
56
|
jobs:
|
|
52
57
|
plan:
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
# this file's own
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
# header comment already flags as the real ceiling, for a change this
|
|
60
|
-
# matrix has nothing useful to say about. See docs/records/0068.
|
|
61
|
-
if: github.actor != 'dependabot[bot]'
|
|
58
|
+
# No `if: github.actor != 'dependabot[bot]'` guard here any more --
|
|
59
|
+
# record 0068 added it specifically for the `pull_request` trigger a
|
|
60
|
+
# Dependabot docker/dependabot.yml PR would otherwise fire this on;
|
|
61
|
+
# dropping that trigger entirely (this file's own header comment) makes
|
|
62
|
+
# the guard moot, not just redundant, since `schedule`/`workflow_dispatch`
|
|
63
|
+
# never runs as that actor in the first place.
|
|
62
64
|
runs-on: ubuntu-latest
|
|
63
65
|
outputs:
|
|
64
66
|
identifiers: ${{ steps.plan.outputs.identifiers }}
|
|
@@ -124,10 +126,11 @@ jobs:
|
|
|
124
126
|
# passed back through `build`'s own outputs.
|
|
125
127
|
aggregate-results:
|
|
126
128
|
needs: [plan, build]
|
|
127
|
-
# `always()
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
|
|
129
|
+
# `always()`: render a summary even if a bucket in `build` failed --
|
|
130
|
+
# `test-platforms.yml`'s own `--keep-going` (record 0063) means a real
|
|
131
|
+
# failure there still uploads a report, and this is what turns every
|
|
132
|
+
# bucket's own report into the one table worth looking at.
|
|
133
|
+
if: always()
|
|
131
134
|
runs-on: ubuntu-latest
|
|
132
135
|
steps:
|
|
133
136
|
- uses: actions/checkout@v7
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
name: Test upstream natmod
|
|
2
|
+
|
|
3
|
+
# Builds every one of MicroPython's own eleven `examples/natmod/*` modules
|
|
4
|
+
# through cibuildmp's real natmod path -- docs/records/0055 scoped why this
|
|
5
|
+
# fixture matters (it tests upstream's own natmod contract, not the one this
|
|
6
|
+
# project wrote for itself in `examples/template/natmod`) and found that
|
|
7
|
+
# contract does not fit unmodified; docs/records/0072 is the mechanism
|
|
8
|
+
# actually landed here and explains every choice below in full.
|
|
9
|
+
#
|
|
10
|
+
# build-features0: one job, deliberately building *two* arches for the same
|
|
11
|
+
# tag in a single invocation, not two separate single-arch jobs: [0055]'s own
|
|
12
|
+
# guard survey is entirely about what happens when cibuildmp builds several
|
|
13
|
+
# targets back to back in one checkout (a stale artifact, or an unscoped
|
|
14
|
+
# `build/`, silently carrying the *previous* target's binary into the next
|
|
15
|
+
# one's output) -- a job that only ever builds one target at a time would
|
|
16
|
+
# never actually exercise that risk. `verify_output()` (build.py, already
|
|
17
|
+
# part of every real build) is the check that would catch it: a wrong arch
|
|
18
|
+
# code in the .mpy header fails the build outright rather than shipping
|
|
19
|
+
# silently wrong -- but `examples/natmod/cibuildmp.toml`'s own
|
|
20
|
+
# `pre-build-command` (record 0072) removes the possibility structurally,
|
|
21
|
+
# for this same reason armv7emsp is a second *real* cross-compiled arch here
|
|
22
|
+
# and not just a second easy one: it shares this checkout and this same
|
|
23
|
+
# invocation with x64, the one thing a single-arch job can never test.
|
|
24
|
+
#
|
|
25
|
+
# build-upstream-natmod: the other ten modules, one `x64` build each (no
|
|
26
|
+
# arch-collision risk to re-prove per module -- that mechanism is
|
|
27
|
+
# `examples/natmod/cibuildmp.toml`'s own, verified once above, not a
|
|
28
|
+
# property of any one module's Makefile). `CIBMP_MODULE_DIR` overrides that
|
|
29
|
+
# file's own `features0` default per matrix entry -- `{micropython}` resolves
|
|
30
|
+
# the same way regardless of which layer supplied `module-dir` (record 0072).
|
|
31
|
+
# `btree` needs no `micropython-submodules` entry for its own
|
|
32
|
+
# `lib/berkeley-db-1.xx`: `sources.fetch_micropython()` prefers the release
|
|
33
|
+
# tarball, which already vendors every `lib/` submodule -- confirmed 2026-08-31
|
|
34
|
+
# against a real, tarball-fetched v1.29.0 checkout, on the bare host (no
|
|
35
|
+
# Docker in that session), building and `verify_output()`-checking all eleven
|
|
36
|
+
# modules for `x64` -- not assumed from [0055]'s own original, narrower
|
|
37
|
+
# "needs a submodule" citation (see docs/records/0072's own addendum).
|
|
38
|
+
#
|
|
39
|
+
# `examples/natmod/cibuildmp.toml` carries the whole mechanism otherwise --
|
|
40
|
+
# `make-target = "all"` (upstream's examples define no `dist` target at all)
|
|
41
|
+
# and its own `pre-build-command` clearing every `.mpy` plus the whole build
|
|
42
|
+
# tree before *every single* build. No job here sets either directly -- a
|
|
43
|
+
# bare `cibuildmp examples/natmod --build <identifier>` run, CI or local,
|
|
44
|
+
# resolves identically to what a job here does (module-dir aside, for the
|
|
45
|
+
# ten `CIBMP_MODULE_DIR`-overridden ones).
|
|
46
|
+
#
|
|
47
|
+
# No `docker/setup-qemu-action` needed anywhere here, unlike
|
|
48
|
+
# test-upstream-usermodule.yml's rp2/esp32/qemu legs: `dockerrun.platform_for()`
|
|
49
|
+
# resolves every non-`unix` port -- natmod included -- to a flat
|
|
50
|
+
# `linux/amd64`, confirmed directly against that function's own source, so
|
|
51
|
+
# every natmod image already runs native on a `ubuntu-latest` runner
|
|
52
|
+
# regardless of which arch's toolchain it carries.
|
|
53
|
+
#
|
|
54
|
+
# push: (no branches: filter), same reasoning build-examples.yml's own header
|
|
55
|
+
# already documents -- this needs to run on every push to a dev branch too.
|
|
56
|
+
|
|
57
|
+
on:
|
|
58
|
+
push:
|
|
59
|
+
pull_request:
|
|
60
|
+
paths-ignore:
|
|
61
|
+
- "**.md"
|
|
62
|
+
- "docs/**"
|
|
63
|
+
- "LICENSE"
|
|
64
|
+
workflow_dispatch:
|
|
65
|
+
|
|
66
|
+
concurrency:
|
|
67
|
+
group: test-upstream-natmod-${{ github.workflow }}-${{ github.ref }}
|
|
68
|
+
cancel-in-progress: true
|
|
69
|
+
|
|
70
|
+
env:
|
|
71
|
+
# Single source of truth for this job -- bump here, not by hand in the
|
|
72
|
+
# `build` line below, when this fixture moves to a newer tag. `mpy6.3`
|
|
73
|
+
# is that tag's own natmod ABI (`identifier_format = "mpy{mpy}-{tag}-
|
|
74
|
+
# {arch}"`, resources/build-platforms.toml), not an independent value --
|
|
75
|
+
# a tag bump that also changes ABI needs this updated too.
|
|
76
|
+
CIBMP_UPSTREAM_ABI_TAG: mpy6.3-v1.29.0
|
|
77
|
+
|
|
78
|
+
jobs:
|
|
79
|
+
# x64: a plain native arch, no cross-compiler at all (`images.x64 =
|
|
80
|
+
# "natmod_host"`) -- the cheapest possible leg.
|
|
81
|
+
#
|
|
82
|
+
# armv7emsp: a real cross-compiled arch (`arm-none-eabi-`, `images.
|
|
83
|
+
# armv7emsp = "arm_embedded"`) sharing this same checkout and this same
|
|
84
|
+
# `cibuildmp` invocation with x64 above -- the leg that actually exercises
|
|
85
|
+
# [0055]'s own finding, not just a second easy arch for breadth's sake.
|
|
86
|
+
build-features0:
|
|
87
|
+
runs-on: ubuntu-latest
|
|
88
|
+
env:
|
|
89
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@v7
|
|
92
|
+
|
|
93
|
+
- name: Build upstream examples/natmod/features0 (x64 + armv7emsp)
|
|
94
|
+
uses: ./
|
|
95
|
+
with:
|
|
96
|
+
package-dir: examples/natmod
|
|
97
|
+
build: "${{ env.CIBMP_UPSTREAM_ABI_TAG }}-x64 ${{ env.CIBMP_UPSTREAM_ABI_TAG }}-armv7emsp"
|
|
98
|
+
|
|
99
|
+
- name: List built artifacts
|
|
100
|
+
run: ls -laR examples/natmod/mpyhouse
|
|
101
|
+
|
|
102
|
+
build-upstream-natmod:
|
|
103
|
+
strategy:
|
|
104
|
+
fail-fast: false
|
|
105
|
+
matrix:
|
|
106
|
+
module:
|
|
107
|
+
- features1
|
|
108
|
+
- features2
|
|
109
|
+
- features3
|
|
110
|
+
- features4
|
|
111
|
+
- heapq
|
|
112
|
+
- random
|
|
113
|
+
- re
|
|
114
|
+
- deflate
|
|
115
|
+
- framebuf
|
|
116
|
+
- btree
|
|
117
|
+
runs-on: ubuntu-latest
|
|
118
|
+
env:
|
|
119
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
120
|
+
CIBMP_MODULE_DIR: "{micropython}/examples/natmod/${{ matrix.module }}"
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/checkout@v7
|
|
123
|
+
|
|
124
|
+
- name: Build upstream examples/natmod/${{ matrix.module }} (x64)
|
|
125
|
+
uses: ./
|
|
126
|
+
with:
|
|
127
|
+
package-dir: examples/natmod
|
|
128
|
+
build: "${{ env.CIBMP_UPSTREAM_ABI_TAG }}-x64"
|
|
129
|
+
|
|
130
|
+
- name: List built artifacts
|
|
131
|
+
run: ls -laR examples/natmod/mpyhouse
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
name: Test upstream usercmodule
|
|
2
|
+
|
|
3
|
+
# Builds MicroPython's own `examples/usercmodule/` (cexample, cppexample,
|
|
4
|
+
# subpackage) through cibuildmp's real usermod path -- docs/records/0054
|
|
5
|
+
# scoped why this fixture matters (it tests upstream's own module contract,
|
|
6
|
+
# not one this project wrote for itself); docs/records/0069 is the mechanism
|
|
7
|
+
# actually landed here and explains every choice below in full.
|
|
8
|
+
#
|
|
9
|
+
# Six jobs, one per port cibuildmp drives a usermod build for -- widened
|
|
10
|
+
# from the original narrow unix+rp2 slice ([0054]'s own "one Make port and
|
|
11
|
+
# one CMake port is enough to answer the three questions above") once that
|
|
12
|
+
# slice came back green, per [0054]'s own "widen only if it finds
|
|
13
|
+
# something." Still nowhere near build-examples.yml's much broader
|
|
14
|
+
# examples/template matrix: one representative identifier per port, not
|
|
15
|
+
# each port's own full arch/board matrix.
|
|
16
|
+
#
|
|
17
|
+
# No job here sets `CIBMP_USER_C_MODULES`/`CIBMP_EXTRA_MAKE_ARGS`/
|
|
18
|
+
# `CIBMP_EXTRA_CMAKE_ARGS`, and none of them ever resolves the pinned
|
|
19
|
+
# checkout itself. Both used to be true: every job called
|
|
20
|
+
# `sources.fetch_micropython()` directly, in its own pre-fetch step, then
|
|
21
|
+
# exported the real checkout path by hand -- necessary back when this
|
|
22
|
+
# project had no way to name "a path inside whatever checkout cibuildmp
|
|
23
|
+
# itself is about to fetch" from outside cibuildmp, and no way to say "this
|
|
24
|
+
# one identifier needs this one extra flag" from inside a config file
|
|
25
|
+
# meant to be shared by all six. `examples/usercmodule/cibuildmp.toml` now
|
|
26
|
+
# carries all of it -- no `user-c-modules =` at all any more, for any
|
|
27
|
+
# port: the built-in "." default is already right on both sides once
|
|
28
|
+
# each side has its own real entry point (`micropython.cmake` for the two
|
|
29
|
+
# CMake ports, `{cexample,cppexample,subpackage}/micropython.mk` for the
|
|
30
|
+
# four Make ports -- see that toml's own header comment), plus
|
|
31
|
+
# `[override."*-wasm32"]`'s own `extra-make-args` -- so a bare
|
|
32
|
+
# `cibuildmp examples/usercmodule --build <identifier>` run, CI or local,
|
|
33
|
+
# resolves identically to what a job here does. `build` stays out of that
|
|
34
|
+
# file on purpose (see its own header comment): each job below still wants
|
|
35
|
+
# exactly one identifier per push, not this fixture's full six-port sweep,
|
|
36
|
+
# and that is the one thing a shared config file cannot express per-job.
|
|
37
|
+
#
|
|
38
|
+
# An even leaner shape was tried before any of this and reverted: pin
|
|
39
|
+
# `CIBMP_CACHE_PATH` to a fixed, known directory so the checkout's
|
|
40
|
+
# eventual path becomes computable without fetching it at all. That broke
|
|
41
|
+
# the workflow file outright, twice, for a GitHub Actions job-level-`env:`
|
|
42
|
+
# scoping rule this session could not conclusively pin down live -- see
|
|
43
|
+
# docs/records/0069 for the full account, kept for whoever revisits it
|
|
44
|
+
# rather than guessed away.
|
|
45
|
+
#
|
|
46
|
+
# push: (no branches: filter), same reasoning build-examples.yml's own header
|
|
47
|
+
# already documents -- this needs to run on every push to a dev branch too.
|
|
48
|
+
|
|
49
|
+
on:
|
|
50
|
+
push:
|
|
51
|
+
pull_request:
|
|
52
|
+
paths-ignore:
|
|
53
|
+
- "**.md"
|
|
54
|
+
- "docs/**"
|
|
55
|
+
- "LICENSE"
|
|
56
|
+
workflow_dispatch:
|
|
57
|
+
|
|
58
|
+
concurrency:
|
|
59
|
+
group: test-upstream-usermodule-${{ github.workflow }}-${{ github.ref }}
|
|
60
|
+
cancel-in-progress: true
|
|
61
|
+
|
|
62
|
+
env:
|
|
63
|
+
# Single source of truth for every job below -- bump here, not six
|
|
64
|
+
# times, when this fixture moves to a newer tag.
|
|
65
|
+
CIBMP_UPSTREAM_TAG: v1.29.0
|
|
66
|
+
|
|
67
|
+
jobs:
|
|
68
|
+
# ── unix: the Make side ─────────────────────────────────────────────
|
|
69
|
+
#
|
|
70
|
+
# py/py.mk's own `<USER_C_MODULES>/*/micropython.mk` glob finds
|
|
71
|
+
# `examples/usercmodule/{cexample,cppexample,subpackage}/micropython.mk`
|
|
72
|
+
# -- this fixture's own thin wrappers, each `include`ing upstream's real
|
|
73
|
+
# file via `$(TOP)` (see `cexample/micropython.mk`'s own header comment)
|
|
74
|
+
# -- with `user-c-modules` at its built-in "." default, no override
|
|
75
|
+
# needed. Never vendored (0054): the real content still comes from the
|
|
76
|
+
# pinned checkout, only three one-line `include` shims live in this repo.
|
|
77
|
+
build-unix:
|
|
78
|
+
runs-on: ubuntu-latest
|
|
79
|
+
env:
|
|
80
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
81
|
+
steps:
|
|
82
|
+
- uses: actions/checkout@v7
|
|
83
|
+
|
|
84
|
+
- name: Build upstream examples/usercmodule (unix, native)
|
|
85
|
+
uses: ./
|
|
86
|
+
with:
|
|
87
|
+
package-dir: examples/usercmodule
|
|
88
|
+
build: ${{ env.CIBMP_UPSTREAM_TAG }}-manylinux_2_28_x86_64
|
|
89
|
+
|
|
90
|
+
- name: List built artifacts
|
|
91
|
+
run: ls -laR examples/usercmodule/mpyhouse
|
|
92
|
+
|
|
93
|
+
# A linked binary is not the same claim as one whose modules actually
|
|
94
|
+
# run -- unix is the one port here whose own output this runner can
|
|
95
|
+
# simply execute (a real manylinux_2_28 binary runs unmodified on a
|
|
96
|
+
# newer-glibc host, the whole point of the manylinux floor), unlike
|
|
97
|
+
# rp2's own firmware.uf2, which needs real hardware. See
|
|
98
|
+
# smoke_test.py's own header for what it actually exercises.
|
|
99
|
+
- name: "Smoke test (unix): run the built binary against smoke_test.py"
|
|
100
|
+
run: |
|
|
101
|
+
set -euo pipefail
|
|
102
|
+
identifier="${CIBMP_UPSTREAM_TAG}-manylinux_2_28_x86_64"
|
|
103
|
+
bin="examples/usercmodule/mpyhouse/${identifier}/micropython-${identifier}"
|
|
104
|
+
"$bin" examples/usercmodule/smoke_test.py
|
|
105
|
+
|
|
106
|
+
# ── rp2: the CMake side ──────────────────────────────────────────────
|
|
107
|
+
#
|
|
108
|
+
# Chosen over esp32 purely on cost -- usermod/build_rp2.py's own docstring:
|
|
109
|
+
# the Pico SDK arrives as `lib/` submodules of the MicroPython checkout
|
|
110
|
+
# itself, no separate host-side toolchain resolver the way esp32's
|
|
111
|
+
# ESP-IDF needs. Nothing here is rp2-specific; widening to esp32/windows/
|
|
112
|
+
# webassembly/qemu is exactly [0054]'s own "widen only if it finds
|
|
113
|
+
# something" (docs/records/0069).
|
|
114
|
+
#
|
|
115
|
+
# This is also the leg that actually answers [0054]'s biggest open
|
|
116
|
+
# question for one real toolchain: whether cppexample's `-lstdc++` is
|
|
117
|
+
# satisfiable on a bare-metal cross target. Deliberately not skipped --
|
|
118
|
+
# a red leg here is a real finding to record, not a bug in this workflow.
|
|
119
|
+
#
|
|
120
|
+
# examples/usercmodule/micropython.cmake resolves the pinned checkout
|
|
121
|
+
# itself, via MICROPY_DIR -- a CMake variable every CMake port already
|
|
122
|
+
# sets before it ever include()s a user module (rp2/CMakeLists.txt's own
|
|
123
|
+
# `get_filename_component(MICROPY_DIR "../.." ABSOLUTE)`, well before its
|
|
124
|
+
# own `include(${MICROPY_DIR}/py/usermod.cmake)`) -- with `user-c-modules`
|
|
125
|
+
# at its built-in "." default, same as every other port here now.
|
|
126
|
+
build-rp2:
|
|
127
|
+
runs-on: ubuntu-latest
|
|
128
|
+
permissions:
|
|
129
|
+
contents: read
|
|
130
|
+
env:
|
|
131
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
132
|
+
steps:
|
|
133
|
+
- uses: actions/checkout@v7
|
|
134
|
+
- uses: docker/setup-qemu-action@v4
|
|
135
|
+
|
|
136
|
+
- name: Build upstream examples/usercmodule (rp2)
|
|
137
|
+
uses: ./
|
|
138
|
+
with:
|
|
139
|
+
package-dir: examples/usercmodule
|
|
140
|
+
build: ${{ env.CIBMP_UPSTREAM_TAG }}-rp2-RPI_PICO
|
|
141
|
+
|
|
142
|
+
- name: List built artifacts
|
|
143
|
+
run: ls -laR examples/usercmodule/mpyhouse
|
|
144
|
+
|
|
145
|
+
# ── esp32: the second CMake port, and the second bare-metal toolchain ──
|
|
146
|
+
#
|
|
147
|
+
# [0054]'s own list of unanswered families after [0069]: esp32 is the
|
|
148
|
+
# ESP-IDF one -- a cmake-driven port like rp2, but a materially different
|
|
149
|
+
# toolchain (Xtensa/RISC-V via idf.py, not arm-none-eabi via the Pico
|
|
150
|
+
# SDK). Fully containerized since [0028] (no host-side ESP-IDF resolver
|
|
151
|
+
# left).
|
|
152
|
+
#
|
|
153
|
+
# Same MICROPY_DIR mechanism as build-rp2 above: MICROPY_DIR is set at
|
|
154
|
+
# the very top of ports/esp32/main/CMakeLists.txt
|
|
155
|
+
# (`if(NOT MICROPY_DIR) get_filename_component(...)`), well before it --
|
|
156
|
+
# via ports/esp32/CMakeLists.txt -- reaches `include(${MICROPY_DIR}/py/
|
|
157
|
+
# usermod.cmake)`.
|
|
158
|
+
build-esp32:
|
|
159
|
+
runs-on: ubuntu-latest
|
|
160
|
+
permissions:
|
|
161
|
+
contents: read
|
|
162
|
+
env:
|
|
163
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
164
|
+
steps:
|
|
165
|
+
- uses: actions/checkout@v7
|
|
166
|
+
- uses: docker/setup-qemu-action@v4
|
|
167
|
+
|
|
168
|
+
- name: Build upstream examples/usercmodule (esp32)
|
|
169
|
+
uses: ./
|
|
170
|
+
with:
|
|
171
|
+
package-dir: examples/usercmodule
|
|
172
|
+
build: ${{ env.CIBMP_UPSTREAM_TAG }}-esp32-ESP32_GENERIC
|
|
173
|
+
|
|
174
|
+
- name: List built artifacts
|
|
175
|
+
run: ls -laR examples/usercmodule/mpyhouse
|
|
176
|
+
|
|
177
|
+
# ── windows, webassembly, qemu: the remaining three Make ports ──────────
|
|
178
|
+
#
|
|
179
|
+
# Same mechanism as build-unix above (the same three wrapper files,
|
|
180
|
+
# already discovered by py.mk's own glob), one representative identifier
|
|
181
|
+
# per port rather than each port's own full arch matrix -- [0054]'s own
|
|
182
|
+
# "widen only if it finds something", not a cost-blind repeat of
|
|
183
|
+
# build-examples.yml's broader coverage. No smoke test for any of the
|
|
184
|
+
# three: none of their outputs (a .exe, a .wasm, a qemu ELF) runs
|
|
185
|
+
# directly on this runner the way unix's manylinux binary does (record
|
|
186
|
+
# 0069's own reasoning for why rp2 has none either).
|
|
187
|
+
build-windows:
|
|
188
|
+
runs-on: ubuntu-latest
|
|
189
|
+
env:
|
|
190
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
191
|
+
steps:
|
|
192
|
+
- uses: actions/checkout@v7
|
|
193
|
+
|
|
194
|
+
- name: Build upstream examples/usercmodule (windows)
|
|
195
|
+
uses: ./
|
|
196
|
+
with:
|
|
197
|
+
package-dir: examples/usercmodule
|
|
198
|
+
build: ${{ env.CIBMP_UPSTREAM_TAG }}-win_amd64
|
|
199
|
+
|
|
200
|
+
- name: List built artifacts
|
|
201
|
+
run: ls -laR examples/usercmodule/mpyhouse
|
|
202
|
+
|
|
203
|
+
# `examples/usercmodule/cibuildmp.toml`'s own `[override."*-wasm32"]`
|
|
204
|
+
# carries this identifier's own `extra-make-args` (CXX=em++ plus the
|
|
205
|
+
# CXXFLAGS_MOD fix for two real, separate upstream ports/webassembly/
|
|
206
|
+
# Makefile bugs -- see that file's own comment for both). Nothing
|
|
207
|
+
# webassembly-specific is set here any more.
|
|
208
|
+
build-webassembly:
|
|
209
|
+
runs-on: ubuntu-latest
|
|
210
|
+
env:
|
|
211
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
212
|
+
steps:
|
|
213
|
+
- uses: actions/checkout@v7
|
|
214
|
+
|
|
215
|
+
- name: Build upstream examples/usercmodule (webassembly)
|
|
216
|
+
uses: ./
|
|
217
|
+
with:
|
|
218
|
+
package-dir: examples/usercmodule
|
|
219
|
+
build: ${{ env.CIBMP_UPSTREAM_TAG }}-wasm32
|
|
220
|
+
|
|
221
|
+
- name: List built artifacts
|
|
222
|
+
run: ls -laR examples/usercmodule/mpyhouse
|
|
223
|
+
|
|
224
|
+
build-qemu:
|
|
225
|
+
runs-on: ubuntu-latest
|
|
226
|
+
permissions:
|
|
227
|
+
contents: read
|
|
228
|
+
env:
|
|
229
|
+
CIBMP_VERSION: 0.0.0-ci
|
|
230
|
+
steps:
|
|
231
|
+
- uses: actions/checkout@v7
|
|
232
|
+
- uses: docker/setup-qemu-action@v4
|
|
233
|
+
|
|
234
|
+
- name: Build upstream examples/usercmodule (qemu)
|
|
235
|
+
uses: ./
|
|
236
|
+
with:
|
|
237
|
+
package-dir: examples/usercmodule
|
|
238
|
+
build: ${{ env.CIBMP_UPSTREAM_TAG }}-qemu-MPS2_AN385
|
|
239
|
+
|
|
240
|
+
- name: List built artifacts
|
|
241
|
+
run: ls -laR examples/usercmodule/mpyhouse
|
|
@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.2] - 2026-08-31
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`{micropython}` — a placeholder in `user-c-modules` for a path inside the pinned
|
|
15
|
+
MicroPython checkout**, substituted with the real, already-fetched `mpy_dir` before any
|
|
16
|
+
Docker/mount step, uniformly for every usermod port. Closes the gap [0069] named and
|
|
17
|
+
deliberately left open ("no `{checkout}`-style template today"). Record 0071.
|
|
18
|
+
- **The same `{micropython}` placeholder, and a real upstream-`examples/natmod` CI slice
|
|
19
|
+
covering all eleven upstream modules, for natmod.** `module-dir` can now name a path
|
|
20
|
+
inside the pinned checkout directly (`{micropython}/examples/natmod/<module>`), and
|
|
21
|
+
`collect_output()` gained a fallback for `py/dynruntime.mk`'s own `all` target, which —
|
|
22
|
+
unlike this project's own `dist` convention — leaves the merged `.mpy` sitting in
|
|
23
|
+
module-dir itself rather than under `build/<arch>*/`. `test-upstream-natmod.yml` builds
|
|
24
|
+
`features0` for two real arches (`x64`, `armv7emsp`) in one invocation — the multi-target
|
|
25
|
+
collision scenario record 0055's own guard survey was about — plus the other ten modules
|
|
26
|
+
(`features1`-`4`, `btree`, `deflate`, `framebuf`, `heapq`, `random`, `re`) each for `x64`.
|
|
27
|
+
Closes record 0055: neither of the two risks its own survey flagged (`btree`'s git
|
|
28
|
+
submodule, an rv32imc arch-flags collision) turned out to be a real blocker. Record 0072.
|
|
29
|
+
- **The `[0054]`/`[0069]` upstream-`examples/usercmodule` fixture now covers all six usermod
|
|
30
|
+
ports**, not just `unix`/`rp2`: `esp32`, `windows`, `webassembly` and `qemu` all build
|
|
31
|
+
`cppexample`/`cexample`/`subpackage` in CI now too. `examples/usercmodule/cibuildmp.toml`
|
|
32
|
+
carries the whole thing — a `[override."*-manylinux* *-win* *-qemu-* *-wasm32"]` pointing
|
|
33
|
+
the four Make ports' `user-c-modules` straight at `{micropython}/examples/usercmodule`
|
|
34
|
+
(no vendoring, no wrapper file), the two CMake ports (`rp2`/`esp32`) reading `MICROPY_DIR`
|
|
35
|
+
directly inside `examples/usercmodule/micropython.cmake`. No job in
|
|
36
|
+
`test-upstream-usermodule.yml` resolves the checkout itself or sets
|
|
37
|
+
`CIBMP_USER_C_MODULES`/`CIBMP_EXTRA_MAKE_ARGS`/`CIBMP_EXTRA_CMAKE_ARGS` any more — a bare
|
|
38
|
+
`cibuildmp examples/usercmodule --build <identifier>` run, CI or local, now resolves
|
|
39
|
+
identically to what a job here does.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- **`test-all-platforms.yml` no longer runs on `pull_request`** — the full real matrix
|
|
44
|
+
(200+ identifiers, bucketed across up to 20 concurrent jobs) took too long to gate every
|
|
45
|
+
PR's own turnaround time for how rarely its answer actually changes. Now `schedule`
|
|
46
|
+
(weekly) plus `workflow_dispatch` for an on-demand run; `push`/`pull_request` CI still
|
|
47
|
+
covers every change through `tests.yml`'s unit suite and `build-examples.yml`'s narrower
|
|
48
|
+
matrix. The `if: github.actor != 'dependabot[bot]'` guard record 0068 added specifically
|
|
49
|
+
for the now-gone `pull_request` trigger came out too, moot rather than just redundant.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- **`docker/windows.Dockerfile` installed only the C mingw-w64 cross-compilers
|
|
54
|
+
(`gcc-mingw-w64-*`), never the C++ ones (`g++-mingw-w64-*`)** — mingw-w64 fully supports
|
|
55
|
+
C++, this was a real gap in the image, not a port limitation. A C++ user module on
|
|
56
|
+
`windows` failed with "cannot execute `cc1plus`" (the C++ compiler backend didn't exist
|
|
57
|
+
at all) until this fixed it; republished, repinned in `pinned_docker_images.toml`.
|
|
58
|
+
- **`ports/webassembly/Makefile` never overrides `CXX` from its own default (`g++`, the
|
|
59
|
+
host's real compiler), only `CC`/`LD` (to `emcc`)** — a C++ user module's real `.cpp`
|
|
60
|
+
compile was silently running through the wrong compiler entirely (confirmed live: the
|
|
61
|
+
failure's own `cc1plus` and "unrecognized command-line option" for a clang-only flag name
|
|
62
|
+
are exactly what a host `g++` invocation looks like, not `emcc`'s). Worked around through
|
|
63
|
+
`extra-make-args` (`CXX=em++`, emsdk's own C++ driver, already baked into the image) —
|
|
64
|
+
an upstream Makefile bug this project can reach without vendoring upstream's own file.
|
|
65
|
+
- **Upstream's own `ports/webassembly/mpconfigport.h` unconditionally `#define _GNU_SOURCE`,
|
|
66
|
+
conflicting with emcc/clang's own built-in definition in C++ mode** (`-std=c++11`),
|
|
67
|
+
tripping `-Werror -Wmacro-redefined` once the `CXX` fix above let the right compiler run
|
|
68
|
+
at all. Reached through `py/mkrules.mk`'s own `CXXFLAGS_MOD` hook ("Add default C++
|
|
69
|
+
compiler flags based on CFLAGS. For use with C++ user modules" — that comment's own
|
|
70
|
+
words), via `extra-make-args`, with nothing to clobber (unlike [0066]'s own
|
|
71
|
+
`CMAKE_ARGS`/`IDFPY_FLAGS` trap): nothing in the tree ever assigns `CXXFLAGS_MOD` first.
|
|
72
|
+
|
|
10
73
|
## [0.4.1] - 2026-08-30
|
|
11
74
|
|
|
12
75
|
### Added
|
|
@@ -640,7 +703,8 @@ ballistics-lab/micropython-native-ci, but both tags exist here too, so every
|
|
|
640
703
|
link resolves inside this repository -- the version line continues rather
|
|
641
704
|
than restarting (see the 0.3.0a1 entry). -->
|
|
642
705
|
|
|
643
|
-
[Unreleased]: https://github.com/ballistics-lab/cibuildmp/compare/v0.4.
|
|
706
|
+
[Unreleased]: https://github.com/ballistics-lab/cibuildmp/compare/v0.4.2...HEAD
|
|
707
|
+
[0.4.2]: https://github.com/ballistics-lab/cibuildmp/compare/v0.4.1...v0.4.2
|
|
644
708
|
[0.4.1]: https://github.com/ballistics-lab/cibuildmp/compare/v0.4.0...v0.4.1
|
|
645
709
|
[0.4.0]: https://github.com/ballistics-lab/cibuildmp/compare/v0.3.0...v0.4.0
|
|
646
710
|
[0.3.0]: https://github.com/ballistics-lab/cibuildmp/compare/v0.3.0a1...v0.3.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cibuildmp
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Build MicroPython native C extensions for every target, from one config — cibuildwheel for MicroPython
|
|
5
5
|
Author-email: o-murphy <thehelixpg@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -110,7 +110,7 @@ On CI, use the action instead of installing the CLI yourself — it already
|
|
|
110
110
|
runs on a bare runner with the runner's own Docker daemon reachable:
|
|
111
111
|
|
|
112
112
|
```yaml
|
|
113
|
-
- uses: ballistics-lab/cibuildmp@v0.4.
|
|
113
|
+
- uses: ballistics-lab/cibuildmp@v0.4.1
|
|
114
114
|
with:
|
|
115
115
|
build: "mpy6.3-* v1.29.0-manylinux_2_28_x86_64"
|
|
116
116
|
```
|
|
@@ -324,8 +324,9 @@ executable bit intact (`unix`: one native image per arch/libc;
|
|
|
324
324
|
`v1.29.0-qemu-MPS2_AN385` runs in its own matrix leg rather than sharing a
|
|
325
325
|
job with already-proven cells, since it was the first build ever run
|
|
326
326
|
through that path). `esp32` and `rp2` are not in that smoke test, but not
|
|
327
|
-
because either is unproven -- both are exercised far more broadly, on
|
|
328
|
-
|
|
327
|
+
because either is unproven -- both are exercised far more broadly, on a
|
|
328
|
+
weekly schedule (or manual dispatch any time sooner), through
|
|
329
|
+
`test-all-platforms.yml`'s own real matrix
|
|
329
330
|
(`bin/plan_test_matrix.py`, record 0065): 83 real `esp32` identifiers and
|
|
330
331
|
74 real `rp2` ones, every board/tag row `resources/build-platforms.toml`
|
|
331
332
|
carries, not a spot check. **Both build through the exact same `cibuildmp`
|
|
@@ -336,7 +337,7 @@ provisioned onto the bare host; record 0028 moved it fully into
|
|
|
336
337
|
depends on that composite action's own toolchain-install path. `rp2`'s
|
|
337
338
|
own driver landed the next day (record 0060), live-verified against
|
|
338
339
|
`examples/template` first and now carrying its own share of every
|
|
339
|
-
`test-all-platforms.yml` run since.
|
|
340
|
+
scheduled `test-all-platforms.yml` run since.
|
|
340
341
|
|
|
341
342
|
<table>
|
|
342
343
|
<thead>
|
|
@@ -540,7 +541,7 @@ own driver landed the next day (record 0060), live-verified against
|
|
|
540
541
|
|
|
541
542
|
[^cross]: The one target that still cross-compiles: pypa publishes no mipsel image and there's no Docker official image for 32-bit mipsel, so there's nothing to be native to.
|
|
542
543
|
|
|
543
|
-
[^emulatedci]: `ppc64le`/`s390x`/`riscv64`, both libcs — native to no runner GitHub offers, so still QEMU-emulated, but no longer untested: `test-all-platforms.yml`'s own `unix-emulated` entry gives all six a real `test-emulated` CI leg on
|
|
544
|
+
[^emulatedci]: `ppc64le`/`s390x`/`riscv64`, both libcs — native to no runner GitHub offers, so still QEMU-emulated, but no longer untested: `test-all-platforms.yml`'s own `unix-emulated` entry gives all six a real `test-emulated` CI leg on its weekly schedule (or manual dispatch) now (nine of the twelve (cell, tag) pairs green; the other three are the two ⚠️ rows below). Point `CIBMP_UNIX_<TARGET>_DOCKER_IMAGE` at a locally-built image, or an emulated one, to work on one of these locally. Record 0044's own 2026-08-29 addendum.
|
|
544
545
|
|
|
545
546
|
[^s390xclobbered]: `v1.28.0` only — `v1.29.0` of the identical cell is the ✅ above it. `mpy-cross`'s own `main.c` fails a real GCC `-Werror=clobbered` diagnostic specific to s390x's own register allocation around a `longjmp` call site (`parse_integer()`'s locals); `v1.29.0`'s `main.c` does not trip it. Skipped by exact identifier (`v1.28.0-manylinux_2_28_s390x`) in `test-all-platforms.yml` until fixed — not a QEMU/emulation problem, a real compile-time diagnostic. Record 0044's own 2026-08-29 addendum.
|
|
546
547
|
|
|
@@ -615,7 +616,7 @@ drivers are wired into the CLI too (see [Target support](#target-support)
|
|
|
615
616
|
above), covering every port with a real driver, not just three. All three
|
|
616
617
|
consuming repos have repinned and are fully migrated off every
|
|
617
618
|
`build-usermod-*`/`fetch-micropython` composite action onto the unified
|
|
618
|
-
CLI/action, `cibuildmp@v0.4.
|
|
619
|
+
CLI/action, `cibuildmp@v0.4.1`, CI green on each repo's current `main` (`a7p`
|
|
619
620
|
and `micropython-wasm3` each keep their own genuine
|
|
620
621
|
cross-compile-with-no-native-host cell, `unix-mipsel`, on the old composite
|
|
621
622
|
action deliberately). See the tracker's own [0038] row for current status
|
|
@@ -78,7 +78,7 @@ On CI, use the action instead of installing the CLI yourself — it already
|
|
|
78
78
|
runs on a bare runner with the runner's own Docker daemon reachable:
|
|
79
79
|
|
|
80
80
|
```yaml
|
|
81
|
-
- uses: ballistics-lab/cibuildmp@v0.4.
|
|
81
|
+
- uses: ballistics-lab/cibuildmp@v0.4.1
|
|
82
82
|
with:
|
|
83
83
|
build: "mpy6.3-* v1.29.0-manylinux_2_28_x86_64"
|
|
84
84
|
```
|
|
@@ -292,8 +292,9 @@ executable bit intact (`unix`: one native image per arch/libc;
|
|
|
292
292
|
`v1.29.0-qemu-MPS2_AN385` runs in its own matrix leg rather than sharing a
|
|
293
293
|
job with already-proven cells, since it was the first build ever run
|
|
294
294
|
through that path). `esp32` and `rp2` are not in that smoke test, but not
|
|
295
|
-
because either is unproven -- both are exercised far more broadly, on
|
|
296
|
-
|
|
295
|
+
because either is unproven -- both are exercised far more broadly, on a
|
|
296
|
+
weekly schedule (or manual dispatch any time sooner), through
|
|
297
|
+
`test-all-platforms.yml`'s own real matrix
|
|
297
298
|
(`bin/plan_test_matrix.py`, record 0065): 83 real `esp32` identifiers and
|
|
298
299
|
74 real `rp2` ones, every board/tag row `resources/build-platforms.toml`
|
|
299
300
|
carries, not a spot check. **Both build through the exact same `cibuildmp`
|
|
@@ -304,7 +305,7 @@ provisioned onto the bare host; record 0028 moved it fully into
|
|
|
304
305
|
depends on that composite action's own toolchain-install path. `rp2`'s
|
|
305
306
|
own driver landed the next day (record 0060), live-verified against
|
|
306
307
|
`examples/template` first and now carrying its own share of every
|
|
307
|
-
`test-all-platforms.yml` run since.
|
|
308
|
+
scheduled `test-all-platforms.yml` run since.
|
|
308
309
|
|
|
309
310
|
<table>
|
|
310
311
|
<thead>
|
|
@@ -508,7 +509,7 @@ own driver landed the next day (record 0060), live-verified against
|
|
|
508
509
|
|
|
509
510
|
[^cross]: The one target that still cross-compiles: pypa publishes no mipsel image and there's no Docker official image for 32-bit mipsel, so there's nothing to be native to.
|
|
510
511
|
|
|
511
|
-
[^emulatedci]: `ppc64le`/`s390x`/`riscv64`, both libcs — native to no runner GitHub offers, so still QEMU-emulated, but no longer untested: `test-all-platforms.yml`'s own `unix-emulated` entry gives all six a real `test-emulated` CI leg on
|
|
512
|
+
[^emulatedci]: `ppc64le`/`s390x`/`riscv64`, both libcs — native to no runner GitHub offers, so still QEMU-emulated, but no longer untested: `test-all-platforms.yml`'s own `unix-emulated` entry gives all six a real `test-emulated` CI leg on its weekly schedule (or manual dispatch) now (nine of the twelve (cell, tag) pairs green; the other three are the two ⚠️ rows below). Point `CIBMP_UNIX_<TARGET>_DOCKER_IMAGE` at a locally-built image, or an emulated one, to work on one of these locally. Record 0044's own 2026-08-29 addendum.
|
|
512
513
|
|
|
513
514
|
[^s390xclobbered]: `v1.28.0` only — `v1.29.0` of the identical cell is the ✅ above it. `mpy-cross`'s own `main.c` fails a real GCC `-Werror=clobbered` diagnostic specific to s390x's own register allocation around a `longjmp` call site (`parse_integer()`'s locals); `v1.29.0`'s `main.c` does not trip it. Skipped by exact identifier (`v1.28.0-manylinux_2_28_s390x`) in `test-all-platforms.yml` until fixed — not a QEMU/emulation problem, a real compile-time diagnostic. Record 0044's own 2026-08-29 addendum.
|
|
514
515
|
|
|
@@ -583,7 +584,7 @@ drivers are wired into the CLI too (see [Target support](#target-support)
|
|
|
583
584
|
above), covering every port with a real driver, not just three. All three
|
|
584
585
|
consuming repos have repinned and are fully migrated off every
|
|
585
586
|
`build-usermod-*`/`fetch-micropython` composite action onto the unified
|
|
586
|
-
CLI/action, `cibuildmp@v0.4.
|
|
587
|
+
CLI/action, `cibuildmp@v0.4.1`, CI green on each repo's current `main` (`a7p`
|
|
587
588
|
and `micropython-wasm3` each keep their own genuine
|
|
588
589
|
cross-compile-with-no-native-host cell, `unix-mipsel`, on the old composite
|
|
589
590
|
action deliberately). See the tracker's own [0038] row for current status
|
|
@@ -88,6 +88,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
88
88
|
xz-utils \
|
|
89
89
|
gcc-mingw-w64-x86-64 \
|
|
90
90
|
gcc-mingw-w64-i686 \
|
|
91
|
+
g++-mingw-w64-x86-64 \
|
|
92
|
+
g++-mingw-w64-i686 \
|
|
91
93
|
&& rm -rf /var/lib/apt/lists/*
|
|
92
94
|
|
|
93
95
|
# Pinned to resources/usermod.toml's own [llvm-mingw] table (version
|