Skip to main content

islpy built with Barvinok and vendored native libs (Linux/macOS). Falls back to source build if wheel unavailable.

Project description

islpy-barvinok

Prebuilt wheels and from-source builds of islpy with Barvinok enabled, with native libraries vendored on Linux and macOS.

This project is a wrapper/builder: it fetches the upstream islpy sdist at a pinned version, builds Barvinok/NTL/ISL via a reproducible script, builds islpy with USE_BARVINOK=ON, and publishes wheels. It keeps the import name as islpy for compatibility, while the distribution name on PyPI is islpy-barvinok.

Supported platforms: Linux x86_64 (manylinux) and macOS 11+ (x86_64 and arm64).

Upstream project: inducer/islpy. This repo tracks upstream islpy releases on PyPI and rebuilds with Barvinok enabled.

Usage

  • Install: pip install islpy-barvinok
  • Import:
import islpy
islpy.Set("[N] -> {[x, y] : x >= 0 and y >= 0 and x <= N and y <= N}").card()

How the wheels are built (overview)

  • Build dependencies into a local prefix (default build/prefix):
    • GMP, NTL, ISL, Barvinok (from upstream sources)
  • Build islpy against the prefix with:
    • -D USE_SHIPPED_ISL=OFF -D USE_SHIPPED_IMATH=OFF -D USE_BARVINOK=ON
    • -D ISL_INC_DIRS:LIST=<prefix>/include
    • -D ISL_LIB_DIRS:LIST=<prefix>/lib
  • Vendor native libs into wheels:
    • Linux: auditwheel repair
    • macOS: delocate-wheel

Building from source (PEP 517)

If a prebuilt wheel is unavailable for your platform, pip will build from source using a custom backend that runs scripts/build_all.sh. You will need common C/C++ build tools and autotools installed system-wide:

  • macOS: brew install autoconf automake libtool pkg-config cmake ninja
  • Debian/Ubuntu: sudo apt-get install -y build-essential autoconf automake libtool pkg-config cmake ninja-build

Then:

pip install --no-binary=:all: islpy-barvinok

The build downloads sources for GMP, NTL, ISL, and Barvinok, builds them into a local prefix under build/, builds islpy against that prefix with Barvinok enabled, and produces a wheel that pip installs. On macOS, native libraries may be vendored using delocate if available.

Releases and automation

  • Upstream tracking: a scheduled workflow checks PyPI for new islpy releases and opens a PR bumping the pinned version.
  • Tagging: when such a PR is merged into main, another workflow tags the repo with v<version>.
  • Publishing: tags trigger CI to build wheels on Linux and macOS and publish to PyPI via Trusted Publishing (OIDC).

Development

  • Single-script build:
    • uv run bash scripts/build_all.sh
    • Wheels in build/wheelhouse and build/wheelhouse-repaired.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

islpy-barvinok-2025.2.5.rc1.tar.gz (17.6 kB view details)

Uploaded Source

File details

Details for the file islpy-barvinok-2025.2.5.rc1.tar.gz.

File metadata

  • Download URL: islpy-barvinok-2025.2.5.rc1.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for islpy-barvinok-2025.2.5.rc1.tar.gz
Algorithm Hash digest
SHA256 3d9c9ef73b48cc319fda66f4e05853471f25da446ebb0f3d3b9d0adae6771a69
MD5 5b6b3091df6f705f3aa1ac9832fd5b01
BLAKE2b-256 587d02ed998f05a9e4ef0a6adaafb1731db336ccd01ff87a9cd4a37ebea755d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for islpy-barvinok-2025.2.5.rc1.tar.gz:

Publisher: wheels.yml on thisiscam/islpy-barvinok

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page