From 7d043001b956fb80116cf8eedcca1d5aaf2edbd4 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Sat, 7 Mar 2026 22:46:56 +0100 Subject: build: Use git tags for versioning 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. --- setup.py | 67 +++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 22 deletions(-) (limited to 'setup.py') diff --git a/setup.py b/setup.py index a22b7bd..cdf1f55 100755 --- a/setup.py +++ b/setup.py @@ -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' 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" - ]) +) -- cgit v1.2.3