Skip to content

refactor: BuildOrchestrator pipeline deduplication - #3251

Merged
messense merged 1 commit into
PyO3:mainfrom
messense:refactor/phase-2
Jul 9, 2026
Merged

refactor: BuildOrchestrator pipeline deduplication#3251
messense merged 1 commit into
PyO3:mainfrom
messense:refactor/phase-2

Conversation

@messense

@messense messense commented Jul 9, 2026

Copy link
Copy Markdown
Member
  • Extract validate_wheels_for_pypi, shared by normal and per-interpreter PGO builds
  • Extract compile_and_audit for the cdylib compile→audit→AuditedArtifact sequence (stable-ABI, version-specific PyO3, cffi, uniffi paths)
  • Merge extension and bin wheel writing into a shared write_wheel_inner; BinBindingGenerator now reads metadata immutably with WASI entry-point mutations precomputed via prepare_metadata (resolves the borrow trap)
  • Extract run_pgo_cycle for the shared three-phase PGO sequencing with a message prefix preserving per-interpreter output indentation
  • Replace Box factories with generics

- Extract validate_wheels_for_pypi, shared by normal and per-interpreter
  PGO builds
- Extract compile_and_audit for the cdylib compile→audit→AuditedArtifact
  sequence (stable-ABI, version-specific PyO3, cffi, uniffi paths)
- Merge extension and bin wheel writing into a shared write_wheel_inner;
  BinBindingGenerator now reads metadata immutably with WASI entry-point
  mutations precomputed via prepare_metadata (resolves the borrow trap)
- Extract run_pgo_cycle for the shared three-phase PGO sequencing with a
  message prefix preserving per-interpreter output indentation
- Replace Box<dyn BindingGenerator> factories with generics
@messense
messense enabled auto-merge (squash) July 9, 2026 13:59
@messense
messense merged commit 5d75a8c into PyO3:main Jul 9, 2026
83 of 85 checks passed
@messense
messense deleted the refactor/phase-2 branch July 9, 2026 14:01
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 26, 2026
Changelog:

* Set `UV_PYTHON` when running `maturin develop` with uv ([#3236](PyO3/maturin#3236))
* Set UID and GID headers in pax ([#3241](PyO3/maturin#3241))
* Replace unguarded panics with explicit errors on fallible input ([#3242](PyO3/maturin#3242))
* Harden PEP 517 build-wheel and fix unreachable OIDC 404 fallback ([#3244](PyO3/maturin#3244))
* Fix abi3t PyModExport entrypoint check ([#3246](PyO3/maturin#3246))
* Fix `maturin build --pgo -i <version>` with `uv` install ([#3237](PyO3/maturin#3237))
* Refactor: apply some mechanical cleanups ([#3250](PyO3/maturin#3250))
* Refactor: BuildOrchestrator pipeline deduplication ([#3251](PyO3/maturin#3251))
* Refactor: improve context and environment hygiene ([#3252](PyO3/maturin#3252))
* Fix(ci): honor ~= and ==X.* in requires-python for generate-ci ([#3249](PyO3/maturin#3249))
* Refactor: type cleanup for options, tags, and wheel metadata ([#3253](PyO3/maturin#3253))
* Refactor: InstallDest, single BridgeModel, and ui output facade ([#3254](PyO3/maturin#3254))
* Don’t specify generate-import-lib for PyO3 0.29 ([#3258](PyO3/maturin#3258))
* Refactor build so that pgo is part of normal pathway ([#3257](PyO3/maturin#3257))
* Fix: verify bindings detection with cargo tree in workspaces ([#3264](PyO3/maturin#3264))
* Fix: harden cargo tree verification of bindings detection ([#3266](PyO3/maturin#3266))
* Feat: support --pgo for maturin develop ([#3270](PyO3/maturin#3270))
* Feat: support `MATURIN_PGO` env var to activate --pgo ([#3271](PyO3/maturin#3271))
* Docs: correct crate feature documentation; remove stale clippy allow
* Fix: deduplicate SBOM includes across full merged list, preserving first-seen order
* Feat: type the bindings input with a single-source-of-truth enum ([#3273](PyO3/maturin#3273))
* Don't force export of the `PyInit_{module_name}` in UniFfi mode ([#3275](PyO3/maturin#3275))
* Switch musllinux images to `musllinux_1_2` as `musllinux_1_1` is EOL ([#3280](PyO3/maturin#3280))
* Fix(generate-stubs): write stubs into the module's package directory ([#3282](PyO3/maturin#3282))
* Fix group not cwd ([#3284](PyO3/maturin#3284))
* Docs: document missing [tool.maturin] config fields ([#3287](PyO3/maturin#3287))
* Update cargo-zigbuild & cargo-xwin to 0.23.1

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 26, 2026
Changelog:

* Set `UV_PYTHON` when running `maturin develop` with uv ([#3236](PyO3/maturin#3236))
* Set UID and GID headers in pax ([#3241](PyO3/maturin#3241))
* Replace unguarded panics with explicit errors on fallible input ([#3242](PyO3/maturin#3242))
* Harden PEP 517 build-wheel and fix unreachable OIDC 404 fallback ([#3244](PyO3/maturin#3244))
* Fix abi3t PyModExport entrypoint check ([#3246](PyO3/maturin#3246))
* Fix `maturin build --pgo -i <version>` with `uv` install ([#3237](PyO3/maturin#3237))
* Refactor: apply some mechanical cleanups ([#3250](PyO3/maturin#3250))
* Refactor: BuildOrchestrator pipeline deduplication ([#3251](PyO3/maturin#3251))
* Refactor: improve context and environment hygiene ([#3252](PyO3/maturin#3252))
* Fix(ci): honor ~= and ==X.* in requires-python for generate-ci ([#3249](PyO3/maturin#3249))
* Refactor: type cleanup for options, tags, and wheel metadata ([#3253](PyO3/maturin#3253))
* Refactor: InstallDest, single BridgeModel, and ui output facade ([#3254](PyO3/maturin#3254))
* Don’t specify generate-import-lib for PyO3 0.29 ([#3258](PyO3/maturin#3258))
* Refactor build so that pgo is part of normal pathway ([#3257](PyO3/maturin#3257))
* Fix: verify bindings detection with cargo tree in workspaces ([#3264](PyO3/maturin#3264))
* Fix: harden cargo tree verification of bindings detection ([#3266](PyO3/maturin#3266))
* Feat: support --pgo for maturin develop ([#3270](PyO3/maturin#3270))
* Feat: support `MATURIN_PGO` env var to activate --pgo ([#3271](PyO3/maturin#3271))
* Docs: correct crate feature documentation; remove stale clippy allow
* Fix: deduplicate SBOM includes across full merged list, preserving first-seen order
* Feat: type the bindings input with a single-source-of-truth enum ([#3273](PyO3/maturin#3273))
* Don't force export of the `PyInit_{module_name}` in UniFfi mode ([#3275](PyO3/maturin#3275))
* Switch musllinux images to `musllinux_1_2` as `musllinux_1_1` is EOL ([#3280](PyO3/maturin#3280))
* Fix(generate-stubs): write stubs into the module's package directory ([#3282](PyO3/maturin#3282))
* Fix group not cwd ([#3284](PyO3/maturin#3284))
* Docs: document missing [tool.maturin] config fields ([#3287](PyO3/maturin#3287))
* Update cargo-zigbuild & cargo-xwin to 0.23.1

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 27, 2026
Changelog:

* Set `UV_PYTHON` when running `maturin develop` with uv ([#3236](PyO3/maturin#3236))
* Set UID and GID headers in pax ([#3241](PyO3/maturin#3241))
* Replace unguarded panics with explicit errors on fallible input ([#3242](PyO3/maturin#3242))
* Harden PEP 517 build-wheel and fix unreachable OIDC 404 fallback ([#3244](PyO3/maturin#3244))
* Fix abi3t PyModExport entrypoint check ([#3246](PyO3/maturin#3246))
* Fix `maturin build --pgo -i <version>` with `uv` install ([#3237](PyO3/maturin#3237))
* Refactor: apply some mechanical cleanups ([#3250](PyO3/maturin#3250))
* Refactor: BuildOrchestrator pipeline deduplication ([#3251](PyO3/maturin#3251))
* Refactor: improve context and environment hygiene ([#3252](PyO3/maturin#3252))
* Fix(ci): honor ~= and ==X.* in requires-python for generate-ci ([#3249](PyO3/maturin#3249))
* Refactor: type cleanup for options, tags, and wheel metadata ([#3253](PyO3/maturin#3253))
* Refactor: InstallDest, single BridgeModel, and ui output facade ([#3254](PyO3/maturin#3254))
* Don’t specify generate-import-lib for PyO3 0.29 ([#3258](PyO3/maturin#3258))
* Refactor build so that pgo is part of normal pathway ([#3257](PyO3/maturin#3257))
* Fix: verify bindings detection with cargo tree in workspaces ([#3264](PyO3/maturin#3264))
* Fix: harden cargo tree verification of bindings detection ([#3266](PyO3/maturin#3266))
* Feat: support --pgo for maturin develop ([#3270](PyO3/maturin#3270))
* Feat: support `MATURIN_PGO` env var to activate --pgo ([#3271](PyO3/maturin#3271))
* Docs: correct crate feature documentation; remove stale clippy allow
* Fix: deduplicate SBOM includes across full merged list, preserving first-seen order
* Feat: type the bindings input with a single-source-of-truth enum ([#3273](PyO3/maturin#3273))
* Don't force export of the `PyInit_{module_name}` in UniFfi mode ([#3275](PyO3/maturin#3275))
* Switch musllinux images to `musllinux_1_2` as `musllinux_1_1` is EOL ([#3280](PyO3/maturin#3280))
* Fix(generate-stubs): write stubs into the module's package directory ([#3282](PyO3/maturin#3282))
* Fix group not cwd ([#3284](PyO3/maturin#3284))
* Docs: document missing [tool.maturin] config fields ([#3287](PyO3/maturin#3287))
* Update cargo-zigbuild & cargo-xwin to 0.23.1

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 27, 2026
Changelog:

* Set `UV_PYTHON` when running `maturin develop` with uv ([#3236](PyO3/maturin#3236))
* Set UID and GID headers in pax ([#3241](PyO3/maturin#3241))
* Replace unguarded panics with explicit errors on fallible input ([#3242](PyO3/maturin#3242))
* Harden PEP 517 build-wheel and fix unreachable OIDC 404 fallback ([#3244](PyO3/maturin#3244))
* Fix abi3t PyModExport entrypoint check ([#3246](PyO3/maturin#3246))
* Fix `maturin build --pgo -i <version>` with `uv` install ([#3237](PyO3/maturin#3237))
* Refactor: apply some mechanical cleanups ([#3250](PyO3/maturin#3250))
* Refactor: BuildOrchestrator pipeline deduplication ([#3251](PyO3/maturin#3251))
* Refactor: improve context and environment hygiene ([#3252](PyO3/maturin#3252))
* Fix(ci): honor ~= and ==X.* in requires-python for generate-ci ([#3249](PyO3/maturin#3249))
* Refactor: type cleanup for options, tags, and wheel metadata ([#3253](PyO3/maturin#3253))
* Refactor: InstallDest, single BridgeModel, and ui output facade ([#3254](PyO3/maturin#3254))
* Don’t specify generate-import-lib for PyO3 0.29 ([#3258](PyO3/maturin#3258))
* Refactor build so that pgo is part of normal pathway ([#3257](PyO3/maturin#3257))
* Fix: verify bindings detection with cargo tree in workspaces ([#3264](PyO3/maturin#3264))
* Fix: harden cargo tree verification of bindings detection ([#3266](PyO3/maturin#3266))
* Feat: support --pgo for maturin develop ([#3270](PyO3/maturin#3270))
* Feat: support `MATURIN_PGO` env var to activate --pgo ([#3271](PyO3/maturin#3271))
* Docs: correct crate feature documentation; remove stale clippy allow
* Fix: deduplicate SBOM includes across full merged list, preserving first-seen order
* Feat: type the bindings input with a single-source-of-truth enum ([#3273](PyO3/maturin#3273))
* Don't force export of the `PyInit_{module_name}` in UniFfi mode ([#3275](PyO3/maturin#3275))
* Switch musllinux images to `musllinux_1_2` as `musllinux_1_1` is EOL ([#3280](PyO3/maturin#3280))
* Fix(generate-stubs): write stubs into the module's package directory ([#3282](PyO3/maturin#3282))
* Fix group not cwd ([#3284](PyO3/maturin#3284))
* Docs: document missing [tool.maturin] config fields ([#3287](PyO3/maturin#3287))
* Update cargo-zigbuild & cargo-xwin to 0.23.1

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 27, 2026
Changelog:

* Set `UV_PYTHON` when running `maturin develop` with uv ([#3236](PyO3/maturin#3236))
* Set UID and GID headers in pax ([#3241](PyO3/maturin#3241))
* Replace unguarded panics with explicit errors on fallible input ([#3242](PyO3/maturin#3242))
* Harden PEP 517 build-wheel and fix unreachable OIDC 404 fallback ([#3244](PyO3/maturin#3244))
* Fix abi3t PyModExport entrypoint check ([#3246](PyO3/maturin#3246))
* Fix `maturin build --pgo -i <version>` with `uv` install ([#3237](PyO3/maturin#3237))
* Refactor: apply some mechanical cleanups ([#3250](PyO3/maturin#3250))
* Refactor: BuildOrchestrator pipeline deduplication ([#3251](PyO3/maturin#3251))
* Refactor: improve context and environment hygiene ([#3252](PyO3/maturin#3252))
* Fix(ci): honor ~= and ==X.* in requires-python for generate-ci ([#3249](PyO3/maturin#3249))
* Refactor: type cleanup for options, tags, and wheel metadata ([#3253](PyO3/maturin#3253))
* Refactor: InstallDest, single BridgeModel, and ui output facade ([#3254](PyO3/maturin#3254))
* Don’t specify generate-import-lib for PyO3 0.29 ([#3258](PyO3/maturin#3258))
* Refactor build so that pgo is part of normal pathway ([#3257](PyO3/maturin#3257))
* Fix: verify bindings detection with cargo tree in workspaces ([#3264](PyO3/maturin#3264))
* Fix: harden cargo tree verification of bindings detection ([#3266](PyO3/maturin#3266))
* Feat: support --pgo for maturin develop ([#3270](PyO3/maturin#3270))
* Feat: support `MATURIN_PGO` env var to activate --pgo ([#3271](PyO3/maturin#3271))
* Docs: correct crate feature documentation; remove stale clippy allow
* Fix: deduplicate SBOM includes across full merged list, preserving first-seen order
* Feat: type the bindings input with a single-source-of-truth enum ([#3273](PyO3/maturin#3273))
* Don't force export of the `PyInit_{module_name}` in UniFfi mode ([#3275](PyO3/maturin#3275))
* Switch musllinux images to `musllinux_1_2` as `musllinux_1_1` is EOL ([#3280](PyO3/maturin#3280))
* Fix(generate-stubs): write stubs into the module's package directory ([#3282](PyO3/maturin#3282))
* Fix group not cwd ([#3284](PyO3/maturin#3284))
* Docs: document missing [tool.maturin] config fields ([#3287](PyO3/maturin#3287))
* Update cargo-zigbuild & cargo-xwin to 0.23.1

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant