Fixed Windows build, cleaned up messages during build, using SCM version numbering, added ruff.

This commit is contained in:
2025-11-12 22:59:21 +00:00
parent c6148806dd
commit 98ee4ab7b3
4 changed files with 23 additions and 34 deletions
+15 -28
View File
@@ -1,28 +1,24 @@
"""Setup script for pyaegis - builds CFFI extension linking to libaegis.a"""
"""Setup script for pyaegis - builds CFFI extension with libaegis C library."""
import os
import sys
from pathlib import Path
from cffi import FFI
from setuptools import setup
# Locate the static library (built by build_backend.py before this runs)
lib_name = "aegis.lib" if sys.platform == "win32" else "libaegis.a"
libaegis_static = Path("libaegis/zig-out/lib") / lib_name
if not libaegis_static.exists():
raise RuntimeError(f"libaegis static library not found at {libaegis_static}")
libaegis_static = str(libaegis_static.resolve())
def find_libaegis():
"""Locate libaegis.a - check common locations."""
libaegis_paths = [
Path("libaegis/zig-out/lib/libaegis.a"), # Zig build output (repo build)
Path("libaegis/build/libaegis.a"), # CMake build output (repo build)
Path("/usr/local/lib/libaegis.a"), # System install
Path("/usr/lib/libaegis.a"), # System install
]
for path in libaegis_paths:
if path.exists():
print(f"Found libaegis.a at: {path.resolve()}")
return str(path.resolve())
# Return None instead of raising - will be caught during build
return None
# Include directory for headers
libaegis_include = Path("libaegis/src/include")
if not libaegis_include.exists():
raise RuntimeError(f"libaegis include directory not found at {libaegis_include}")
include_dirs = [str(libaegis_include)]
# Read the CDEF header
cdef_path = Path(__file__).parent / "pyaegis" / "aegis_cdef.h"
@@ -32,15 +28,6 @@ cdef_content = cdef_path.read_text(encoding="utf-8")
ffibuilder = FFI()
ffibuilder.cdef(cdef_content)
# Include directory for headers
include_dirs = []
libaegis_include = Path("libaegis/src/include")
if libaegis_include.exists():
include_dirs.append(str(libaegis_include.resolve()))
# Try to find libaegis.a, but don't fail if not found (build backend will build it)
libaegis_static = find_libaegis()
# Set the source
ffibuilder.set_source(
"pyaegis._aegis", # module name
@@ -54,7 +41,7 @@ ffibuilder.set_source(
#include "aegis256x4.h"
""",
include_dirs=include_dirs,
extra_objects=[libaegis_static] if libaegis_static else [],
extra_objects=[libaegis_static],
)
if __name__ == "__main__":