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.27908268978
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.27908268978.tar.gz | 26.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ivpm_build-0.2.0.27908268978-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.6 kB
Release files / ivpm_build-0.2.0.27908268978.tar.gz
| Download URL | ivpm_build-0.2.0.27908268978.tar.gz |
|---|---|
| Size | 26.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3cd7f640875e36cc677393999debd90cfa6698b3f5ead12d1b86730d5c597ea5
|
|
BLAKE2b-256 checksum How to use checksums |
6fa86b711ec5d7740254d7a94d90dbbbbe691164f94583c643fc5092ad91f417
|
| 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.27908268978-py3-none-any.whl
| Download URL | ivpm_build-0.2.0.27908268978-py3-none-any.whl |
|---|---|
| Size | 25.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
208edc10d9dfda8ae216959ad436744d23cee3a46ca592b3871fa23cb165c56e
|
|
BLAKE2b-256 checksum How to use checksums |
cf42742857d2d06939c50995eda0d20fea68077a731e93fd858093501a187ed3
|
| 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.27908268978
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.