Fixed Windows build, cleaned up messages during build, using SCM version numbering, added ruff.
This commit is contained in:
+2
-2
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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]
|
||||||
|
|||||||
@@ -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__":
|
||||||
|
|||||||
Reference in New Issue
Block a user