@@ -119,17 +119,13 @@ jobs:
119119 host-platform : ${{ inputs.host-platform }}
120120 cuda-version : ${{ inputs.cuda-version }}
121121
122- # TODO: this currently builds against the public cuda.bindings wheel. Consider
123- # building against the wheel from main instead (the below step).
124- - name : Build cuda.core wheel
122+ - name : Build cuda.bindings wheel
125123 uses : pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
126124 with :
127- package-dir : ./cuda_core /
128- output-dir : ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
125+ package-dir : ./cuda_bindings /
126+ output-dir : ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
129127 env :
130128 CIBW_BUILD : ${{ env.CIBW_BUILD }}
131- CIBW_ENVIRONMENT : >
132- CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_CUDA_MAJOR }}
133129 # CIBW mounts the host filesystem under /host
134130 CIBW_ENVIRONMENT_LINUX : >
135131 CUDA_PATH=/host/${{ env.CUDA_PATH }}
@@ -138,63 +134,68 @@ jobs:
138134 CUDA_PATH="$(cygpath -w ${{ env.CUDA_PATH }})"
139135 CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
140136
141- - name : List the cuda.core artifacts directory and rename
137+ - name : List the cuda.bindings artifacts directory
142138 run : |
143139 if [[ "${{ inputs.host-platform }}" == win* ]]; then
144140 export CHOWN=chown
145141 else
146142 export CHOWN="sudo chown"
147143 fi
148- $CHOWN -R $(whoami) ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
144+ $CHOWN -R $(whoami) ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
145+ ls -lahR ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
149146
150- # Rename wheel to include CUDA version suffix
151- mkdir -p "${{ env.CUDA_CORE_ARTIFACTS_DIR }}/cu${BUILD_CUDA_MAJOR}"
152- for wheel in ${{ env.CUDA_CORE_ARTIFACTS_DIR }}/*.whl; do
153- if [[ -f "${wheel}" ]]; then
154- base_name=$(basename "${wheel}" .whl)
155- new_name="${base_name}.cu${BUILD_CUDA_MAJOR}.whl"
156- mv "${wheel}" "${{ env.CUDA_CORE_ARTIFACTS_DIR }}/cu${BUILD_CUDA_MAJOR}/${new_name}"
157- echo "Renamed wheel to: ${new_name}"
158- fi
159- done
147+ - name : Check cuda.bindings wheel
148+ run : |
149+ twine check --strict ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl
160150
161- ls -lahR ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
151+ - name : Upload cuda.bindings build artifacts
152+ uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
153+ with :
154+ name : ${{ env.CUDA_BINDINGS_ARTIFACT_NAME }}
155+ path : ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl
156+ if-no-files-found : error
162157
163- - name : Build cuda.bindings wheel
158+ # TODO: ideally we want to build against public cuda-bindings
159+ - name : Build cuda.core wheel
164160 uses : pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
165161 with :
166- package-dir : ./cuda_bindings /
167- output-dir : ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
162+ package-dir : ./cuda_core /
163+ output-dir : ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
168164 env :
169165 CIBW_BUILD : ${{ env.CIBW_BUILD }}
170166 # CIBW mounts the host filesystem under /host
171167 CIBW_ENVIRONMENT_LINUX : >
172168 CUDA_PATH=/host/${{ env.CUDA_PATH }}
173169 CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
170+ CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_CUDA_MAJOR }}
171+ PIP_FIND_LINKS=/host/${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
174172 CIBW_ENVIRONMENT_WINDOWS : >
175173 CUDA_PATH="$(cygpath -w ${{ env.CUDA_PATH }})"
176174 CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
175+ CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_CUDA_MAJOR }}
176+ PIP_FIND_LINKS="$(cygpath -w ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }})"
177177
178- - name : List the cuda.bindings artifacts directory
178+ - name : List the cuda.core artifacts directory and rename
179179 run : |
180180 if [[ "${{ inputs.host-platform }}" == win* ]]; then
181181 export CHOWN=chown
182182 else
183183 export CHOWN="sudo chown"
184184 fi
185- $CHOWN -R $(whoami) ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
186- ls -lahR ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
185+ $CHOWN -R $(whoami) ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
187186
188- - name : Check cuda.bindings wheel
189- run : |
190- twine check --strict ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl
187+ # Rename wheel to include CUDA version suffix
188+ mkdir -p "${{ env.CUDA_CORE_ARTIFACTS_DIR }}/cu${BUILD_CUDA_MAJOR}"
189+ for wheel in ${{ env.CUDA_CORE_ARTIFACTS_DIR }}/*.whl; do
190+ if [[ -f "${wheel}" ]]; then
191+ base_name=$(basename "${wheel}" .whl)
192+ new_name="${base_name}.cu${BUILD_CUDA_MAJOR}.whl"
193+ mv "${wheel}" "${{ env.CUDA_CORE_ARTIFACTS_DIR }}/cu${BUILD_CUDA_MAJOR}/${new_name}"
194+ echo "Renamed wheel to: ${new_name}"
195+ fi
196+ done
191197
192- - name : Upload cuda.bindings build artifacts
193- uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
194- with :
195- name : ${{ env.CUDA_BINDINGS_ARTIFACT_NAME }}
196- path : ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl
197- if-no-files-found : error
198+ ls -lahR ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
198199
199200 # We only need/want a single pure python wheel, pick linux-64 index 0.
200201 - name : Build and check cuda-python wheel
@@ -288,24 +289,59 @@ jobs:
288289 cuda-version : ${{ inputs.prev-cuda-version }}
289290 cuda-path : " ./cuda_toolkit_prev"
290291
291- # TODO: this currently builds against the public cuda.bindings wheel. Consider
292- # building against the wheel from the backport branch instead.
292+ # TODO: ideally we want to build against public cuda-bindings
293+ - name : Download cuda.bindings build artifacts from the prior branch
294+ if : ${{ matrix.python-version == '3.13t'
295+ || matrix.python-version == '3.14'
296+ || matrix.python-version == '3.14t' }}
297+ env :
298+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
299+ run : |
300+ if ! (command -v gh 2>&1 >/dev/null); then
301+ # See https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt.
302+ # gh is needed for artifact fetching.
303+ mkdir -p -m 755 /etc/apt/keyrings \
304+ && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
305+ && cat $out | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
306+ && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
307+ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
308+ && apt update \
309+ && apt install gh -y
310+ fi
311+
312+ OLD_BRANCH=$(cat .github/BACKPORT_BRANCH)
313+ OLD_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda*-${{ inputs.host-platform }}*"
314+ LATEST_PRIOR_RUN_ID=$(gh run list -b ${OLD_BRANCH} -L 1 -w "ci.yml" -s completed -R NVIDIA/cuda-python --json databaseId | jq '.[]| .databaseId')
315+ if [[ "$LATEST_PRIOR_RUN_ID" == "" ]]; then
316+ echo "LATEST_PRIOR_RUN_ID not found!"
317+ exit 1
318+ fi
319+
320+ gh run download $LATEST_PRIOR_RUN_ID -p ${OLD_BASENAME} -R NVIDIA/cuda-python
321+ rm -rf ${OLD_BASENAME}-tests # exclude cython test artifacts
322+ ls -al $OLD_BASENAME
323+ mkdir -p "${{ env.CUDA_CORE_ARTIFACTS_DIR }}"
324+ mv $OLD_BASENAME/*.whl "${{ env.CUDA_CORE_ARTIFACTS_DIR }}"
325+ rmdir $OLD_BASENAME
326+
293327 - name : Build cuda.core wheel
294328 uses : pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
295329 with :
296330 package-dir : ./cuda_core/
297331 output-dir : ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
298332 env :
299333 CIBW_BUILD : ${{ env.CIBW_BUILD }}
300- CIBW_ENVIRONMENT : >
301- CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_PREV_CUDA_MAJOR }}
302334 # CIBW mounts the host filesystem under /host
303335 CIBW_ENVIRONMENT_LINUX : >
304336 CUDA_PATH=/host/${{ env.CUDA_PATH }}
305337 CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
338+ CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_PREV_CUDA_MAJOR }}
339+ PIP_FIND_LINKS=/host/${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
306340 CIBW_ENVIRONMENT_WINDOWS : >
307341 CUDA_PATH="$(cygpath -w ${{ env.CUDA_PATH }})"
308342 CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
343+ CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_PREV_CUDA_MAJOR }}
344+ PIP_FIND_LINKS="$(cygpath -w ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }})"
309345
310346 - name : List the cuda.core artifacts directory and rename
311347 run : |
0 commit comments