setuptools-zig-build 0.1.2__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/PKG-INFO +32 -2
- setuptools_zig_build-0.2.0/README.md +38 -0
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setup.py +1 -1
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/PKG-INFO +32 -2
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.py +68 -9
- setuptools_zig_build-0.1.2/README.md +0 -8
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/LICENSE +0 -0
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setup.cfg +0 -0
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/SOURCES.txt +0 -0
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/dependency_links.txt +0 -0
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/entry_points.txt +0 -0
- {setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: setuptools_zig_build
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: A setuptools extension, for building cpython extensions with zig build
|
|
5
5
|
Home-page: https://codeberg.org/dasimmet/setuptools-zig-build
|
|
6
6
|
Author-email: dasimmet@gmail.com
|
|
@@ -31,7 +31,37 @@ Dynamic: summary
|
|
|
31
31
|
# Setuptools zig build
|
|
32
32
|
|
|
33
33
|
A setuptools extension, for building cpython extensions with zig build,
|
|
34
|
-
enabling source-only pip distributions that compile at install time.
|
|
34
|
+
enabling simple source-only pip distributions that compile at install time.
|
|
35
|
+
|
|
36
|
+
check out [zig-zon](https://gitlab.com/dasimmet/python-zig-zon) for an example
|
|
37
|
+
|
|
38
|
+
## Example `setup.py`
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from setuptools import Extension
|
|
42
|
+
from setuptools import setup
|
|
43
|
+
|
|
44
|
+
setup(
|
|
45
|
+
name='zig-zon',
|
|
46
|
+
packages=[],
|
|
47
|
+
zig_build={
|
|
48
|
+
# stores zig's depdendencies in python's sdist. requires a call to
|
|
49
|
+
# CPython.addSdistList(b); in `build.zig`
|
|
50
|
+
"sdist": True,
|
|
51
|
+
# tries to import 'ziglang' to get a zig compiler when building wheel
|
|
52
|
+
"use_ziglang_python_package": True,
|
|
53
|
+
# passes -Doptimize= to zig build
|
|
54
|
+
"optimize": "ReleaseSmall",
|
|
55
|
+
# passes -Dversion=<pip package version> to zig build
|
|
56
|
+
"pass_version_option": True,
|
|
57
|
+
# extra arguments to zig build
|
|
58
|
+
'extra_args': [
|
|
59
|
+
"install", "test",
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
ext_modules=[Extension('zig_zon', [])],
|
|
63
|
+
)
|
|
64
|
+
```
|
|
35
65
|
|
|
36
66
|
## References
|
|
37
67
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Setuptools zig build
|
|
2
|
+
|
|
3
|
+
A setuptools extension, for building cpython extensions with zig build,
|
|
4
|
+
enabling simple source-only pip distributions that compile at install time.
|
|
5
|
+
|
|
6
|
+
check out [zig-zon](https://gitlab.com/dasimmet/python-zig-zon) for an example
|
|
7
|
+
|
|
8
|
+
## Example `setup.py`
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
from setuptools import Extension
|
|
12
|
+
from setuptools import setup
|
|
13
|
+
|
|
14
|
+
setup(
|
|
15
|
+
name='zig-zon',
|
|
16
|
+
packages=[],
|
|
17
|
+
zig_build={
|
|
18
|
+
# stores zig's depdendencies in python's sdist. requires a call to
|
|
19
|
+
# CPython.addSdistList(b); in `build.zig`
|
|
20
|
+
"sdist": True,
|
|
21
|
+
# tries to import 'ziglang' to get a zig compiler when building wheel
|
|
22
|
+
"use_ziglang_python_package": True,
|
|
23
|
+
# passes -Doptimize= to zig build
|
|
24
|
+
"optimize": "ReleaseSmall",
|
|
25
|
+
# passes -Dversion=<pip package version> to zig build
|
|
26
|
+
"pass_version_option": True,
|
|
27
|
+
# extra arguments to zig build
|
|
28
|
+
'extra_args': [
|
|
29
|
+
"install", "test",
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
ext_modules=[Extension('zig_zon', [])],
|
|
33
|
+
)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## References
|
|
37
|
+
|
|
38
|
+
@ruamel and [setuptools-zig](https://sourceforge.net/p/setuptools-zig)
|
|
@@ -2,7 +2,7 @@ from setuptools import setup
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name='setuptools_zig_build',
|
|
5
|
-
version="0.
|
|
5
|
+
version="0.2.0",
|
|
6
6
|
author_email='dasimmet@gmail.com',
|
|
7
7
|
description='A setuptools extension, for building cpython extensions with zig build',
|
|
8
8
|
long_description=open("README.md").read(),
|
{setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: setuptools_zig_build
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: A setuptools extension, for building cpython extensions with zig build
|
|
5
5
|
Home-page: https://codeberg.org/dasimmet/setuptools-zig-build
|
|
6
6
|
Author-email: dasimmet@gmail.com
|
|
@@ -31,7 +31,37 @@ Dynamic: summary
|
|
|
31
31
|
# Setuptools zig build
|
|
32
32
|
|
|
33
33
|
A setuptools extension, for building cpython extensions with zig build,
|
|
34
|
-
enabling source-only pip distributions that compile at install time.
|
|
34
|
+
enabling simple source-only pip distributions that compile at install time.
|
|
35
|
+
|
|
36
|
+
check out [zig-zon](https://gitlab.com/dasimmet/python-zig-zon) for an example
|
|
37
|
+
|
|
38
|
+
## Example `setup.py`
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from setuptools import Extension
|
|
42
|
+
from setuptools import setup
|
|
43
|
+
|
|
44
|
+
setup(
|
|
45
|
+
name='zig-zon',
|
|
46
|
+
packages=[],
|
|
47
|
+
zig_build={
|
|
48
|
+
# stores zig's depdendencies in python's sdist. requires a call to
|
|
49
|
+
# CPython.addSdistList(b); in `build.zig`
|
|
50
|
+
"sdist": True,
|
|
51
|
+
# tries to import 'ziglang' to get a zig compiler when building wheel
|
|
52
|
+
"use_ziglang_python_package": True,
|
|
53
|
+
# passes -Doptimize= to zig build
|
|
54
|
+
"optimize": "ReleaseSmall",
|
|
55
|
+
# passes -Dversion=<pip package version> to zig build
|
|
56
|
+
"pass_version_option": True,
|
|
57
|
+
# extra arguments to zig build
|
|
58
|
+
'extra_args': [
|
|
59
|
+
"install", "test",
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
ext_modules=[Extension('zig_zon', [])],
|
|
63
|
+
)
|
|
64
|
+
```
|
|
35
65
|
|
|
36
66
|
## References
|
|
37
67
|
|
|
@@ -9,6 +9,7 @@ import shlex
|
|
|
9
9
|
from setuptools import Extension
|
|
10
10
|
from distutils.dist import Distribution
|
|
11
11
|
from setuptools.command.build_ext import build_ext as SetupToolsBuildExt
|
|
12
|
+
from setuptools.command.sdist import sdist as SetupToolsSdist
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
class ZigCompilerError(Exception):
|
|
@@ -28,14 +29,11 @@ class ZigBuild:
|
|
|
28
29
|
use_ziglang_python_package: bool = False,
|
|
29
30
|
optimize: str = "ReleaseSafe",
|
|
30
31
|
pass_version_option: bool = False,
|
|
31
|
-
test_step: str = None,
|
|
32
32
|
extra_args: list = [],
|
|
33
|
+
sdist: bool = False,
|
|
33
34
|
):
|
|
34
35
|
assert isinstance(use_ziglang_python_package, bool)
|
|
35
36
|
self.use_ziglang_python_package = use_ziglang_python_package
|
|
36
|
-
assert test_step == None or (isinstance(
|
|
37
|
-
test_step, str) and not test_step.startswith('-'))
|
|
38
|
-
self.test_step = test_step
|
|
39
37
|
assert optimize == None or (isinstance(
|
|
40
38
|
optimize, str) and optimize in self.OPTIMIZE)
|
|
41
39
|
self.optimize = optimize
|
|
@@ -45,6 +43,8 @@ class ZigBuild:
|
|
|
45
43
|
for arg in extra_args:
|
|
46
44
|
assert isinstance(arg, str)
|
|
47
45
|
self.extra_args = extra_args
|
|
46
|
+
assert isinstance(sdist, bool)
|
|
47
|
+
self.sdist = sdist
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
class BuildExt(SetupToolsBuildExt):
|
|
@@ -82,12 +82,9 @@ class BuildExt(SetupToolsBuildExt):
|
|
|
82
82
|
zig_exe = os.path.join(
|
|
83
83
|
os.path.dirname(ziglang.__file__), "zig")
|
|
84
84
|
|
|
85
|
-
bld_cmd = [zig_exe, 'build',
|
|
85
|
+
bld_cmd = [zig_exe, 'build',
|
|
86
86
|
'-Dpython={}'.format(sys.executable), '--prefix', str(zig_out.absolute())]
|
|
87
87
|
|
|
88
|
-
if self._zig_value.test_step != None:
|
|
89
|
-
bld_cmd.append(self._zig_value.test_step)
|
|
90
|
-
|
|
91
88
|
if self._zig_value.optimize != None:
|
|
92
89
|
bld_cmd.append(
|
|
93
90
|
'-Doptimize={}'.format(self._zig_value.optimize))
|
|
@@ -98,6 +95,15 @@ class BuildExt(SetupToolsBuildExt):
|
|
|
98
95
|
|
|
99
96
|
bld_cmd.extend(self._zig_value.extra_args)
|
|
100
97
|
|
|
98
|
+
if self._zig_value.sdist:
|
|
99
|
+
if os.path.isdir(".zig-dependencies"):
|
|
100
|
+
for it in os.listdir(".zig-dependencies"):
|
|
101
|
+
dep_dir = os.path.join(".zig-dependencies", it)
|
|
102
|
+
if os.path.isdir(".zig-dependencies"):
|
|
103
|
+
fetch_cmd = [zig_exe, "fetch", dep_dir]
|
|
104
|
+
print("cmd: {}".format(shlex.join(fetch_cmd)))
|
|
105
|
+
run(fetch_cmd, check=True)
|
|
106
|
+
|
|
101
107
|
os.makedirs(self.build_temp, exist_ok=True)
|
|
102
108
|
print('\ncmd', shlex.join(bld_cmd))
|
|
103
109
|
sys.stdout.flush()
|
|
@@ -124,6 +130,56 @@ class BuildExt(SetupToolsBuildExt):
|
|
|
124
130
|
output.rename(target)
|
|
125
131
|
|
|
126
132
|
|
|
133
|
+
class Sdist(SetupToolsSdist):
|
|
134
|
+
def make_release_tree(self, base_dir, files) -> None:
|
|
135
|
+
import os
|
|
136
|
+
import json
|
|
137
|
+
self.zig_dep_sources = []
|
|
138
|
+
|
|
139
|
+
sdistlist_name = os.path.join(base_dir, 'sdistlist.json')
|
|
140
|
+
|
|
141
|
+
from subprocess import run
|
|
142
|
+
zig_exe = "zig"
|
|
143
|
+
try:
|
|
144
|
+
import ziglang
|
|
145
|
+
zig_exe = os.path.join(
|
|
146
|
+
os.path.dirname(ziglang.__file__), "zig")
|
|
147
|
+
except:
|
|
148
|
+
pass
|
|
149
|
+
|
|
150
|
+
cmd = [zig_exe, "build", "sdistlist", '--prefix', base_dir]
|
|
151
|
+
print("cmd:", cmd)
|
|
152
|
+
run(cmd, check=True)
|
|
153
|
+
import shutil
|
|
154
|
+
|
|
155
|
+
with open(sdistlist_name) as fd:
|
|
156
|
+
sdistlist = json.load(fd)
|
|
157
|
+
|
|
158
|
+
for deps in sdistlist['dependencies']:
|
|
159
|
+
src = os.path.join(sdistlist['global_cache_dir'], 'p', deps[1])
|
|
160
|
+
dst = os.path.join(base_dir, '.zig-dependencies', deps[1])
|
|
161
|
+
if not os.path.isdir(src):
|
|
162
|
+
print("dep not found:", deps[0], src)
|
|
163
|
+
continue
|
|
164
|
+
print("packaging zig dep:", deps[0], src)
|
|
165
|
+
for root, _, walk_files in os.walk(src):
|
|
166
|
+
if '.zig-cache' in root:
|
|
167
|
+
continue
|
|
168
|
+
rel_dir = os.path.relpath(root, src)
|
|
169
|
+
os.makedirs(os.path.join(dst, rel_dir), exist_ok=True)
|
|
170
|
+
for f in walk_files:
|
|
171
|
+
source_file = os.path.join(root, f)
|
|
172
|
+
rel_file = os.path.normpath(
|
|
173
|
+
os.path.join(rel_dir, f))
|
|
174
|
+
dest_file = os.path.normpath(
|
|
175
|
+
os.path.join(dst, rel_dir, f))
|
|
176
|
+
shutil.copyfile(source_file, dest_file)
|
|
177
|
+
self.zig_dep_sources.append(rel_file)
|
|
178
|
+
|
|
179
|
+
super().make_release_tree(base_dir, files)
|
|
180
|
+
files.extend(self.zig_dep_sources)
|
|
181
|
+
|
|
182
|
+
|
|
127
183
|
class ZigBuildExtension:
|
|
128
184
|
def __init__(self, value):
|
|
129
185
|
self._value = value
|
|
@@ -136,5 +192,8 @@ def setup_zig_build(dist, keyword, value):
|
|
|
136
192
|
'''our hook into setuptools '''
|
|
137
193
|
assert isinstance(dist, Distribution)
|
|
138
194
|
assert keyword == 'zig_build'
|
|
139
|
-
|
|
195
|
+
dist.cmdclass.get('build_ext')
|
|
140
196
|
dist.cmdclass['build_ext'] = ZigBuildExtension(value)
|
|
197
|
+
if 'sdist' in value and value['sdist'] == True:
|
|
198
|
+
dist.cmdclass.get('sdist')
|
|
199
|
+
dist.cmdclass['sdist'] = Sdist
|
|
File without changes
|
|
File without changes
|
{setuptools_zig_build-0.1.2 → setuptools_zig_build-0.2.0}/setuptools_zig_build.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|