cibuildmp 0.7.2__tar.gz → 0.7.4__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.7.2 → cibuildmp-0.7.4}/.github/workflows/coverage.yml +1 -1
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/pin-staleness.yml +1 -1
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/pre-commit.yml +1 -1
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/probe-overlay.yml +1 -1
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/publish.yml +1 -1
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/CHANGELOG.md +46 -1
- {cibuildmp-0.7.2/src/cibuildmp.egg-info → cibuildmp-0.7.4}/PKG-INFO +25 -25
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/README.md +24 -24
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/action.yml +1 -1
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/update_toolchains.py +64 -30
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/pypa-tracker.Dockerfile +9 -9
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/webassembly.Dockerfile +24 -14
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/windows.Dockerfile +15 -8
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/ACTIONS.md +4 -4
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0046-pin-staleness-checker.md +37 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0096-arm-riscv-embedded-collapse-into-embedded-base.md +10 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/resources/pinned_docker_images.toml +16 -16
- cibuildmp-0.7.4/src/cibuildmp/resources/pinned_pypa_images.toml +81 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4/src/cibuildmp.egg-info}/PKG-INFO +25 -25
- cibuildmp-0.7.4/src/cibuildmp.egg-info/scm_version.json +8 -0
- cibuildmp-0.7.2/src/cibuildmp/resources/pinned_pypa_images.toml +0 -81
- cibuildmp-0.7.2/src/cibuildmp.egg-info/scm_version.json +0 -8
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.claude/settings.json +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.claude/skills/docker-local/SKILL.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.dockerignore +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-natmod/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-usermod-armv7m/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-usermod-esp32/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-usermod-rp2040/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-usermod-unix/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-usermod-webassembly/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/build-usermod-windows/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/clone-micropython/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/fetch-micropython/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/actions/run-with-wine/action.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/dependabot.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/build-examples.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/publish-docker-images.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/test-all-platforms.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/test-platforms.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/test-upstream-natmod.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/test-upstream-usermodule.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/verify-docker-images.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.github/workflows/verify-lv-binding-micropython.yml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.gitignore +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/.pre-commit-config.yaml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/CLAUDE.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/CONTRIBUTING.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/LICENSE +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/fetch_bootlin_metadata.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/ghcr_prune_scan.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/plan_test_matrix.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/publish_images.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/refresh_docs.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/refresh_natmod_archs.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/refresh_toolchain_pins.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/refresh_toolchains.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/refresh_usermod_boards.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/render_test_summary.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/bin/update_docker.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/embedded_base.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/esp_idf_base.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/manylinux_2_41_mipsel.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/natmod_host.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/ppc64le_linux.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/xtensa_esp.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docker/xtensa_lx106.Dockerfile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/0000-TRACKER.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/BACKLOG.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0001-natmod-first.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0002-delegate-compile-own-environment.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0003-toolchain-resolution-per-target.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0004-config-file-location.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0005-one-identifier-namespace.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0006-no-test-runners-phase1.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0007-usermod-vendors-mpbuild-board-db.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0008-tool-distribution-deferred.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0009-one-job-loop-fanout-opt-in.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0010-pinned-data-in-resources.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0011-one-repo-absorbs-micropython-native-ci.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0012-pyelftools-ar-own-deps.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0013-micropython-list-dedup-by-abi.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0014-mip-package-per-identifier.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0015-rv32imc-arch-flags-identifier.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0016-usermod-user-c-modules-dir-vs-cmake.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0017-usermod-frozen-manifest-merge.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0018-windows-provisioning-fourth-story.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0019-esp-idf-provisioning-heaviest.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0020-usermod-runner-selection-structural.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0021-usermod-execution-central-value.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0022-zephyr-third-selector-axis.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0023-usermod-identifier-scheme-config-output.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0024-unix-armhf-mipsel-cross-compiles.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0025-dockerfiles-bake-unix-cross-toolchains.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0026-one-docker-image-per-port.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0027-orchestrate-output-dir-and-exec-bit-fixes.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0028-container-per-port-migration-plan.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0029-github-actions-job-summary.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0030-container-approach-natmod-and-docker-vs-qemu.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0031-unix-musllinux-libc-axis.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0032-unix-docker-default-and-webassembly-wiring.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0033-cibuildmp-never-builds-docker-image-itself.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0034-m0-skeleton.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0035-m1-micropython-mpy-cross-provisioning.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0036-m2-toolchain-resolver.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0037-m3-the-build-itself.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0038-m5-adopt-in-three-repos.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0039-usermod-composite-actions-status.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0040-usermod-tests-deferred.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0041-docs-restructure.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0042-windows-docker-wiring-and-resolver-removal.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0043-unix-adopts-cibuildwheel-native-image-model.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0044-unix-native-images-landed.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0045-only-is-a-filter-not-a-forced-identifier.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0047-run-output-parity-with-cibuildwheel.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0048-build-skip-live-in-opposite-tables.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0049-no-matrix-generation-archs-vocabulary.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0050-natmod-is-docker-only.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0051-usermod-identifiers-have-no-version-axis.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0052-config-is-a-tree-not-a-selector-matrix.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0053-usermod-ports-without-a-build-driver.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0054-usermod-example-from-upstream-usercmodule.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0055-natmod-example-from-upstream-natmod.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0056-usermod-with-no-user-c-module.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0057-multiple-modules-per-build.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0058-image-groups-are-toolchains-not-ports.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0059-ghcr-untagged-cleanup-deletes-referenced-manifests.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0060-rp2-build-driver.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0061-usermod-build-drivers-split-per-port.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0062-test-platforms-per-port-orchestrator.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0063-keep-going-and-json-build-report.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0065-bucketed-test-matrix-planning.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0066-extra-cmake-args.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0067-user-c-modules-flat-shape-autodetect.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0068-docker-dependabot-grouping-and-mipsel-ubuntu-26-04.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0069-upstream-usercmodule-narrow-ci-slice.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0070-unix-collected-binary-missing-repaired-lib-sidecar.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0071-micropython-placeholder-in-user-c-modules.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0072-natmod-micropython-placeholder-and-upstream-natmod-ci.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0073-composite-actions-are-a-permanent-legacy-fallback.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0074-usermod-family-table-and-retired-table-messages-removed.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0075-top-level-scalar-keys-are-validated.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0076-the-mipsel-holdout-is-bclibc-and-wasm3-not-a7p.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0077-docs-drift-is-a-failing-test-not-a-discipline-problem.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0078-uncontexted-agent-audit-as-a-docs-test.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0079-collected-artifact-is-more-than-one-file.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0080-windows-and-qemu-usermod-smoke-tests.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0081-output-dir-gitignore.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0082-natmod-old-tags-fail-mpy-cross-under-gcc-15.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0083-windows-fully-prebuilt-mingw-toolchain.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0084-per-identifier-toolchain-tarballs-and-the-end-of-shared-images.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0085-arm-embedded-thins-out-and-the-toolchain-version-becomes-a-row-fact.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0086-generic-in-container-toolchain-tarball-fetch.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0087-arm-riscv-embedded-thin-out-toolchain-version-lands.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0088-mimxrt-own-floor.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0089-natmod-arm-riscv-embedded-toolchain-version.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0090-toolchain-pins-checker-and-0058-text-followup.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0091-tag-cflags-into-every-ports-mpy-cross.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0092-usermod-toml-and-tag-cflags-against-build-platforms.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0093-pre-v1-20-0-tags-had-never-built.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0094-arm-gnu-toolchain-is-a-real-third-choice-for-arm-embedded.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0095-cache-root-splits-source-from-build-state.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0097-lv-binding-micropython-builds-through-cibuildmp.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0098-build-override-may-be-as-unnecessary-as-scratch-root-was.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0099-variant-becomes-a-real-per-target-override-not-an-identifier-axis.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/records/0100-samd-build-driver-plan.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/reference/design.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/reference/open-questions.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/reference/toolchain-facts/bootlin.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/reference/toolchain-facts/toolchains.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/docs/reference/vendored-images.md +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/bare-firmware/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/lv_binding_micropython/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/lv_binding_micropython/smoke_test.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/natmod/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/micropython.cmake +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/natmod/Makefile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/natmod/template.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/src/facade.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/src/template_core.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/src/template_core.h +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/usermod/manifest.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/usermod/micropython.mk +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/template/usermod/template_usermod.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/usercmodule/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/usercmodule/micropython.cmake +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/usercmodule/smoke_test.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/Makefile +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/NOTICE +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/cibuildmp.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/esp8266-rom.S +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/libc.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/runtime.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/wasm-rt-impl-tableops.inc +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/wasm-rt-impl.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/wasm-rt-impl.h +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/wasm-rt-mem-impl-helper.inc +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/wasm-rt-mem-impl.c +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/runtime/wasm-rt.h +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/examples/wasm2mpy/test/zig.wasm +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/pyproject.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/setup.cfg +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/__init__.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/__main__.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/cli.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/dockerrun.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/options.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/__init__.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/natmod/__init__.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/natmod/build.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/natmod/options.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/natmod/targets.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/__init__.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/boards.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_common.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_esp32.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_qemu.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_rp2.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_samd.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_unix.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_webassembly.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/build_windows.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/espidf.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/manifests.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/options.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/orchestrate.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/portinfo.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/platforms/usermod/targets.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/report.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/resources/build-platforms.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/resources/natmod.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/resources/pinned_toolchains.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/resources/tag_cflags.toml +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/resources.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/selector.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/sources.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/stepsummary.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp/toolchain_fetch.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp.egg-info/SOURCES.txt +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp.egg-info/dependency_links.txt +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp.egg-info/entry_points.txt +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp.egg-info/requires.txt +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp.egg-info/scm_file_list.json +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/src/cibuildmp.egg-info/top_level.txt +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/conftest.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_boards.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_bootlin_table.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_build.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_cli.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_cli_multi_family.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_dockerrun_container.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_docs.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_espidf.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_manifests.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_options.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_options_cascade.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_overrides.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_plan_test_matrix.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_platform_row_facts.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_portinfo.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_render_test_summary.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_report.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_selector.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_sources.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_stepsummary.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_targets.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_toolchain_fetch.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_common.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_esp32.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_qemu.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_rp2.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_samd.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_unix.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_webassembly.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_build_windows.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_dockerrun.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_options.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_orchestrate.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/tests/test_usermod_targets.py +0 -0
- {cibuildmp-0.7.2 → cibuildmp-0.7.4}/uv.lock +0 -0
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
steps:
|
|
41
41
|
- uses: actions/checkout@v7
|
|
42
42
|
|
|
43
|
-
- uses: astral-sh/setup-uv@
|
|
43
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
44
44
|
|
|
45
45
|
# Both checkers run even if the first reports drift: the point is one
|
|
46
46
|
# report naming everything that is behind, not the first thing that
|
|
@@ -53,7 +53,7 @@ jobs:
|
|
|
53
53
|
&& github.head_ref || '' }}
|
|
54
54
|
|
|
55
55
|
- name: Install uv
|
|
56
|
-
uses: astral-sh/setup-uv@
|
|
56
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
57
57
|
with:
|
|
58
58
|
# The project's own floor (`requires-python = ">=3.11"`), so CI
|
|
59
59
|
# checks the version a user is most likely to be furthest from.
|
|
@@ -62,7 +62,7 @@ jobs:
|
|
|
62
62
|
- runner: ubuntu-24.04-arm
|
|
63
63
|
image: quay.io/pypa/manylinux_2_28_aarch64@sha256:45ea412cfbd2cc5e51323cecab614ea8e4e5522b4d4f668946c54056b40152f6
|
|
64
64
|
steps:
|
|
65
|
-
- uses: actions/checkout@
|
|
65
|
+
- uses: actions/checkout@v7
|
|
66
66
|
|
|
67
67
|
- name: Docker and kernel facts
|
|
68
68
|
run: |
|
|
@@ -65,7 +65,7 @@ jobs:
|
|
|
65
65
|
fetch-depth: 0 # required for setuptools-scm to see tags
|
|
66
66
|
|
|
67
67
|
- name: Install uv
|
|
68
|
-
uses: astral-sh/setup-uv@
|
|
68
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
69
69
|
with:
|
|
70
70
|
# 3.11 is this package's floor (tomllib); 3.14 is what action.yml
|
|
71
71
|
# pin, so every runner here is on one version.
|
|
@@ -7,6 +7,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.7.4] - 2026-09-29
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Refreshed every pinned PyPA manylinux/musllinux base image to the
|
|
15
|
+
`2026.09.29-1` upstream build.** This updates all 34 entries in
|
|
16
|
+
`pinned_pypa_images.toml`, including the nine images Dependabot reported,
|
|
17
|
+
and synchronizes the 14 direct runtime mirrors in
|
|
18
|
+
`pinned_docker_images.toml`. The remaining image-group pins are immutable
|
|
19
|
+
cibuildmp GHCR digests and were deliberately left untouched.
|
|
20
|
+
|
|
21
|
+
## [0.7.3] - 2026-09-10
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **The two toolchain pins [0046]'s weekly checker reported behind are moved**:
|
|
26
|
+
llvm-mingw `20260616` -> `20260908` (`docker/windows.Dockerfile`) and emsdk
|
|
27
|
+
`6.0.8`/`9d70dbe8` -> `6.0.9`/`f04ea239` (`docker/webassembly.Dockerfile`).
|
|
28
|
+
Both sha256s recomputed from the real tarball, and each one's internal layout
|
|
29
|
+
re-checked with `tar tJf` rather than carried over from the previous version:
|
|
30
|
+
llvm-mingw still unpacks to a single top-level directory (what
|
|
31
|
+
`--strip-components=1` assumes) and still ships all four
|
|
32
|
+
`<arch>-w64-mingw32-` bin/ prefixes `build_windows.py` drives; the emsdk
|
|
33
|
+
tarball still has the `install/emscripten` + `install/bin` shape the image's
|
|
34
|
+
own `ENV PATH` points at. `bin/update_toolchains.py --check` now reports
|
|
35
|
+
every pin current. Nothing about the emsdk bump touches
|
|
36
|
+
`[usermod.webassembly]`, which deliberately records no emsdk version at all
|
|
37
|
+
([0092]) -- MicroPython's own `tools/ci.sh` has never pinned one.
|
|
38
|
+
- **Both bumped `RUN` steps stopped claiming to track a deleted file.** Each
|
|
39
|
+
said it was "pinned to `resources/usermod.toml`'s own `[llvm-mingw]`/`[emsdk]`
|
|
40
|
+
table -- keep the URL and sha256 in step with it", directly contradicting the
|
|
41
|
+
"**This file is the pin of record**" paragraph a few lines above it in the
|
|
42
|
+
same file: [0092] deleted `resources/usermod.toml`, and `usermod/llvmmingw.py`
|
|
43
|
+
/ `usermod/emsdk.py` went with the bare-host resolvers ([0050]/[0042]). The
|
|
44
|
+
webassembly one also cited `open-questions.md`'s "nothing checks whether a
|
|
45
|
+
pinned version is stale" note, which [0046] and `pin-staleness.yml` made false
|
|
46
|
+
-- that checker is precisely what found both of these.
|
|
47
|
+
|
|
48
|
+
|
|
10
49
|
## [0.7.2] - 2026-09-06
|
|
11
50
|
|
|
12
51
|
### Added
|
|
@@ -1669,7 +1708,9 @@ ballistics-lab/micropython-native-ci, but both tags exist here too, so every
|
|
|
1669
1708
|
link resolves inside this repository -- the version line continues rather
|
|
1670
1709
|
than restarting (see the 0.3.0a1 entry). -->
|
|
1671
1710
|
|
|
1672
|
-
[Unreleased]: https://github.com/ballistics-lab/cibuildmp/compare/v0.7.
|
|
1711
|
+
[Unreleased]: https://github.com/ballistics-lab/cibuildmp/compare/v0.7.4...HEAD
|
|
1712
|
+
[0.7.4]: https://github.com/ballistics-lab/cibuildmp/compare/v0.7.3...v0.7.4
|
|
1713
|
+
[0.7.3]: https://github.com/ballistics-lab/cibuildmp/compare/v0.7.2...v0.7.3
|
|
1673
1714
|
[0.7.2]: https://github.com/ballistics-lab/cibuildmp/compare/v0.7.1...v0.7.2
|
|
1674
1715
|
[0.7.1]: https://github.com/ballistics-lab/cibuildmp/compare/v0.7.0...v0.7.1
|
|
1675
1716
|
[0.7.0]: https://github.com/ballistics-lab/cibuildmp/compare/v0.6.2...v0.7.0
|
|
@@ -1708,3 +1749,7 @@ than restarting (see the 0.3.0a1 entry). -->
|
|
|
1708
1749
|
[0053]: docs/records/0053-usermod-ports-without-a-build-driver.md
|
|
1709
1750
|
[0060]: docs/records/0060-rp2-build-driver.md
|
|
1710
1751
|
[0100]: docs/records/0100-samd-build-driver-plan.md
|
|
1752
|
+
[0046]: docs/records/0046-pin-staleness-checker.md
|
|
1753
|
+
[0092]: docs/records/0092-usermod-toml-and-tag-cflags-against-build-platforms.md
|
|
1754
|
+
[0050]: docs/records/0050-natmod-is-docker-only.md
|
|
1755
|
+
[0042]: docs/records/0042-windows-docker-wiring-and-resolver-removal.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cibuildmp
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
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
|
|
@@ -157,7 +157,7 @@ On CI, use the action instead of installing the CLI yourself — it already
|
|
|
157
157
|
runs on a bare runner with the runner's own Docker daemon reachable:
|
|
158
158
|
|
|
159
159
|
```yaml
|
|
160
|
-
- uses: ballistics-lab/cibuildmp@v0.7.
|
|
160
|
+
- uses: ballistics-lab/cibuildmp@v0.7.4
|
|
161
161
|
with:
|
|
162
162
|
build: "mpy6.3-* v1.29.0-manylinux_2_28_x86_64"
|
|
163
163
|
```
|
|
@@ -176,7 +176,7 @@ newest:
|
|
|
176
176
|
path: ~/.cache/cibuildmp
|
|
177
177
|
key: cibuildmp-${{ runner.os }}
|
|
178
178
|
restore-keys: cibuildmp-${{ runner.os }}
|
|
179
|
-
- uses: ballistics-lab/cibuildmp@v0.7.
|
|
179
|
+
- uses: ballistics-lab/cibuildmp@v0.7.4
|
|
180
180
|
with:
|
|
181
181
|
build: "mpy6.3-* v1.29.0-manylinux_2_28_x86_64"
|
|
182
182
|
```
|
|
@@ -235,7 +235,7 @@ jobs:
|
|
|
235
235
|
runs-on: ubuntu-latest
|
|
236
236
|
steps:
|
|
237
237
|
- uses: actions/checkout@v4
|
|
238
|
-
- uses: ballistics-lab/cibuildmp@v0.7.
|
|
238
|
+
- uses: ballistics-lab/cibuildmp@v0.7.4
|
|
239
239
|
with:
|
|
240
240
|
build: "mpy6.3-v1.29.0-*"
|
|
241
241
|
- uses: actions/upload-artifact@v4
|
|
@@ -489,16 +489,16 @@ platform.**
|
|
|
489
489
|
Identifier shapes, one per platform:
|
|
490
490
|
|
|
491
491
|
<!-- generated: identifier-shapes -- bin/refresh_docs.py, do not edit by hand -->
|
|
492
|
-
| Platform
|
|
493
|
-
|
|
|
494
|
-
| natmod
|
|
495
|
-
| usermod `esp32`
|
|
496
|
-
| usermod `qemu`
|
|
497
|
-
| usermod `rp2`
|
|
498
|
-
| usermod `samd`
|
|
499
|
-
| usermod `unix`
|
|
500
|
-
| usermod `webassembly` | `{tag}-{arch}`
|
|
501
|
-
| usermod `windows`
|
|
492
|
+
| Platform | Shape | Example |
|
|
493
|
+
| --------------------- | ----------------------- | ------------------------------------------ |
|
|
494
|
+
| natmod | `mpy{abi}-{tag}-{arch}` | `mpy6.3-v1.29.0-armv6m` |
|
|
495
|
+
| usermod `esp32` | `{tag}-esp32-{board}` | `v1.29.0-esp32-ARDUINO_NANO_ESP32` |
|
|
496
|
+
| usermod `qemu` | `{tag}-qemu-{board}` | `v1.29.0-qemu-MICROBIT` |
|
|
497
|
+
| usermod `rp2` | `{tag}-rp2-{board}` | `v1.29.0-rp2-ADAFRUIT_FEATHER_RP2040` |
|
|
498
|
+
| usermod `samd` | `{tag}-samd-{board}` | `v1.29.0-samd-ADAFRUIT_FEATHER_M0_EXPRESS` |
|
|
499
|
+
| usermod `unix` | `{tag}-{arch}` | `v1.29.0-manylinux_2_28_aarch64` |
|
|
500
|
+
| usermod `webassembly` | `{tag}-{arch}` | `v1.29.0-wasm32` |
|
|
501
|
+
| usermod `windows` | `{tag}-{arch}` | `v1.29.0-win32` |
|
|
502
502
|
<!-- /generated: identifier-shapes -->
|
|
503
503
|
|
|
504
504
|
The shape genuinely differs per usermod port — `unix`/`windows`/
|
|
@@ -786,16 +786,16 @@ the port**, because it is that port's own build axis:
|
|
|
786
786
|
| `esp32`, `rp2`, `webassembly` | *none* | `CIBMP_WEBASSEMBLY_DOCKER_IMAGE` |
|
|
787
787
|
|
|
788
788
|
|
|
789
|
-
| Variable | Effect
|
|
790
|
-
| --------------------------------------- |
|
|
789
|
+
| Variable | Effect |
|
|
790
|
+
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
791
791
|
| `CIBMP_CACHE_PATH` | Where fetched MicroPython checkouts and ESP-IDF are cached. Defaults to `$XDG_CACHE_HOME/cibuildmp`, or `~/.cache/cibuildmp`. Pin it in CI when a later step needs the checkout by path — `<CIBMP_CACHE_PATH>/micropython/<tag>` |
|
|
792
|
-
| `CIBMP_REPORT_PATH` | Where the JSON build report is written
|
|
793
|
-
| `CIBMP_TIMEOUT` | Seconds before a build container is killed (`docker kill`, not just the CLI). No limit by default. **usermod only** -- natmod's own container call does not consult it
|
|
794
|
-
| `CIBMP_<PORT>_<TARGET>_TIMEOUT` | The same, for one container — `CIBMP_UNIX_MANYLINUX_2_28_X86_64_TIMEOUT`
|
|
795
|
-
| `CIBMP_<PORT>_<TARGET>_DOCKER_IMAGE` | Run this (port, target) in a different image — a locally built one, or a fork's. Wins over the pinned default. Omit the `<TARGET>` segment for a port with no per-build image axis (`CIBMP_WEBASSEMBLY_DOCKER_IMAGE`)
|
|
796
|
-
| `CIBMP_<PORT>_<TARGET>_DOCKER_PLATFORM` | Same shape, for the container's `--platform`
|
|
797
|
-
| `CIBMP_DEBUG_TRACEBACK` | Print a full traceback instead of a one-line error (same as `--debug-traceback`)
|
|
798
|
-
| `CIBMP_DISABLE_GITHUB_STEP_SUMMARY` | Suppress the step-summary table on GitHub Actions
|
|
792
|
+
| `CIBMP_REPORT_PATH` | Where the JSON build report is written |
|
|
793
|
+
| `CIBMP_TIMEOUT` | Seconds before a build container is killed (`docker kill`, not just the CLI). No limit by default. **usermod only** -- natmod's own container call does not consult it |
|
|
794
|
+
| `CIBMP_<PORT>_<TARGET>_TIMEOUT` | The same, for one container — `CIBMP_UNIX_MANYLINUX_2_28_X86_64_TIMEOUT` |
|
|
795
|
+
| `CIBMP_<PORT>_<TARGET>_DOCKER_IMAGE` | Run this (port, target) in a different image — a locally built one, or a fork's. Wins over the pinned default. Omit the `<TARGET>` segment for a port with no per-build image axis (`CIBMP_WEBASSEMBLY_DOCKER_IMAGE`) |
|
|
796
|
+
| `CIBMP_<PORT>_<TARGET>_DOCKER_PLATFORM` | Same shape, for the container's `--platform` |
|
|
797
|
+
| `CIBMP_DEBUG_TRACEBACK` | Print a full traceback instead of a one-line error (same as `--debug-traceback`) |
|
|
798
|
+
| `CIBMP_DISABLE_GITHUB_STEP_SUMMARY` | Suppress the step-summary table on GitHub Actions |
|
|
799
799
|
|
|
800
800
|
### Precedence
|
|
801
801
|
|
|
@@ -1268,7 +1268,7 @@ scheduled `test-all-platforms.yml` run since.
|
|
|
1268
1268
|
<tr>
|
|
1269
1269
|
<td><code>esp32</code></td>
|
|
1270
1270
|
<td>
|
|
1271
|
-
every board across <code>v1.
|
|
1271
|
+
every board across <code>v1.29.0</code>/<code>v1.29.0</code>[^esp32ci]
|
|
1272
1272
|
</td>
|
|
1273
1273
|
<td><code>esp_idf_base</code> (Docker) -- ESP-IDF cloned on the host, installed in-container, per-board <code>idf_target</code>/<code>idf_version</code></td>
|
|
1274
1274
|
<td>✅</td>
|
|
@@ -1407,7 +1407,7 @@ quietly mislabelled `.mpy` when they do not.
|
|
|
1407
1407
|
|
|
1408
1408
|
**No `dynruntime.mk` default covers either axis fully**, which this
|
|
1409
1409
|
paragraph did not used to say: `BUILD` defaulted to an unscoped `build` up
|
|
1410
|
-
to v1.
|
|
1410
|
+
to v1.29.0 and to `build-$(ARCH)` from v1.29.0 — arch-scoped from that tag
|
|
1411
1411
|
on, tag-scoped in no release at all, since `MPY_DIR` is the only thing that
|
|
1412
1412
|
knows which release is being built. So on v1.29.0 and later the arch
|
|
1413
1413
|
collision cannot happen by default; the tag one still can, and only your
|
|
@@ -125,7 +125,7 @@ On CI, use the action instead of installing the CLI yourself — it already
|
|
|
125
125
|
runs on a bare runner with the runner's own Docker daemon reachable:
|
|
126
126
|
|
|
127
127
|
```yaml
|
|
128
|
-
- uses: ballistics-lab/cibuildmp@v0.7.
|
|
128
|
+
- uses: ballistics-lab/cibuildmp@v0.7.4
|
|
129
129
|
with:
|
|
130
130
|
build: "mpy6.3-* v1.29.0-manylinux_2_28_x86_64"
|
|
131
131
|
```
|
|
@@ -144,7 +144,7 @@ newest:
|
|
|
144
144
|
path: ~/.cache/cibuildmp
|
|
145
145
|
key: cibuildmp-${{ runner.os }}
|
|
146
146
|
restore-keys: cibuildmp-${{ runner.os }}
|
|
147
|
-
- uses: ballistics-lab/cibuildmp@v0.7.
|
|
147
|
+
- uses: ballistics-lab/cibuildmp@v0.7.4
|
|
148
148
|
with:
|
|
149
149
|
build: "mpy6.3-* v1.29.0-manylinux_2_28_x86_64"
|
|
150
150
|
```
|
|
@@ -203,7 +203,7 @@ jobs:
|
|
|
203
203
|
runs-on: ubuntu-latest
|
|
204
204
|
steps:
|
|
205
205
|
- uses: actions/checkout@v4
|
|
206
|
-
- uses: ballistics-lab/cibuildmp@v0.7.
|
|
206
|
+
- uses: ballistics-lab/cibuildmp@v0.7.4
|
|
207
207
|
with:
|
|
208
208
|
build: "mpy6.3-v1.29.0-*"
|
|
209
209
|
- uses: actions/upload-artifact@v4
|
|
@@ -457,16 +457,16 @@ platform.**
|
|
|
457
457
|
Identifier shapes, one per platform:
|
|
458
458
|
|
|
459
459
|
<!-- generated: identifier-shapes -- bin/refresh_docs.py, do not edit by hand -->
|
|
460
|
-
| Platform
|
|
461
|
-
|
|
|
462
|
-
| natmod
|
|
463
|
-
| usermod `esp32`
|
|
464
|
-
| usermod `qemu`
|
|
465
|
-
| usermod `rp2`
|
|
466
|
-
| usermod `samd`
|
|
467
|
-
| usermod `unix`
|
|
468
|
-
| usermod `webassembly` | `{tag}-{arch}`
|
|
469
|
-
| usermod `windows`
|
|
460
|
+
| Platform | Shape | Example |
|
|
461
|
+
| --------------------- | ----------------------- | ------------------------------------------ |
|
|
462
|
+
| natmod | `mpy{abi}-{tag}-{arch}` | `mpy6.3-v1.29.0-armv6m` |
|
|
463
|
+
| usermod `esp32` | `{tag}-esp32-{board}` | `v1.29.0-esp32-ARDUINO_NANO_ESP32` |
|
|
464
|
+
| usermod `qemu` | `{tag}-qemu-{board}` | `v1.29.0-qemu-MICROBIT` |
|
|
465
|
+
| usermod `rp2` | `{tag}-rp2-{board}` | `v1.29.0-rp2-ADAFRUIT_FEATHER_RP2040` |
|
|
466
|
+
| usermod `samd` | `{tag}-samd-{board}` | `v1.29.0-samd-ADAFRUIT_FEATHER_M0_EXPRESS` |
|
|
467
|
+
| usermod `unix` | `{tag}-{arch}` | `v1.29.0-manylinux_2_28_aarch64` |
|
|
468
|
+
| usermod `webassembly` | `{tag}-{arch}` | `v1.29.0-wasm32` |
|
|
469
|
+
| usermod `windows` | `{tag}-{arch}` | `v1.29.0-win32` |
|
|
470
470
|
<!-- /generated: identifier-shapes -->
|
|
471
471
|
|
|
472
472
|
The shape genuinely differs per usermod port — `unix`/`windows`/
|
|
@@ -754,16 +754,16 @@ the port**, because it is that port's own build axis:
|
|
|
754
754
|
| `esp32`, `rp2`, `webassembly` | *none* | `CIBMP_WEBASSEMBLY_DOCKER_IMAGE` |
|
|
755
755
|
|
|
756
756
|
|
|
757
|
-
| Variable | Effect
|
|
758
|
-
| --------------------------------------- |
|
|
757
|
+
| Variable | Effect |
|
|
758
|
+
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
759
759
|
| `CIBMP_CACHE_PATH` | Where fetched MicroPython checkouts and ESP-IDF are cached. Defaults to `$XDG_CACHE_HOME/cibuildmp`, or `~/.cache/cibuildmp`. Pin it in CI when a later step needs the checkout by path — `<CIBMP_CACHE_PATH>/micropython/<tag>` |
|
|
760
|
-
| `CIBMP_REPORT_PATH` | Where the JSON build report is written
|
|
761
|
-
| `CIBMP_TIMEOUT` | Seconds before a build container is killed (`docker kill`, not just the CLI). No limit by default. **usermod only** -- natmod's own container call does not consult it
|
|
762
|
-
| `CIBMP_<PORT>_<TARGET>_TIMEOUT` | The same, for one container — `CIBMP_UNIX_MANYLINUX_2_28_X86_64_TIMEOUT`
|
|
763
|
-
| `CIBMP_<PORT>_<TARGET>_DOCKER_IMAGE` | Run this (port, target) in a different image — a locally built one, or a fork's. Wins over the pinned default. Omit the `<TARGET>` segment for a port with no per-build image axis (`CIBMP_WEBASSEMBLY_DOCKER_IMAGE`)
|
|
764
|
-
| `CIBMP_<PORT>_<TARGET>_DOCKER_PLATFORM` | Same shape, for the container's `--platform`
|
|
765
|
-
| `CIBMP_DEBUG_TRACEBACK` | Print a full traceback instead of a one-line error (same as `--debug-traceback`)
|
|
766
|
-
| `CIBMP_DISABLE_GITHUB_STEP_SUMMARY` | Suppress the step-summary table on GitHub Actions
|
|
760
|
+
| `CIBMP_REPORT_PATH` | Where the JSON build report is written |
|
|
761
|
+
| `CIBMP_TIMEOUT` | Seconds before a build container is killed (`docker kill`, not just the CLI). No limit by default. **usermod only** -- natmod's own container call does not consult it |
|
|
762
|
+
| `CIBMP_<PORT>_<TARGET>_TIMEOUT` | The same, for one container — `CIBMP_UNIX_MANYLINUX_2_28_X86_64_TIMEOUT` |
|
|
763
|
+
| `CIBMP_<PORT>_<TARGET>_DOCKER_IMAGE` | Run this (port, target) in a different image — a locally built one, or a fork's. Wins over the pinned default. Omit the `<TARGET>` segment for a port with no per-build image axis (`CIBMP_WEBASSEMBLY_DOCKER_IMAGE`) |
|
|
764
|
+
| `CIBMP_<PORT>_<TARGET>_DOCKER_PLATFORM` | Same shape, for the container's `--platform` |
|
|
765
|
+
| `CIBMP_DEBUG_TRACEBACK` | Print a full traceback instead of a one-line error (same as `--debug-traceback`) |
|
|
766
|
+
| `CIBMP_DISABLE_GITHUB_STEP_SUMMARY` | Suppress the step-summary table on GitHub Actions |
|
|
767
767
|
|
|
768
768
|
### Precedence
|
|
769
769
|
|
|
@@ -1236,7 +1236,7 @@ scheduled `test-all-platforms.yml` run since.
|
|
|
1236
1236
|
<tr>
|
|
1237
1237
|
<td><code>esp32</code></td>
|
|
1238
1238
|
<td>
|
|
1239
|
-
every board across <code>v1.
|
|
1239
|
+
every board across <code>v1.29.0</code>/<code>v1.29.0</code>[^esp32ci]
|
|
1240
1240
|
</td>
|
|
1241
1241
|
<td><code>esp_idf_base</code> (Docker) -- ESP-IDF cloned on the host, installed in-container, per-board <code>idf_target</code>/<code>idf_version</code></td>
|
|
1242
1242
|
<td>✅</td>
|
|
@@ -1375,7 +1375,7 @@ quietly mislabelled `.mpy` when they do not.
|
|
|
1375
1375
|
|
|
1376
1376
|
**No `dynruntime.mk` default covers either axis fully**, which this
|
|
1377
1377
|
paragraph did not used to say: `BUILD` defaulted to an unscoped `build` up
|
|
1378
|
-
to v1.
|
|
1378
|
+
to v1.29.0 and to `build-$(ARCH)` from v1.29.0 — arch-scoped from that tag
|
|
1379
1379
|
on, tag-scoped in no release at all, since `MPY_DIR` is the only thing that
|
|
1380
1380
|
knows which release is being built. So on v1.29.0 and later the arch
|
|
1381
1381
|
collision cannot happen by default; the tag one still can, and only your
|
|
@@ -183,7 +183,7 @@ runs:
|
|
|
183
183
|
sudo apt-get install -y --no-install-recommends \
|
|
184
184
|
build-essential git ca-certificates curl python3
|
|
185
185
|
|
|
186
|
-
- uses: astral-sh/setup-uv@
|
|
186
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
187
187
|
|
|
188
188
|
- name: Install cibuildmp
|
|
189
189
|
shell: bash
|
|
@@ -17,10 +17,15 @@ in the same scheduled job.
|
|
|
17
17
|
Three upstream shapes, which is why [0046] asked for one script per shape
|
|
18
18
|
rather than one generic checker:
|
|
19
19
|
|
|
20
|
-
- **GitHub releases
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
- **GitHub releases.** For `xtensa_esp`/`windows` the pinned tag is in the
|
|
21
|
+
Dockerfile's own URL; compare against the repo's own latest release.
|
|
22
|
+
`arm-none-eabi`/`riscv-none-elf` (both `embedded_base` since record 0096)
|
|
23
|
+
are the same upstream shape but no longer a Dockerfile fact at all --
|
|
24
|
+
[0087]/[0089] moved their real pins into `resources/pinned_toolchains.toml`'s
|
|
25
|
+
own `[cross]` tables, keyed by `(cross, version)` because more than one
|
|
26
|
+
verified version is pinned at once (per-row floor/ceiling windows, e.g.
|
|
27
|
+
`mimxrt`'s below-13 ceiling). This checker reads every version pinned for
|
|
28
|
+
that cross and reports whether the newest has fallen behind upstream.
|
|
24
29
|
- **emsdk** (`webassembly`) -- pinned by *build hash*, which looks
|
|
25
30
|
uncomparable and is not: `emscripten-core/emsdk` publishes
|
|
26
31
|
`emscripten-releases-tags.json` mapping every release to its hash, so
|
|
@@ -39,6 +44,7 @@ import hashlib
|
|
|
39
44
|
import json
|
|
40
45
|
import re
|
|
41
46
|
import sys
|
|
47
|
+
import tomllib
|
|
42
48
|
import urllib.error
|
|
43
49
|
import urllib.request
|
|
44
50
|
from dataclasses import dataclass
|
|
@@ -46,6 +52,8 @@ from pathlib import Path
|
|
|
46
52
|
|
|
47
53
|
REPO = Path(__file__).resolve().parent.parent
|
|
48
54
|
DOCKER = REPO / "docker"
|
|
55
|
+
RESOURCES = REPO / "src" / "cibuildmp" / "resources"
|
|
56
|
+
PINNED_TOOLCHAINS = RESOURCES / "pinned_toolchains.toml"
|
|
49
57
|
|
|
50
58
|
GITHUB_LATEST = "https://api.github.com/repos/{repo}/releases/latest"
|
|
51
59
|
EMSDK_TAGS = (
|
|
@@ -60,37 +68,41 @@ class Pin:
|
|
|
60
68
|
dockerfile: str
|
|
61
69
|
# How to find the pinned value in that file, group(1) being the value.
|
|
62
70
|
pattern: str
|
|
63
|
-
kind: str # "github" | "emsdk" | "unversioned"
|
|
64
|
-
upstream: str = "" # owner/repo for "github"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
#
|
|
69
|
-
# `
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
71
|
+
kind: str # "github" | "cross-toml" | "emsdk" | "unversioned"
|
|
72
|
+
upstream: str = "" # owner/repo for "github"/"cross-toml"
|
|
73
|
+
cross: str = "" # `pinned_toolchains.toml` table key, for "cross-toml"
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
# `arm-none-eabi`/`riscv-none-elf` used to be grepped straight out of
|
|
77
|
+
# `embedded_base.Dockerfile`'s own `ARG TOOLCHAIN_URL=`. [0087]/[0089]
|
|
78
|
+
# deleted that line (the tarball is fetched at container run time now, per
|
|
79
|
+
# row, not baked at image-build time) and moved the real pins into
|
|
80
|
+
# `resources/pinned_toolchains.toml`'s own `[cross]` tables -- and unlike
|
|
81
|
+
# the Dockerfile's single shared `ARG`, that table genuinely holds more
|
|
82
|
+
# than one verified version per cross at once (e.g. `mimxrt`'s own
|
|
83
|
+
# below-13 ceiling, record 0088), because different `(tag, scope)` windows
|
|
84
|
+
# resolve to different versions. There is no longer one "the" pin to
|
|
85
|
+
# compare against upstream; `kind="cross-toml"` instead reads every
|
|
86
|
+
# version pinned for that cross and reports whether the *newest* of them
|
|
87
|
+
# has fallen behind upstream's own latest release -- the question this
|
|
88
|
+
# checker can still answer ("is it time to add a newer entry"), without
|
|
89
|
+
# claiming the older, intentionally-kept versions are drift.
|
|
80
90
|
PINS = (
|
|
81
91
|
Pin(
|
|
82
92
|
"arm-none-eabi",
|
|
83
|
-
"
|
|
84
|
-
|
|
85
|
-
"
|
|
93
|
+
"",
|
|
94
|
+
"",
|
|
95
|
+
"cross-toml",
|
|
86
96
|
"xpack-dev-tools/arm-none-eabi-gcc-xpack",
|
|
97
|
+
"arm-none-eabi-",
|
|
87
98
|
),
|
|
88
99
|
Pin(
|
|
89
100
|
"riscv-none-elf",
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
"
|
|
101
|
+
"",
|
|
102
|
+
"",
|
|
103
|
+
"cross-toml",
|
|
93
104
|
"xpack-dev-tools/riscv-none-elf-gcc-xpack",
|
|
105
|
+
"riscv64-unknown-elf-",
|
|
94
106
|
),
|
|
95
107
|
Pin(
|
|
96
108
|
"xtensa-esp",
|
|
@@ -135,6 +147,24 @@ def _pinned(pin: Pin) -> str:
|
|
|
135
147
|
return match.group(1)
|
|
136
148
|
|
|
137
149
|
|
|
150
|
+
def _version_key(version: str) -> tuple[int, ...]:
|
|
151
|
+
return tuple(int(part) for part in re.findall(r"\d+", version))
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def _newest_cross_pin(pin: Pin) -> tuple[str, int]:
|
|
155
|
+
"""(newest version string, how many versions are pinned) for `pin.cross`
|
|
156
|
+
in `pinned_toolchains.toml`."""
|
|
157
|
+
with PINNED_TOOLCHAINS.open("rb") as handle:
|
|
158
|
+
data = tomllib.load(handle)
|
|
159
|
+
versions = list(data.get(pin.cross, {}))
|
|
160
|
+
if not versions:
|
|
161
|
+
raise SystemExit(
|
|
162
|
+
f"{pin.name}: no versions pinned for {pin.cross!r} in "
|
|
163
|
+
f"{PINNED_TOOLCHAINS.relative_to(REPO)}"
|
|
164
|
+
)
|
|
165
|
+
return max(versions, key=_version_key), len(versions)
|
|
166
|
+
|
|
167
|
+
|
|
138
168
|
def _latest_github(repo: str) -> str:
|
|
139
169
|
data = json.loads(_get(GITHUB_LATEST.format(repo=repo)))
|
|
140
170
|
return str(data["tag_name"]).lstrip("v")
|
|
@@ -166,12 +196,16 @@ def _tarball_url(pin: Pin) -> str:
|
|
|
166
196
|
|
|
167
197
|
def check(pin: Pin, *, slow: bool) -> int:
|
|
168
198
|
"""0 when current, 1 when behind. Prints one line either way."""
|
|
169
|
-
|
|
199
|
+
if pin.kind == "cross-toml":
|
|
200
|
+
pinned, count = _newest_cross_pin(pin)
|
|
201
|
+
else:
|
|
202
|
+
pinned = _pinned(pin)
|
|
170
203
|
try:
|
|
171
|
-
if pin.kind
|
|
204
|
+
if pin.kind in ("github", "cross-toml"):
|
|
172
205
|
latest = _latest_github(pin.upstream)
|
|
173
206
|
stale = pinned.lstrip("v") != latest
|
|
174
|
-
|
|
207
|
+
suffix = f" (newest of {count} pinned)" if pin.kind == "cross-toml" else ""
|
|
208
|
+
arrow = f"{pinned} -> {latest}{suffix}" if stale else f"{pinned}{suffix}"
|
|
175
209
|
elif pin.kind == "emsdk":
|
|
176
210
|
version, latest_hash = _latest_emsdk()
|
|
177
211
|
stale = pinned != latest_hash
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
# `FROM` lines below are copied verbatim from that file's own cells, kept
|
|
20
20
|
# in the same order.
|
|
21
21
|
|
|
22
|
-
FROM quay.io/pypa/musllinux_1_2_x86_64@sha256:
|
|
23
|
-
FROM quay.io/pypa/musllinux_1_2_i686@sha256:
|
|
24
|
-
FROM quay.io/pypa/musllinux_1_2_aarch64@sha256:
|
|
25
|
-
FROM quay.io/pypa/musllinux_1_2_ppc64le@sha256:
|
|
26
|
-
FROM quay.io/pypa/musllinux_1_2_s390x@sha256:
|
|
27
|
-
FROM quay.io/pypa/musllinux_1_2_armv7l@sha256:
|
|
28
|
-
FROM quay.io/pypa/musllinux_1_2_riscv64@sha256:
|
|
29
|
-
FROM quay.io/pypa/manylinux_2_31_armv7l@sha256:
|
|
30
|
-
FROM quay.io/pypa/manylinux_2_39_riscv64@sha256:
|
|
22
|
+
FROM quay.io/pypa/musllinux_1_2_x86_64@sha256:bcd644f5f08de4c286b4e8a99652d106a7e56881d8e0b3f92d471f05f5b60fd3 AS musllinux_1_2_x86_64
|
|
23
|
+
FROM quay.io/pypa/musllinux_1_2_i686@sha256:cf2b239c5788f6c6de291a8213e3ca0cd4d443e96ac3f275bd285ae426a0ca7f AS musllinux_1_2_i686
|
|
24
|
+
FROM quay.io/pypa/musllinux_1_2_aarch64@sha256:fecc36f309839b485f04e36b6fd2272d98b84936e68122f3de9bd65c253e76dc AS musllinux_1_2_aarch64
|
|
25
|
+
FROM quay.io/pypa/musllinux_1_2_ppc64le@sha256:bed4b2eaa5013b4a67e68307be9517246288608111665e8f0d32b457e5a307a5 AS musllinux_1_2_ppc64le
|
|
26
|
+
FROM quay.io/pypa/musllinux_1_2_s390x@sha256:4a1af0293993de3ba12789a38ebcd4fce21bd8c1b1c04fab06cb75cd3c8cff78 AS musllinux_1_2_s390x
|
|
27
|
+
FROM quay.io/pypa/musllinux_1_2_armv7l@sha256:36d3a643f82372b2e69690e1111db1583d568752ce2888f13af6f85f1c8ff1cc AS musllinux_1_2_armv7l
|
|
28
|
+
FROM quay.io/pypa/musllinux_1_2_riscv64@sha256:e47e6e52f302f9cbfb57a806f41c0fef25017c6070b4e9912ab6db495153109e AS musllinux_1_2_riscv64
|
|
29
|
+
FROM quay.io/pypa/manylinux_2_31_armv7l@sha256:222db91566088f0643a1a36fa0be0ba22b0aa426da7cbb4e3a7109a02d044133 AS manylinux_2_31_armv7l
|
|
30
|
+
FROM quay.io/pypa/manylinux_2_39_riscv64@sha256:0058fcf87e482872960e1d583483769886bb6e95ff9116a6a965b843419838bf AS manylinux_2_39_riscv64
|
|
@@ -69,12 +69,16 @@
|
|
|
69
69
|
# away exactly the reproducibility the `download` strategy exists for in
|
|
70
70
|
# a locally-reproducible tool (D2/D3) -- see docs/reference/
|
|
71
71
|
# open-questions.md's own "Toolchain pinning vs. reproducibility"
|
|
72
|
-
# question
|
|
73
|
-
#
|
|
72
|
+
# question. Its "nothing checks whether a pinned version is stale" note,
|
|
73
|
+
# cited here until this bump, is no longer true: [0046] made that its own
|
|
74
|
+
# work item, and `bin/update_toolchains.py --check` -- run weekly by
|
|
75
|
+
# `.github/workflows/pin-staleness.yml` -- reads the build hash out of the
|
|
76
|
+
# URL below and compares it against emsdk's own `latest` alias. That is
|
|
77
|
+
# exactly how this pin was found behind and moved.
|
|
74
78
|
#
|
|
75
|
-
# The pinned version is the emscripten-releases-tags.json alias "6.0.
|
|
79
|
+
# The pinned version is the emscripten-releases-tags.json alias "6.0.9",
|
|
76
80
|
# recorded as the value it resolved to when pinned, not the literal
|
|
77
|
-
# string "latest". `
|
|
81
|
+
# string "latest". `f04ea239d533260dd1db760dd2d668d5f9a88d6b` in the URL
|
|
78
82
|
# is the emscripten-releases build hash that alias resolved to; the URL
|
|
79
83
|
# itself follows emsdk's own
|
|
80
84
|
# emscripten_releases_download_url_template
|
|
@@ -135,17 +139,23 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
135
139
|
nodejs \
|
|
136
140
|
&& rm -rf /var/lib/apt/lists/*
|
|
137
141
|
|
|
138
|
-
#
|
|
139
|
-
#
|
|
140
|
-
#
|
|
141
|
-
#
|
|
142
|
-
#
|
|
143
|
-
#
|
|
144
|
-
#
|
|
145
|
-
#
|
|
142
|
+
# emsdk 6.0.9, linux-x64 -- verified live before repinning here, the same
|
|
143
|
+
# way the version before it was: downloaded the real tarball, computed
|
|
144
|
+
# this exact sha256 locally, and inspected its own internal layout with
|
|
145
|
+
# `tar tJf` (a top-level `install/` directory containing
|
|
146
|
+
# `install/emscripten/` -- with `emcc.py` and the `cache/` tree chmod'd
|
|
147
|
+
# below -- and `install/bin/`, which is what the ENV PATH further down
|
|
148
|
+
# actually points at) rather than assumed from the tarball's name alone.
|
|
149
|
+
#
|
|
150
|
+
# This no longer tracks `resources/usermod.toml`'s own [emsdk] table, as
|
|
151
|
+
# it said until this bump: [0092] deleted that file and usermod/emsdk.py's
|
|
152
|
+
# `ResolvedEmsdk.env()` went with the bare-host resolver. The pin of
|
|
153
|
+
# record is here, and nowhere else -- note `[usermod.webassembly]` in
|
|
154
|
+
# build-platforms.toml deliberately records *no* emsdk version, because
|
|
155
|
+
# MicroPython's own tools/ci.sh has never pinned one.
|
|
146
156
|
RUN curl -fsSL -o /tmp/wasm-binaries.tar.xz \
|
|
147
|
-
https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/
|
|
148
|
-
echo "
|
|
157
|
+
https://storage.googleapis.com/webassembly/emscripten-releases-builds/linux/f04ea239d533260dd1db760dd2d668d5f9a88d6b/wasm-binaries.tar.xz && \
|
|
158
|
+
echo "d5c6c2917fbc1cae1a7d1e581f1c0b2817369dd57f94c7a0d05921476f1a7287 /tmp/wasm-binaries.tar.xz" | sha256sum -c - && \
|
|
149
159
|
mkdir -p /opt/emsdk && \
|
|
150
160
|
tar -xJf /tmp/wasm-binaries.tar.xz -C /opt/emsdk && \
|
|
151
161
|
rm /tmp/wasm-binaries.tar.xz && \
|
|
@@ -92,15 +92,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
92
92
|
g++-mingw-w64-i686 \
|
|
93
93
|
&& rm -rf /var/lib/apt/lists/*
|
|
94
94
|
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
98
|
-
#
|
|
99
|
-
#
|
|
100
|
-
#
|
|
95
|
+
# llvm-mingw 20260908, linux-x64. **Nothing else to keep this in step
|
|
96
|
+
# with** -- this line used to say "pinned to resources/usermod.toml's own
|
|
97
|
+
# [llvm-mingw] table", which contradicted the "pin of record" paragraph
|
|
98
|
+
# above it: [0092] deleted that file, and usermod/llvmmingw.py with its
|
|
99
|
+
# `sole_directory()` call went with [0050]/[0042]. The version, URL and
|
|
100
|
+
# sha256 right here are the whole pin.
|
|
101
|
+
#
|
|
102
|
+
# The tarball still unpacks to a single
|
|
103
|
+
# `llvm-mingw-20260908-ucrt-ubuntu-22.04-x86_64/` directory -- re-checked
|
|
104
|
+
# with `tar tJf` at this version, not carried over from the last one, and
|
|
105
|
+
# so were the four `<arch>-w64-mingw32-` bin/ prefixes build_windows.py
|
|
106
|
+
# drives. --strip-components=1 flattens that away so the install prefix is
|
|
107
|
+
# a stable /opt/llvm-mingw regardless of the version in the name.
|
|
101
108
|
RUN curl -fsSL -o /tmp/llvm-mingw.tar.xz \
|
|
102
|
-
https://github.com/mstorsjo/llvm-mingw/releases/download/
|
|
103
|
-
echo "
|
|
109
|
+
https://github.com/mstorsjo/llvm-mingw/releases/download/20260908/llvm-mingw-20260908-ucrt-ubuntu-22.04-x86_64.tar.xz && \
|
|
110
|
+
echo "2258c745e3155870c80793f3e8c80b28fbde11b9ff73c4c78783635b3440b092 /tmp/llvm-mingw.tar.xz" | sha256sum -c - && \
|
|
104
111
|
mkdir -p /opt/llvm-mingw && \
|
|
105
112
|
tar -xJf /tmp/llvm-mingw.tar.xz -C /opt/llvm-mingw --strip-components=1 && \
|
|
106
113
|
rm /tmp/llvm-mingw.tar.xz
|