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.27908268978

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.27908268978
File Size Uploaded Provenance
ivpm_build-0.2.0.27908268978.tar.gz 26.3 kB Without provenance Details

Built distribution (wheel)

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

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