Configure maturin to build Python wheels for 5 target triples using cross-compilation from a single Linux runner. Enable ABI3 for forward compatibility across Python 3.10+. Changes: - pyproject.toml: Set requires-python = ">=3.10" (down from 3.11) - pyproject.toml: Add Python 3.10 classifier - pyproject.toml: Update comment to reflect 3.10+ compatibility - Cargo.toml: Add pyo3 abi3-py310 feature - docs/operations/build-wheels.md: Document cross-compilation setup Target triples: - x86_64-unknown-linux-gnu (manylinux_2_28_x86_64) - aarch64-unknown-linux-gnu (manylinux_2_28_aarch64) - x86_64-apple-darwin (macosx_11_0_x86_64) - aarch64-apple-darwin (macosx_11_0_arm64) - x86_64-pc-windows-gnu (win_amd64) All wheels will be ABI3 (cp310-abi3) compatible, producing a single wheel per platform instead of N versions × 5 platforms. Refs: pdftract-30ahi, Phase 6.3.4
43 lines
1.5 KiB
TOML
43 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["maturin>=1.0,<2.0"]
|
|
build-backend = "maturin"
|
|
|
|
[project]
|
|
name = "pdftract"
|
|
dynamic = ["version"]
|
|
description = "PDF text extraction library with robust encoding detection"
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
license = {text = "MIT OR Apache-2.0"}
|
|
keywords = ["pdf", "text-extraction", "encoding-detection"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Rust",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Text Processing :: Linguistic",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/jedarden/pdftract"
|
|
Documentation = "https://github.com/jedarden/pdftract"
|
|
Repository = "https://github.com/jedarden/pdftract"
|
|
Issues = "https://github.com/jedarden/pdftract/issues"
|
|
|
|
[tool.maturin]
|
|
features = ["pyo3/extension-module"]
|
|
# Strip symbols from the final wheel for smaller size
|
|
strip = true
|
|
# Use abi3 for forward compatibility across Python 3.10+
|
|
python-source = "python"
|
|
# Include license files in the wheel
|
|
license-files = ["../../LICENSE-MIT", "../../LICENSE-APACHE"]
|
|
# Dynamic version from Cargo.toml
|
|
version-provider = "cargo"
|