diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2026-03-07 22:46:56 +0100 |
|---|---|---|
| committer | Dimitri Staessens <dimitri@ouroboros.rocks> | 2026-03-08 14:24:30 +0100 |
| commit | 7d043001b956fb80116cf8eedcca1d5aaf2edbd4 (patch) | |
| tree | d2f925b1f3085cabd0256949a454d15075a8dde8 /setup.py | |
| parent | 7a4c37e8b673328dda59cec11ab9dce66c22a312 (diff) | |
| download | pyouroboros-0.23.0.tar.gz pyouroboros-0.23.0.zip | |
Replace setup.py metadata with pyproject.toml and derive version from
git tags with setuptools-scm. Adds git archive support for
setuptools-scm version detection.
Diffstat (limited to 'setup.py')
| -rwxr-xr-x | setup.py | 67 |
1 files changed, 45 insertions, 22 deletions
@@ -1,26 +1,49 @@ -#!/usr/bin/env python - -import setuptools - -setuptools.setup( - name='PyOuroboros', - version='0.23.0', - url='https://ouroboros.rocks', - keywords='ouroboros IPC subsystem', - author='Dimitri Staessens', - author_email='dimitri@ouroboros.rocks', - license='LGPLv2.1', - description='Python API for Ouroboros', - packages=[ - 'ouroboros' - ], - setup_requires=[ - "cffi>=1.0.0" - ], +import subprocess +import sys + +from setuptools import setup + + +def _get_ouroboros_version(): + try: + out = subprocess.check_output( + ['pkg-config', '--modversion', 'ouroboros-dev'], + stderr=subprocess.DEVNULL + ) + return out.decode().strip() + except (subprocess.CalledProcessError, FileNotFoundError): + sys.exit("ERROR: ouroboros-dev not found via pkg-config. " + "Is Ouroboros installed?") + + +def _check_build_version_compat(): + try: + from setuptools_scm import get_version + pyouro_ver = get_version(root='.', relative_to=__file__) + except Exception: + return # no SCM info, skip check + + ouro_ver = _get_ouroboros_version() + + # setuptools_scm: '0.23.1.dev3+g<hash>' or '0.23.0' + # pkg-config: '0.23.0' + # Compare major.minor only. + ouro_parts = ouro_ver.split('.') + pyouro_parts = pyouro_ver.split('.') + + if ouro_parts[0] != pyouro_parts[0] or ouro_parts[1] != pyouro_parts[1]: + sys.exit( + f"ERROR: Version mismatch: ouroboros {ouro_ver} " + f"vs pyouroboros {pyouro_ver} " + f"(major.minor must match)" + ) + + +_check_build_version_compat() + +setup( cffi_modules=[ "ffi/pyouroboros_build_dev.py:ffibuilder", "ffi/pyouroboros_build_irm.py:ffibuilder" ], - install_requires=[ - "cffi>=1.0.0" - ]) +) |
