Skip to content

feat: build wheels from sdist with --sdist flag#3014

Merged
messense merged 1 commit intoPyO3:mainfrom
messense:build-wheels-from-sdist
Feb 18, 2026
Merged

feat: build wheels from sdist with --sdist flag#3014
messense merged 1 commit intoPyO3:mainfrom
messense:build-wheels-from-sdist

Conversation

@messense
Copy link
Copy Markdown
Member

Change maturin build --sdist to build the source distribution first, unpack it into a temporary directory, then build wheels from the unpacked sdist. This verifies that the produced sdist is complete and usable.

The same sdist-first workflow is also applied to maturin publish when --no-sdist is not specified.

Closes #2564

Change `maturin build --sdist` to build the source distribution first,
unpack it into a temporary directory, then build wheels from the unpacked
sdist. This verifies that the produced sdist is complete and usable.

The same sdist-first workflow is also applied to `maturin publish` when
`--no-sdist` is not specified.

Closes PyO3#2564
@messense messense force-pushed the build-wheels-from-sdist branch from f19caff to 9f3a730 Compare February 17, 2026 14:56
@konstin
Copy link
Copy Markdown
Member

konstin commented Feb 17, 2026

I both really want this and wonder how much we reimplement uv build this way (which does that by default), but I'm not sure if there's even a way to expose the same options as we now have in maturin from uv build in a way that's user friendly.

@messense
Copy link
Copy Markdown
Member Author

Yeah I was also hesitate to implement this in maturin, but the actual code changes are small and provides real benefits, so don't hurt to have it.

@messense messense merged commit a782e86 into PyO3:main Feb 18, 2026
81 of 84 checks passed
@messense messense deleted the build-wheels-from-sdist branch February 18, 2026 09:44
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Feb 22, 2026
## 1.12.4

* Upgrade memmap2 version ([#3021](PyO3/maturin#3021))
* Fix: platform tag detection for Android targets ([#3023](PyO3/maturin#3023))
* Fix: only ignore maturin-generated native libraries on all platforms ([#3025](PyO3/maturin#3025))
* Fix: ignore develop artifacts for all binding types during build ([#3026](PyO3/maturin#3026))
* Feat: support conditional cargo features based on Python version ([#3027](PyO3/maturin#3027))

## 1.12.3

* Ci: set crt-static for riscv64 and loongarch64 musl targets ([#3009](PyO3/maturin#3009))
* Fix: support `maturin develop` on Windows ARM with x86 Python ([#3011](PyO3/maturin#3011))
* Fix: exclude `external_packages` bindings from uniffi wheels ([#3013](PyO3/maturin#3013))
* Update cargo-zigbuild to 0.22.1 ([#3015](PyO3/maturin#3015))
* Feat: build wheels from sdist with `--sdist` flag ([#3014](PyO3/maturin#3014))
* Feat: add `include-import-lib` option to bundle Windows import libraries in wheels ([#3017](PyO3/maturin#3017))
* Fix: auditwheel external lib check respects musllinux and reports symbol versions ([#3019](PyO3/maturin#3019))
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.

Please support building wheels via source distribution in maturin build workflow

2 participants