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

This commit is contained in:
Leo Vasanko
2025-11-12 10:59:21 -06:00
parent 88efc4cabc
commit 39e5f00f42
4 changed files with 23 additions and 34 deletions
+2 -2
View File
@@ -4,8 +4,8 @@
/dist /dist
/build /build
/pyaegis/build /pyaegis/build
/pyaegis/_aegis.*.so /pyaegis/_aegis*.so
/pyaegis/_aegis.*.pyd /pyaegis/_aegis*.pyd
__pycache__ __pycache__
!.gitignore !.gitignore
!.gitmodules !.gitmodules
-2
View File
@@ -4,10 +4,8 @@ include tools/build_backend.py
include BUILD.md include BUILD.md
include README.md include README.md
recursive-include libaegis *.c *.h *.zig *.zon recursive-include libaegis *.c *.h *.zig *.zon
include libaegis/CMakeLists.txt
include libaegis/LICENSE include libaegis/LICENSE
include libaegis/README.md include libaegis/README.md
recursive-include libaegis/cmake *.cmake *.cmake.in
graft libaegis/src graft libaegis/src
include libaegis/build.zig include libaegis/build.zig
include libaegis/build.zig.zon include libaegis/build.zig.zon
+6 -2
View File
@@ -1,11 +1,11 @@
[build-system] [build-system]
requires = ["setuptools>=61.0", "cffi>=2.0.0"] requires = ["setuptools>=61.0", "cffi>=2.0.0", "setuptools-scm>=8.0"]
build-backend = "build_backend" build-backend = "build_backend"
backend-path = ["tools"] backend-path = ["tools"]
[project] [project]
name = "pyaegis" name = "pyaegis"
version = "0.3.1" dynamic = ["version"]
description = "Python bindings for libaegis" description = "Python bindings for libaegis"
requires-python = ">=3.10" requires-python = ">=3.10"
classifiers = [ classifiers = [
@@ -25,7 +25,9 @@ Homepage = "https://github.com/LeoVasanko/pyaegis"
[dependency-groups] [dependency-groups]
dev = [ dev = [
"pytest>=8.4.2", "pytest>=8.4.2",
"ruff>=0.14.4",
"setuptools>=80.9.0", "setuptools>=80.9.0",
"setuptools-scm>=9.2.2",
] ]
[tool.setuptools] [tool.setuptools]
@@ -33,3 +35,5 @@ packages = ["pyaegis"]
[tool.setuptools.package-data] [tool.setuptools.package-data]
pyaegis = ["*.h", "*.so", "*.pyd"] pyaegis = ["*.h", "*.so", "*.pyd"]
[tool.setuptools_scm]
+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 pathlib import Path
from cffi import FFI from cffi import FFI
from setuptools import setup 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(): # Include directory for headers
"""Locate libaegis.a - check common locations.""" libaegis_include = Path("libaegis/src/include")
libaegis_paths = [ if not libaegis_include.exists():
Path("libaegis/zig-out/lib/libaegis.a"), # Zig build output (repo build) raise RuntimeError(f"libaegis include directory not found at {libaegis_include}")
Path("libaegis/build/libaegis.a"), # CMake build output (repo build) include_dirs = [str(libaegis_include)]
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
# Read the CDEF header # Read the CDEF header
cdef_path = Path(__file__).parent / "pyaegis" / "aegis_cdef.h" 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 = FFI()
ffibuilder.cdef(cdef_content) 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 # Set the source
ffibuilder.set_source( ffibuilder.set_source(
"pyaegis._aegis", # module name "pyaegis._aegis", # module name
@@ -54,7 +41,7 @@ ffibuilder.set_source(
#include "aegis256x4.h" #include "aegis256x4.h"
""", """,
include_dirs=include_dirs, include_dirs=include_dirs,
extra_objects=[libaegis_static] if libaegis_static else [], extra_objects=[libaegis_static],
) )
if __name__ == "__main__": if __name__ == "__main__":