Skip to content

Commit 13b7b27

Browse files
committed
un-screw free-threading with WINPYARCHDET, add 3.15
1 parent bf90c20 commit 13b7b27

File tree

1 file changed

+70
-15
lines changed

1 file changed

+70
-15
lines changed

.github/workflows/github_workflows_build-2025_05.yml

Lines changed: 70 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,20 @@ name: Build WinPython for 2025-05 Cycle
55
# 2025-08-25a: will use manual uploaded free-threading, as astral doesn't provide
66
# 2025-08-25b: move up all parameters
77
# 2025-09-07: one single workflow to reduce code duplication
8+
# 2025-11-30: centralize links in one place, add 3.15, classify as b4
89

910
on:
1011
workflow_dispatch:
1112
inputs:
1213
python_version:
13-
description: 'Python version to build (3.13 or 3.14)'
14+
description: 'Python version to build (3.13, 3.14 or 3.15)'
1415
required: true
1516
default: '3.14'
1617
type: choice
1718
options:
1819
- '3.13'
1920
- '3.14'
21+
- '3.15'
2022

2123
jobs:
2224
build-winpython:
@@ -29,98 +31,133 @@ jobs:
2931
- name: "dot"
3032
REQUIREMENTS_313: "winpython\\portable\\cycle_2025_05\\requir.64-3_13_8_0dotb3.txt"
3133
REQUIREMENTS_314: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2dotb3.txt"
34+
REQUIREMENTS_315: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2dotb3.txt"
3235
REQUIREMENTS_WHL_313: ""
3336
REQUIREMENTS_WHL_314: ""
37+
REQUIREMENTS_WHL_315: ""
3438
ZIP: "1"
3539
SEVEN_Z: "0"
3640
EXE: "1"
3741
PANDOC: "0"
3842
ARTIFACT_NAME_313: "publish_313dot"
3943
ARTIFACT_NAME_314: "publish_314dot"
44+
ARTIFACT_NAME_315: "publish_315dot"
4045
WINPYARCH: "64"
46+
WINPYARCHDET: "64"
4147
WINPYVERSION_313: "313"
4248
WINPYVERSION_314: "314"
49+
WINPYVERSION_315: "315"
4350
WINPYVER2_313: "3.13.8.0"
4451
WINPYVER2_314: "3.14.0.2"
45-
my_release_level: "b3"
52+
WINPYVER2_315: "3.15.0.0"
53+
my_release_level: "b4"
4654
build_location_313: "WPy64-31380"
4755
build_location_314: "WPy64-31402"
56+
build_location_315: "WPy64-31500"
4857
- name: "slim"
4958
REQUIREMENTS_313: "winpython\\portable\\cycle_2025_05\\requir.64-3_13_8_0slimb3.txt"
5059
REQUIREMENTS_314: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2slimb3.txt"
60+
REQUIREMENTS_315: ""
5161
REQUIREMENTS_WHL_313: ""
5262
REQUIREMENTS_WHL_314: ""
63+
REQUIREMENTS_WHL_315: ""
5364
ZIP: "0"
5465
SEVEN_Z: "1"
5566
EXE: "1"
5667
PANDOC: "1"
5768
ARTIFACT_NAME_313: "publish_313slim"
5869
ARTIFACT_NAME_314: "publish_314slim"
70+
ARTIFACT_NAME_315: ""
5971
WINPYARCH: "64"
72+
WINPYARCHDET: "64"
6073
WINPYVERSION_313: "313"
6174
WINPYVERSION_314: "314"
75+
WINPYVERSION_315: ""
6276
WINPYVER2_313: "3.13.8.0"
6377
WINPYVER2_314: "3.14.0.2"
64-
my_release_level: "b3"
78+
WINPYVER2_315: ""
79+
my_release_level: "b4"
6580
build_location_313: "WPy64-31380"
6681
build_location_314: "WPy64-31402"
82+
build_location_315: ""
6783
- name: "whl"
6884
REQUIREMENTS_313: "winpython\\portable\\cycle_2025_05\\requir.64-3_13_8_0dotb3.txt"
6985
REQUIREMENTS_314: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2dotb3.txt"
86+
REQUIREMENTS_315: ""
7087
REQUIREMENTS_WHL_313: "winpython\\portable\\cycle_2025_05\\requir.64-3_13_8_0whlb3_wheels.txt"
7188
REQUIREMENTS_WHL_314: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2whlb3_wheels.txt"
89+
REQUIREMENTS_WHL_315: ""
7290
ZIP: "0"
7391
SEVEN_Z: "1"
7492
EXE: "0"
7593
PANDOC: "0"
7694
ARTIFACT_NAME_313: "publish_313whl"
7795
ARTIFACT_NAME_314: "publish_314whl"
96+
ARTIFACT_NAME_315: ""
7897
WINPYARCH: "64"
98+
WINPYARCHDET: "64"
7999
WINPYVERSION_313: "313"
80100
WINPYVERSION_314: "314"
101+
WINPYVERSION_315: ""
81102
WINPYVER2_313: "3.13.8.0"
82103
WINPYVER2_314: "3.14.0.2"
83-
my_release_level: "b3"
104+
WINPYVER2_315: ""
105+
my_release_level: "b4"
84106
build_location_313: "WPy64-31380"
85107
build_location_314: "WPy64-31402"
108+
build_location_315: ""
86109
- name: "free"
87110
REQUIREMENTS_313: ""
88111
REQUIREMENTS_314: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2freeb3.txt"
112+
REQUIREMENTS_315: ""
89113
REQUIREMENTS_WHL_313: ""
90114
REQUIREMENTS_WHL_314: ""
115+
REQUIREMENTS_WHL_315: ""
91116
ZIP: "1"
92117
SEVEN_Z: "0"
93118
EXE: "1"
94119
PANDOC: "0"
95120
ARTIFACT_NAME_313: ""
96121
ARTIFACT_NAME_314: "publish_314free"
122+
ARTIFACT_NAME_315: ""
97123
WINPYARCH: "64"
124+
WINPYARCHDET: "64F"
98125
WINPYVERSION_313: ""
99126
WINPYVERSION_314: "314"
127+
WINPYVERSION_315: ""
100128
WINPYVER2_313: ""
101129
WINPYVER2_314: "3.14.0.2"
102-
my_release_level: "b3"
130+
WINPYVER2_315: ""
131+
my_release_level: "b4"
103132
build_location_313: ""
104133
build_location_314: "WPy64-31402"
134+
build_location_315: ""
105135
- name: "slimf"
106136
REQUIREMENTS_313: ""
107137
REQUIREMENTS_314: "winpython\\portable\\cycle_2025_05\\requir.64-3_14_0_2slimfb3.txt"
138+
REQUIREMENTS_315: ""
108139
REQUIREMENTS_WHL_313: ""
109140
REQUIREMENTS_WHL_314: ""
141+
REQUIREMENTS_WHL_315: ""
110142
ZIP: "1"
111143
SEVEN_Z: "0"
112144
EXE: "1"
113145
PANDOC: "0"
114146
ARTIFACT_NAME_313: ""
115147
ARTIFACT_NAME_314: "publish_314slimf"
148+
ARTIFACT_NAME_315: ""
116149
WINPYARCH: "64"
150+
WINPYARCHDET: "64F"
117151
WINPYVERSION_313: ""
118152
WINPYVERSION_314: "314"
153+
WINPYVERSION_315: ""
119154
WINPYVER2_313: ""
120155
WINPYVER2_314: "3.14.0.2"
121-
my_release_level: "b3"
156+
WINPYVER2_315: ""
157+
my_release_level: "b4"
122158
build_location_313: ""
123159
build_location_314: "WPy64-31402"
160+
build_location_315: ""
124161

125162
steps:
126163
- name: Checkout repository
@@ -152,8 +189,19 @@ jobs:
152189
echo "build_location=${{ matrix.flavor.build_location_314 }}" >> $GITHUB_ENV
153190
echo "destwheelhouse=${{ matrix.flavor.build_location_314 }}\\wheelhouse\\included.wheels" >> $GITHUB_ENV
154191
echo "WINPYVER=${{ matrix.flavor.WINPYVER2_314 }}${{ matrix.flavor.name }}${{ matrix.flavor.my_release_level }}" >> $GITHUB_ENV
155-
fi
192+
elif [ "$PYTHON_VERSION" = "3.15" ]; then echo "WINPYrequirements=${{ matrix.flavor.REQUIREMENTS_315 }}" >> $GITHUB_ENV
193+
echo "WINPYrequirementswhl=${{ matrix.flavor.REQUIREMENTS_WHL_315 }}" >> $GITHUB_ENV
194+
echo "ARTIFACT_NAME=${{ matrix.flavor.ARTIFACT_NAME_315 }}" >> $GITHUB_ENV
195+
echo "WINPYVERSION=${{ matrix.flavor.WINPYVERSION_315 }}" >> $GITHUB_ENV
196+
echo "WINPYVER2=${{ matrix.flavor.WINPYVER2_315 }}" >> $GITHUB_ENV
197+
echo "build_location=${{ matrix.flavor.build_location_315 }}" >> $GITHUB_ENV
198+
echo "destwheelhouse=${{ matrix.flavor.build_location_315 }}\\wheelhouse\\included.wheels" >> $GITHUB_ENV
199+
echo "WINPYVER=${{ matrix.flavor.WINPYVER2_315 }}${{ matrix.flavor.name }}${{ matrix.flavor.my_release_level }}" >> $GITHUB_ENV
200+
fi
201+
202+
# write common flavor env vars
156203
echo "WINPYARCH=$WINPYARCH" >> $GITHUB_ENV
204+
echo "WINPYARCHDET=$WINPYARCHDET" >> $GITHUB_ENV
157205
echo "WINPYFLAVOR=$FLAVOR" >> $GITHUB_ENV
158206
echo "WINPYZIP=${{ matrix.flavor.ZIP }}" >> $GITHUB_ENV
159207
echo "WINPY7Z=${{ matrix.flavor.SEVEN_Z }}" >> $GITHUB_ENV
@@ -168,25 +216,31 @@ jobs:
168216
169217
# Centralized mapping of python binaries and SHAs by version and arch.
170218
# NOTE: fill the 3.15 URLs and SHA values when available.
171-
# 3.13 x64 (example)
172-
if [ "$PYTHON_VERSION" = "3.13" ] && [ "$WINPYARCH" = "64" ]; then
219+
# 3.13 x64 (GIL)
220+
if [ "$PYTHON_VERSION" = "3.13" ] && [ "$WINPYARCHDET" = "64" ]; then
173221
echo "python_source=https://github.com/astral-sh/python-build-standalone/releases/download/20251031/cpython-3.13.9+20251031-x86_64-pc-windows-msvc-install_only_stripped.tar.gz" >> $GITHUB_ENV
174222
echo "python_sha256=3cdf2ad27fdeea2592b63e5a658aa65733b028a55332fa1aa27be4ce8aef96c0" >> $GITHUB_ENV
175223
fi
176224
177-
# 3.14 x64 (existing)
178-
if [ "$PYTHON_VERSION" = "3.14" ] && [ "$WINPYARCH" = "64" ]; then
225+
# 3.14 x64 (GIL)
226+
if [ "$PYTHON_VERSION" = "3.14" ] && [ "$WINPYARCHDET" = "64" ]; then
179227
echo "python_source=https://github.com/astral-sh/python-build-standalone/releases/download/20251031/cpython-3.14.0+20251031-x86_64-pc-windows-msvc-install_only_stripped.tar.gz" >> $GITHUB_ENV
180228
echo "python_sha256=a64800cbfbf1c384b9ac7eb5964a9a4c37537791e7ac80eb66b03ccb6f2c2e80" >> $GITHUB_ENV
181229
fi
182230
183-
# 3.14 i686 - user provided URL (example for preparing i686 builds).
231+
# 3.14 X64 (free-threading)
184232
# SHA not provided here: fill the correct SHA for security, otherwise the workflow will skip SHA check.
185-
if [ "$PYTHON_VERSION" = "3.14" ] && [ "$WINPYARCH" = "32" ]; then
186-
echo "python_source=https://github.com/astral-sh/python-build-standalone/releases/download/20251120/cpython-3.14.0+20251120-i686-pc-windows-msvc-install_only_stripped.tar.gz" >> $GITHUB_ENV
187-
echo "python_sha256=" >> $GITHUB_ENV
233+
if [ "$PYTHON_VERSION" = "3.14" ] && [ "$WINPYARCH" = "64F" ]; then
234+
echo "python_source=https://github.com/astral-sh/python-build-standalone/releases/download/20251031/cpython-3.14.0+20251031-x86_64-pc-windows-msvc-freethreaded+pgo-full.tar.zst" >> $GITHUB_ENV
235+
echo "python_sha256=b81de5fc9e783ea6dfcf1098c28a278c874999c71afbb0309f6a8b4276c769d0"
188236
fi
189237
238+
# 3.15 X64 (GIL)
239+
if [ "$PYTHON_VERSION" = "3.15" ] && [ "$WINPYARCHDET" = "64" ]; then
240+
# Example placeholders -- replace with real URLs and shas when available
241+
echo "python_source=https://github.com/astral-sh/python-build-standalone/releases/download/20251120/cpython-3.15.0a2+20251120-x86_64-pc-windows-msvc-install_only_stripped.tar.gz" >> $GITHUB_ENV
242+
echo "python_sha256=50e8d463a7838c36e01b053a8d01d5c58519e530098d52c7456660a76f3f35f7" >> $GITHUB_ENV
243+
fi
190244
191245
- name: See variables
192246
if: env.ARTIFACT_NAME != ''
@@ -207,6 +261,7 @@ jobs:
207261
Write-Output "build_location is $env:build_location"
208262
209263
Write-Output "WINPYARCH is $env:WINPYARCH"
264+
Write-Output "WINPYARCHDET is $env:WINPYARCHDET"
210265
Write-Output "WINPYZIP is $env:WINPYZIP"
211266
Write-Output "WINPY7Z is $env:WINPY7Z"
212267
Write-Output "WINPYEXE is $env:WINPYEXE"

0 commit comments

Comments
 (0)