-
Notifications
You must be signed in to change notification settings - Fork 3
183 lines (175 loc) · 6 KB
/
python.yml
File metadata and controls
183 lines (175 loc) · 6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# This file is autogenerated by maturin v1.8.3
# To update, run
#
# maturin generate-ci github
#
name: Wheels
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
release:
types: [published]
permissions:
contents: read
jobs:
linux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: aarch64
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Build wheels
uses: PyO3/maturin-action@v1
env:
READ_ONLY_GITHUB_TOKEN: ${{ secrets.PUBLIC_REPO_TOKEN }}
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter python3.11 python3.12 python3.13 python3.14 python3.13t python3.14t --auditwheel skip
working-directory: crackers_python
manylinux: manylinux2_28
docker-options: "--env READ_ONLY_GITHUB_TOKEN"
before-script-linux: |
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate
python3 gh_actions_setup.py ${{ matrix.platform.target }}
if [ -f .z3env ]; then
# shellcheck disable=SC1091
. .z3env
echo "✅ Loaded Z3_SYS_Z3_HEADER from .z3env"
else
echo "❌ .z3env not found. Please run the installer script first."
fi
export TARGET_SYSROOT=/usr/local/
# sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: crackers_python/dist
windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
python: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache Python dependencies
uses: actions/cache@v4
with:
path: |
C:\Users\runneradmin\AppData\Local\uv\cache
C:\ProgramData\chocolatey\lib\z3
key: windows-uv-${{ matrix.python }}-${{ hashFiles('crackers_python/pyproject.toml') }}
restore-keys: |
windows-uv-${{ matrix.python }}-
- name: Install Z3 using Chocolatey
run: |
choco install z3
- name: Set Z3 environment variables
run: |
# echo ::set-env name=Z3_SYS_Z3_HEADER::C:\ProgramData\chocolatey\lib\z3\tools\bin\include
# echo ::set-env name=Z3_LIBRARY_PATH_OVERRIDE::C:\ProgramData\chocolatey\lib\z3\tools\bin
- name: "Initialize python environment"
run: |
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "C:\Users\runneradmin\.local\bin;$env:Path"
uv.exe venv --python ${{matrix.python}}
. .venv\Scripts\Activate.ps1
uv.exe sync --no-install-project --project crackers_python --active
$env:Z3_SYS_Z3_HEADER = "$(python crackers_python/find_venv_library_path.py)\z3\include\z3.h"
$env:Z3_LIBRARY_PATH_OVERRIDE = "C:\ProgramData\chocolatey\lib\z3\tools\bin\bin"
uv.exe build --project crackers_python --wheel --out-dir dist
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}-${{matrix.python}}
path: dist
macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-14
target: aarch64
python: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: "Initialize python environment"
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv --python ${{matrix.python}}
source .venv/bin/activate
uv sync --no-install-project --project crackers_python --active
export Z3_SYS_Z3_HEADER=$(python crackers_python/find_venv_library_path.py)/z3/include/z3.h
uv build --project crackers_python --wheel --out-dir dist
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}-$${{matrix.python}}
path: dist/*.whl
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
working-directory: crackers_python
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: crackers_python/dist
release:
name: Release
runs-on: ubuntu-latest
if: ${{ (github.event_name == 'release' && startsWith(github.event.release.tag_name, 'crackers_python')) || github.event_name == 'workflow_dispatch' }}
needs: [linux, macos, sdist]
permissions:
# Use to sign the release artifacts
id-token: write
# Used to upload release artifacts
contents: write
# Used to generate artifact attestation
attestations: write
steps:
- uses: actions/download-artifact@v4
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v2
with:
subject-path: "wheels-*/*"
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
# MATURIN_REPOSITORY_URL: https://test.pypi.org/legacy/
with:
command: upload
args: --non-interactive --skip-existing wheels-*/*