-
-
Notifications
You must be signed in to change notification settings - Fork 552
157 lines (146 loc) Β· 5.12 KB
/
pypi.yml
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
name: pypi
on:
workflow_dispatch:
push:
tags:
- "*"
jobs:
build_linux_wheels:
name: Build ${{ matrix.linux_tag }} wheels with cp${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
matrix:
linux_tag: ["manylinux", "musllinux"]
python-version: ["310", "311", "312", "313"]
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Build wheels
uses: pypa/[email protected]
timeout-minutes: 720
env:
CIBW_BUILD: "cp${{ matrix.python-version }}-${{ matrix.linux_tag }}_*"
CIBW_ARCHS_LINUX: "x86_64 i686 aarch64"
CIBW_SKIP: "*-musllinux_i686"
CIBW_MANYLINUX_X86_64_IMAGE: "manylinux2014"
CIBW_MANYLINUX_I686_IMAGE: "manylinux2014"
CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux2014"
CIBW_MUSLLINUX_X86_64_IMAGE: "musllinux_1_1"
CIBW_MUSLLINUX_I686_IMAGE: "musllinux_1_1"
CIBW_MUSLLINUX_AARCH64_IMAGE: "musllinux_1_1"
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH"'
CIBW_ENVIRONMENT_LINUX: 'PATH="$HOME/.cargo/bin:$PATH" CARGO_NET_GIT_FETCH_WITH_CLI="true"'
CIBW_BEFORE_BUILD: >
rustup default nightly &&
rustup show
CIBW_BEFORE_BUILD_LINUX: >
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=nightly --profile=minimal -y &&
rustup show
- uses: actions/upload-artifact@v4
with:
name: artifact-${{ matrix.linux_tag }}-cp${{ matrix.python-version }}
path: ./wheelhouse/*.whl
build_macos_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, macos-14]
steps:
- uses: actions/checkout@v4
- name: Set up rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- run: rustup target add aarch64-apple-darwin && rustup target add x86_64-apple-darwin
- name: Build wheels
uses: pypa/[email protected]
timeout-minutes: 720
env:
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*"
CIBW_ARCHS_MACOS: "universal2"
# arm64 and universal2 wheels are tagged with x86_64 because there's an issue with Poetry
# More information here: https://cibuildwheel.readthedocs.io/en/stable/faq/#how-to-cross-compile (CTRL + F "poetry")
# https://github.com/pypa/cibuildwheel/issues/1415
CIBW_REPAIR_WHEEL_COMMAND_MACOS: >
ls {dest_dir} &&
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} &&
for file in {dest_dir}/*.whl ; do mv $file ${file//x86_64/universal2} ; done
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH"'
CIBW_BEFORE_BUILD: >
rustup default nightly &&
rustup show
- uses: actions/upload-artifact@v4
with:
name: artifact-${{ matrix.os }}
path: ./wheelhouse/*.whl
build_windows_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-2019, windows-2022]
steps:
- uses: actions/checkout@v4
- name: Set up rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- run: rustup toolchain install stable-i686-pc-windows-msvc
- run: rustup target add i686-pc-windows-msvc
- name: Build wheels
uses: pypa/[email protected]
timeout-minutes: 720
env:
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*"
CIBW_ARCHS_WINDOWS: "AMD64 x86"
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH"'
CIBW_ENVIRONMENT_WINDOWS: 'PATH="$UserProfile\.cargo\bin;$PATH"'
CIBW_BEFORE_BUILD: >
rustup default nightly &&
rustup show
- uses: actions/upload-artifact@v4
with:
name: artifact-${{ matrix.os }}
path: ./wheelhouse/*.whl
build_sdist:
name: Build source distribution
# Can't use more than 12 jobs in parallel
needs: [build_macos_wheels]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build River
uses: ./.github/actions/install-env
with:
python-version: "3.13"
- name: Build dist
run: poetry build
- uses: actions/upload-artifact@v4
with:
name: artifact-sdist
path: dist/*.tar.gz
merge_artifacts:
runs-on: ubuntu-latest
needs: [build_linux_wheels, build_macos_wheels, build_windows_wheels, build_sdist]
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: artifact
pattern: artifact-*
upload_pypi:
needs: merge_artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
name: artifact
path: dist
- uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}