@@ -40,135 +40,39 @@ jobs:
4040 name : pythonbuild
4141 path : target/release/pythonbuild
4242
43+ generate-matrix :
44+ runs-on : ubuntu-latest
45+ outputs :
46+ matrix : ${{ steps.set-matrix.outputs.matrix }}
47+ steps :
48+ - uses : actions/checkout@v4
49+
50+ - name : Set up Python
51+ uses : astral-sh/setup-uv@v4
52+
53+ - name : Get pull request labels
54+ id : get-labels
55+ run : |
56+ # Convert GitHub labels array to comma-separated string
57+ LABELS=$(echo '${{ toJson(github.event.pull_request.labels.*.name) }}' | jq -r 'join(",")')
58+ echo "labels=$LABELS" >> $GITHUB_OUTPUT
59+
60+ - name : Generate build matrix
61+ id : set-matrix
62+ run : |
63+ uv run ci-matrix.py --platform darwin --labels "${{ steps.get-labels.outputs.labels }}" > matrix.json && echo "matrix=$(cat matrix.json)" >> $GITHUB_OUTPUT
64+ # Display the matrix for debugging too
65+ cat matrix.json | jq
66+
4367 build :
44- strategy :
45- fail-fast : false
46- matrix :
47- build :
48- - target_triple : ' aarch64-apple-darwin'
49- py : ' cpython-3.9'
50- options : ' debug'
51- - target_triple : ' aarch64-apple-darwin'
52- py : ' cpython-3.9'
53- options : ' pgo'
54- - target_triple : ' aarch64-apple-darwin'
55- py : ' cpython-3.9'
56- options : ' pgo+lto'
57-
58- - target_triple : ' aarch64-apple-darwin'
59- py : ' cpython-3.10'
60- options : ' debug'
61- - target_triple : ' aarch64-apple-darwin'
62- py : ' cpython-3.10'
63- options : ' pgo'
64- - target_triple : ' aarch64-apple-darwin'
65- py : ' cpython-3.10'
66- options : ' pgo+lto'
67-
68- - target_triple : ' aarch64-apple-darwin'
69- py : ' cpython-3.11'
70- options : ' debug'
71- - target_triple : ' aarch64-apple-darwin'
72- py : ' cpython-3.11'
73- options : ' pgo'
74- - target_triple : ' aarch64-apple-darwin'
75- py : ' cpython-3.11'
76- options : ' pgo+lto'
77-
78- - target_triple : ' aarch64-apple-darwin'
79- py : ' cpython-3.12'
80- options : ' debug'
81- - target_triple : ' aarch64-apple-darwin'
82- py : ' cpython-3.12'
83- options : ' pgo'
84- - target_triple : ' aarch64-apple-darwin'
85- py : ' cpython-3.12'
86- options : ' pgo+lto'
87-
88- - target_triple : ' aarch64-apple-darwin'
89- py : ' cpython-3.13'
90- options : ' debug'
91- - target_triple : ' aarch64-apple-darwin'
92- py : ' cpython-3.13'
93- options : ' pgo'
94- - target_triple : ' aarch64-apple-darwin'
95- py : ' cpython-3.13'
96- options : ' pgo+lto'
97-
98- - target_triple : ' aarch64-apple-darwin'
99- py : ' cpython-3.13'
100- options : ' freethreaded+debug'
101- - target_triple : ' aarch64-apple-darwin'
102- py : ' cpython-3.13'
103- options : ' freethreaded+pgo'
104- - target_triple : ' aarch64-apple-darwin'
105- py : ' cpython-3.13'
106- options : ' freethreaded+pgo+lto'
107-
108- # macOS on Intel hardware. This is pretty straightforward. We exclude
109- # noopt because it doesn't provide any compelling advantages over PGO
110- # or LTO builds.
111- - target_triple : ' x86_64-apple-darwin'
112- py : ' cpython-3.9'
113- options : ' debug'
114- - target_triple : ' x86_64-apple-darwin'
115- py : ' cpython-3.9'
116- options : ' pgo'
117- - target_triple : ' x86_64-apple-darwin'
118- py : ' cpython-3.9'
119- options : ' pgo+lto'
120-
121- - target_triple : ' x86_64-apple-darwin'
122- py : ' cpython-3.10'
123- options : ' debug'
124- - target_triple : ' x86_64-apple-darwin'
125- py : ' cpython-3.10'
126- options : ' pgo'
127- - target_triple : ' x86_64-apple-darwin'
128- py : ' cpython-3.10'
129- options : ' pgo+lto'
130-
131- - target_triple : ' x86_64-apple-darwin'
132- py : ' cpython-3.11'
133- options : ' debug'
134- - target_triple : ' x86_64-apple-darwin'
135- py : ' cpython-3.11'
136- options : ' pgo'
137- - target_triple : ' x86_64-apple-darwin'
138- py : ' cpython-3.11'
139- options : ' pgo+lto'
140-
141- - target_triple : ' x86_64-apple-darwin'
142- py : ' cpython-3.12'
143- options : ' debug'
144- - target_triple : ' x86_64-apple-darwin'
145- py : ' cpython-3.12'
146- options : ' pgo'
147- - target_triple : ' x86_64-apple-darwin'
148- py : ' cpython-3.12'
149- options : ' pgo+lto'
150-
151- - target_triple : ' x86_64-apple-darwin'
152- py : ' cpython-3.13'
153- options : ' debug'
154- - target_triple : ' x86_64-apple-darwin'
155- py : ' cpython-3.13'
156- options : ' pgo'
157- - target_triple : ' x86_64-apple-darwin'
158- py : ' cpython-3.13'
159- options : ' pgo+lto'
160- - target_triple : ' x86_64-apple-darwin'
161- py : ' cpython-3.13'
162- options : ' freethreaded+debug'
163- - target_triple : ' x86_64-apple-darwin'
164- py : ' cpython-3.13'
165- options : ' freethreaded+pgo'
166- - target_triple : ' x86_64-apple-darwin'
167- py : ' cpython-3.13'
168- options : ' freethreaded+pgo+lto'
16968 needs :
69+ - generate-matrix
17070 - pythonbuild
171- runs-on : depot-macos-14
71+ strategy :
72+ matrix : ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
73+ fail-fast : false
74+ runs-on : macos-14
75+ name : ${{ matrix.python }} / ${{ matrix.target_triple }} / ${{ matrix.build_options }}
17276 steps :
17377 - uses : actions/checkout@v4
17478 with :
@@ -187,21 +91,21 @@ jobs:
18791
18892 - name : Build
18993 run : |
190- if [ "${{ matrix.build. target_triple }}" = "aarch64-apple-darwin" ]; then
94+ if [ "${{ matrix.target_triple }}" = "aarch64-apple-darwin" ]; then
19195 export APPLE_SDK_PATH=/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk
192- elif [ "${{ matrix.build. target_triple }}" = "x86_64-apple-darwin" ]; then
96+ elif [ "${{ matrix.target_triple }}" = "x86_64-apple-darwin" ]; then
19397 export APPLE_SDK_PATH=/Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk
19498 else
195- echo "unhandled target triple: ${{ matrix.build. target_triple }}"
99+ echo "unhandled target triple: ${{ matrix.target_triple }}"
196100 exit 1
197101 fi
198102
199- ./build-macos.py --target-triple ${{ matrix.build. target_triple }} --python ${{ matrix.build.py }} --options ${{ matrix.build.options }}
103+ ./build-macos.py --target-triple ${{ matrix.target_triple }} --python ${{ matrix.python }} --options ${{ matrix.build_options }}
200104
201105 - name : Upload Distributions
202106 uses : actions/upload-artifact@v4
203107 with :
204- name : ${{ matrix.build.py }}-${{ matrix.build. target_triple }}-${{ matrix.build.options }}
108+ name : ${{ matrix.python }}-${{ matrix.target_triple }}-${{ matrix.build_options }}
205109 path : dist/*
206110
207111 - uses : actions/checkout@v4
0 commit comments