aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-03-07 22:46:56 +0100
committerDimitri Staessens <dimitri@ouroboros.rocks>2026-03-08 14:24:30 +0100
commit7d043001b956fb80116cf8eedcca1d5aaf2edbd4 (patch)
treed2f925b1f3085cabd0256949a454d15075a8dde8 /setup.py
parent7a4c37e8b673328dda59cec11ab9dce66c22a312 (diff)
downloadpyouroboros-0.23.0.tar.gz
pyouroboros-0.23.0.zip
build: Use git tags for versioningHEAD0.23.0master
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-xsetup.py67
1 files changed, 45 insertions, 22 deletions
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<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"
- ])
+)