Setuptools zig build
A setuptools extension, for building cpython extensions with zig build, enabling simple source-only pip distributions that compile at install time. This is my take on deinventing the wheel
check out zig-zon for a full example.
Example
Your project needs to have:
setup.pyto configure this setuptools extension to run during python's wheel buildbuild.zigto configure the build of the shared librarybuild.zig.zonoptionally - to specify zig dependencies
from setuptools import Extension
from setuptools import setup
setup(
name='zig-zon',
packages=[],
zig_build={
# stores zig's depdendency pacakges in python's sdist. This requires a call to
# CPython.addSdistList(b); in `build.zig`
# If set to False, potential dependencies will be downloaded by zig instead.
"sdist": True,
# tries to import 'ziglang' to get a zig compiler when building wheel
"use_ziglang_python_package": True,
# passes -Doptimize= to zig build
"optimize": "ReleaseSmall",
# passes -Dversion=<pip package version> to zig build
"pass_version_option": True,
# extra arguments to zig build. In this case we pass the `install` and `test` steps
'extra_args': [
"install", "test",
],
},
# Names of the libraries your `build.zig` will produce, and this module will install
ext_modules=[Extension('zig_zon', [])],
)
References
@ruamel and setuptools-zig
Release files for setuptools-zig-build 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| setuptools_zig_build-0.3.1.tar.gz | 4.8 kB | Details |
Release files / setuptools_zig_build-0.3.1.tar.gz
| Download URL | setuptools_zig_build-0.3.1.tar.gz |
|---|---|
| Size | 4.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8312aa6b3ae704f5e229b5a4e65086c57199884ec77bb191b00ffd3dc5d071fe
|
|
BLAKE2b-256 checksum How to use checksums |
d00a5b7dfc5122f204729bc1b0cd23fa6b0c0978aa016fd0a153b0db189f0a7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|