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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file setuptools_zig_build-0.3.1.tar.gz.
File metadata
- Download URL: setuptools_zig_build-0.3.1.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8312aa6b3ae704f5e229b5a4e65086c57199884ec77bb191b00ffd3dc5d071fe
|
|
| MD5 |
566403da63e6cbf49c9f5e93901c7bf1
|
|
| BLAKE2b-256 |
d00a5b7dfc5122f204729bc1b0cd23fa6b0c0978aa016fd0a153b0db189f0a7c
|