Skip to main content

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:

  1. CMake build — configure, build, and install native code via CmakeBuilder
  2. Python extension compile — Cython/C++ extension compilation via a BuildExt command that injects include and library paths from IVPM-managed dependencies
  3. Shared-library packaging — InstallLib copies native .so/.dll/.dylib files into the wheel alongside the Python extension module
  4. IVPM dependency resolution — queries the IVPM package registry (PkgInfoRgy) to obtain include dirs, library dirs, and Cython .pxd files from other IVPM-managed native packages listed in ivpm.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)

Source distribution for ivpm-build 0.2.0.27884918630
File Size Uploaded Provenance
ivpm_build-0.2.0.27884918630.tar.gz 22.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ivpm-build 0.2.0.27884918630
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page