|
46 | 46 | - uses: actions/setup-python@v5
|
47 | 47 | name: Install Python
|
48 | 48 | with:
|
49 |
| - python-version: 3.9 |
| 49 | + python-version: '3.10' |
50 | 50 |
|
51 | 51 | # Something changed somewhere that prevents the downloaded-at-build-time
|
52 | 52 | # licenses from being included in built wheels, so pre-download them so
|
@@ -100,7 +100,15 @@ jobs:
|
100 | 100 | CIBW_AFTER_BUILD: >-
|
101 | 101 | twine check {wheel} &&
|
102 | 102 | python {package}/ci/check_wheel_licenses.py {wheel}
|
103 |
| - CIBW_CONFIG_SETTINGS: setup-args="--vsenv" |
| 103 | + # On Windows, we explicitly request MSVC compilers (as GitHub Action runners have |
| 104 | + # MinGW on PATH that would be picked otherwise), switch to a static build for |
| 105 | + # runtimes, but use dynamic linking for `VCRUNTIME140.dll`, `VCRUNTIME140_1.dll`, |
| 106 | + # and the UCRT. This avoids requiring specific versions of `MSVCP140.dll`, while |
| 107 | + # keeping shared state with the rest of the Python process/extensions. |
| 108 | + CIBW_CONFIG_SETTINGS_WINDOWS: >- |
| 109 | + setup-args="--vsenv" |
| 110 | + setup-args="-Db_vscrt=mt" |
| 111 | + setup-args="-Dcpp_link_args=['ucrt.lib','vcruntime.lib','/nodefaultlib:libucrt.lib','/nodefaultlib:libvcruntime.lib']" |
104 | 112 | CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
|
105 | 113 | CIBW_SKIP: "*-musllinux_aarch64"
|
106 | 114 | CIBW_TEST_COMMAND: >-
|
@@ -134,46 +142,66 @@ jobs:
|
134 | 142 | name: cibw-sdist
|
135 | 143 | path: dist/
|
136 | 144 |
|
| 145 | + - name: Build wheels for CPython 3.13 |
| 146 | + uses: pypa/cibuildwheel@bd033a44476646b606efccdd5eed92d5ea1d77ad # v2.20.0 |
| 147 | + with: |
| 148 | + package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} |
| 149 | + env: |
| 150 | + CIBW_BUILD: "cp313-* cp313t-*" |
| 151 | + # No free-threading wheels for NumPy; musllinux skipped for main builds also. |
| 152 | + CIBW_SKIP: "cp313t-win_amd64 *-musllinux_aarch64" |
| 153 | + CIBW_BUILD_FRONTEND: |
| 154 | + "pip; args: --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" |
| 155 | + CIBW_FREE_THREADED_SUPPORT: true |
| 156 | + # No free-threading wheels available for aarch64 on Pillow. |
| 157 | + CIBW_TEST_SKIP: "cp313t-manylinux_aarch64" |
| 158 | + # We need pre-releases to get the nightly wheels. |
| 159 | + CIBW_BEFORE_TEST: >- |
| 160 | + pip install --pre |
| 161 | + --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple |
| 162 | + contourpy numpy pillow |
| 163 | + CIBW_ARCHS: ${{ matrix.cibw_archs }} |
| 164 | + |
137 | 165 | - name: Build wheels for CPython 3.12
|
138 |
| - uses: pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1 |
| 166 | + uses: pypa/cibuildwheel@bd033a44476646b606efccdd5eed92d5ea1d77ad # v2.20.0 |
139 | 167 | with:
|
140 | 168 | package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
|
141 | 169 | env:
|
142 | 170 | CIBW_BUILD: "cp312-*"
|
143 | 171 | CIBW_ARCHS: ${{ matrix.cibw_archs }}
|
144 | 172 |
|
145 | 173 | - name: Build wheels for CPython 3.11
|
146 |
| - uses: pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1 |
| 174 | + uses: pypa/cibuildwheel@bd033a44476646b606efccdd5eed92d5ea1d77ad # v2.20.0 |
147 | 175 | with:
|
148 | 176 | package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
|
149 | 177 | env:
|
150 | 178 | CIBW_BUILD: "cp311-*"
|
151 | 179 | CIBW_ARCHS: ${{ matrix.cibw_archs }}
|
152 | 180 |
|
153 | 181 | - name: Build wheels for CPython 3.10
|
154 |
| - uses: pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1 |
| 182 | + uses: pypa/cibuildwheel@bd033a44476646b606efccdd5eed92d5ea1d77ad # v2.20.0 |
155 | 183 | with:
|
156 | 184 | package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
|
157 | 185 | env:
|
158 | 186 | CIBW_BUILD: "cp310-*"
|
159 | 187 | CIBW_ARCHS: ${{ matrix.cibw_archs }}
|
160 | 188 |
|
161 |
| - - name: Build wheels for CPython 3.9 |
162 |
| - uses: pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1 |
163 |
| - with: |
164 |
| - package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }} |
165 |
| - env: |
166 |
| - CIBW_BUILD: "cp39-*" |
167 |
| - CIBW_ARCHS: ${{ matrix.cibw_archs }} |
168 |
| - |
169 | 189 | - name: Build wheels for PyPy
|
170 |
| - uses: pypa/cibuildwheel@932529cab190fafca8c735a551657247fa8f8eaf # v2.19.1 |
| 190 | + uses: pypa/cibuildwheel@bd033a44476646b606efccdd5eed92d5ea1d77ad # v2.20.0 |
171 | 191 | with:
|
172 | 192 | package-dir: dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
|
173 | 193 | env:
|
174 |
| - CIBW_BUILD: "pp39-*" |
| 194 | + CIBW_BUILD: "pp310-*" |
175 | 195 | CIBW_ARCHS: ${{ matrix.cibw_archs }}
|
176 |
| - if: matrix.cibw_archs != 'aarch64' |
| 196 | + # Work around for https://github.com/pypa/setuptools/issues/4571 |
| 197 | + # This can be removed once kiwisolver has wheels for PyPy 3.10 |
| 198 | + # https://github.com/nucleic/kiwi/pull/182 |
| 199 | + CIBW_BEFORE_TEST: >- |
| 200 | + export PIP_CONSTRAINT=pypy-constraint.txt && |
| 201 | + echo "setuptools!=72.2.0" > $PIP_CONSTRAINT && |
| 202 | + pip install kiwisolver && |
| 203 | + unset PIP_CONSTRAINT |
| 204 | + if: matrix.cibw_archs != 'aarch64' && matrix.os != 'windows-latest' |
177 | 205 |
|
178 | 206 | - uses: actions/upload-artifact@v4
|
179 | 207 | with:
|
@@ -203,7 +231,7 @@ jobs:
|
203 | 231 | run: ls dist
|
204 | 232 |
|
205 | 233 | - name: Generate artifact attestation for sdist and wheel
|
206 |
| - uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 |
| 234 | + uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 |
207 | 235 | with:
|
208 | 236 | subject-path: dist/matplotlib-*
|
209 | 237 |
|
|
0 commit comments