ivpm-build
Build tooling for Python packages that wrap native C/C++ extensions, with IVPM integration for cross-package dependency resolution.
ivpm-build handles the full native-extension build pipeline:
- CMake build — configure, build, and install native code via
CmakeBuilder - Python extension compile — Cython/C++ extension compilation via a
BuildExtcommand that injects include and library paths from IVPM-managed dependencies - Shared-library packaging —
InstallLibcopies native.so/.dll/.dylibfiles into the wheel alongside the Python extension module - IVPM dependency resolution — queries the IVPM package registry
(
PkgInfoRgy) to obtain include dirs, library dirs, and Cython.pxdfiles from other IVPM-managed native packages listed inivpm.yaml
When to use ivpm-build
Use ivpm-build when your Python package:
- wraps a C/C++ library built with CMake, and/or
- exposes a Cython extension that links against native libraries from other
IVPM-managed packages (e.g.
debug-mgr,ciostream,antlr4-runtime)
Installation
pip install ivpm-build
Quick Start
pyproject.toml (recommended)
[build-system]
requires = ["setuptools>=64", "wheel", "cython", "ivpm-build", "ivpm"]
build-backend = "setuptools.build_meta"
setup.py
from ivpm_build.setup import setup # replaces ivpm.setup.setup
from setuptools import Extension
ext = Extension("mypkg._core", sources=["python/core.pyx"], language="c++")
setup(
name="mypkg",
ext_modules=[ext],
ivpm_extdep_pkgs=["debug-mgr", "ciostream"], # IVPM deps → include/lib paths
ivpm_extra_data={
"mypkg": [
("build/{libdir}/{libpref}mypkg{dllext}", ""), # bundle native lib
]
},
)
BuildExt (injected by setup()) automatically resolves include directories,
library directories, and Cython .pxd search paths from each package listed in
ivpm_extdep_pkgs via the IVPM registry.
CMake-only build
from ivpm_build.cmake import CmakeBuilder
builder = CmakeBuilder(proj_dir="/path/to/project")
builder.run() # cmake configure → build → install
Integration paths
| Path | When to use |
|---|---|
Path 1 — swap from ivpm.setup import setup → from ivpm_build.setup import setup |
Existing setup.py project, zero-change migration |
Path 2 — apply_ivpm_setup() in setup.py + pyproject.toml metadata |
Fine-grained control over extension descriptors |
Path 3 — pure pyproject.toml with build-backend = "ivpm_build.backend" |
New projects or full modernisation |
See the migration guide for step-by-step instructions.
Documentation
Full documentation: https://fvutils.github.io/ivpm-build
License
Apache 2.0 — see LICENSE
Metadata
Release files for ivpm-build 0.2.0.27884918630
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ivpm_build-0.2.0.27884918630.tar.gz | 22.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ivpm_build-0.2.0.27884918630-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.9 kB
Release files / ivpm_build-0.2.0.27884918630.tar.gz
| Download URL | ivpm_build-0.2.0.27884918630.tar.gz |
|---|---|
| Size | 22.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30e76e750f009aaad1a6d78ae7e9d97fd2cbdb8d6cc54901f5b2aee7e7bd45c5
|
|
BLAKE2b-256 checksum How to use checksums |
cdfab5cd7697d374816c0d424b1b12d5aa3427e73a671cea7597cd9d30d517f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / ivpm_build-0.2.0.27884918630-py3-none-any.whl
| Download URL | ivpm_build-0.2.0.27884918630-py3-none-any.whl |
|---|---|
| Size | 23.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
85a5915d3680b5009ea1fc1f0540731d6c94c4af9369c1305e244f29ab23c2c8
|
|
BLAKE2b-256 checksum How to use checksums |
74007804b4e2071736e76b0cd4d87cba370ea11d560ab94df264042decf39e95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Security for ivpm-build 0.2.0.27884918630
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.