Skip to content

Use pax instead of GNU headers for tar - #3203

Merged
messense merged 2 commits into
mainfrom
konsti/tar-pax
May 28, 2026
Merged

Use pax instead of GNU headers for tar#3203
messense merged 2 commits into
mainfrom
konsti/tar-pax

Conversation

@konstin

@konstin konstin commented May 27, 2026

Copy link
Copy Markdown
Member

maturin has been using GNU headers for tar, while the spec wants pax headers (pypa/packaging.python.org#2058). This PR switches maturin over to pax headers.

Using a constraint tar/zip format is important to avoid parser differentials.

Fixes #3195

maturin has been using GNU headers for tar, while the spec wants pax headers (pypa/packaging.python.org#2058). This PR switches maturin over to pax headers.

Using a constraint tar/zip format is important to avoid parser differentials.
@konstin konstin added the bug Something isn't working label May 27, 2026
@messense
messense requested a review from Copilot May 27, 2026 12:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates sdist tar generation to avoid GNU headers and emit pax-compatible tar entries for paths that exceed ustar limits or require UTF-8 pax path metadata.

Changes:

  • Switches sdist entry headers from GNU to ustar.
  • Adds manual pax extended header generation for archive paths that cannot be represented directly in ustar.
  • Adds a regression test inspecting raw tar blocks for pax path handling.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/module_writer/sdist_writer.rs Outdated
@messense
messense merged commit 697a283 into main May 28, 2026
45 checks passed
@messense
messense deleted the konsti/tar-pax branch May 28, 2026 11:08
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 23, 2026
## 1.14.1

* Bump uraimo/run-on-arch-action to v3 to fix pytest job ([#3221](PyO3/maturin#3221))
* Fix platform tag logic to generate the same as cpython on AIX ([#3220](PyO3/maturin#3220))
* Bump pyo3-introspection ([#3227](PyO3/maturin#3227))
* Upgrade cargo-zigbuild & cargo-xwin ([#3228](PyO3/maturin#3228))
* Fix issues around crates enabling abi3 and abi3t features ([#3226](PyO3/maturin#3226))
* Add PEP 740 publish attestations to PyPI releases ([#3230](PyO3/maturin#3230))
* Set PYO3_PYTHON to run scripts for stable ABI builds ([#3233](PyO3/maturin#3233))
* Fix shell quoting in CI scripts ([#3231](PyO3/maturin#3231))

## 1.14.0

* Support parent-relative pyproject metadata in sdists ([#3182](PyO3/maturin#3182))
* Update PyPI platform tag validation ([#3187](PyO3/maturin#3187))
* Maint: update setup emsdk action in generate-ci ([#3194](PyO3/maturin#3194))
* Fix: only shim bin wheels during auditwheel repair ([#3197](PyO3/maturin#3197))
* Fix: avoid editable ELF truncation from stale hardlinks ([#3199](PyO3/maturin#3199))
* Fix Pyodide Emscripten platform tags ([#3191](PyO3/maturin#3191))
* Use pax instead of GNU headers for tar ([#3203](PyO3/maturin#3203))
* Feat: add default exclude `__pycache__` and `*.pyc` files ([#3202](PyO3/maturin#3202))
* Add support for finding free-threaded interpreters for `--find-interpreters` ([#3206](PyO3/maturin#3206))
* Stubs: also generate them for mixed PyO3 projects ([#3211](PyO3/maturin#3211))
* Don't depend on CFFI on PyPy ([#3213](PyO3/maturin#3213))
* Support pyo3 abi3t features on Python3.15 and PyO3 0.29 ([#3113](PyO3/maturin#3113))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

maturin generates non-pax source distributions

3 participants