Skip to content

Commit a571b64

Browse files
committed
ci: constrain internal builds to exact local wheels
1 parent 36107d4 commit a571b64

7 files changed

Lines changed: 742 additions & 29 deletions

File tree

.github/workflows/build-wheel.yml

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,18 @@ jobs:
150150
run: |
151151
twine check --strict cuda_pathfinder/*.whl
152152
153+
- name: Resolve cuda.bindings build dependencies
154+
run: |
155+
container_args=()
156+
if [[ "${{ inputs.host-platform }}" == linux* ]]; then
157+
container_args+=(--container-mount /host)
158+
fi
159+
mkdir -p wheel-constraints
160+
python ci/tools/write_wheel_constraints.py \
161+
--output wheel-constraints/cuda-bindings.txt \
162+
"${container_args[@]}" \
163+
--wheel cuda-pathfinder cuda_pathfinder
164+
153165
- name: Upload cuda.pathfinder build artifacts
154166
if: ${{ strategy.job-index == 0 && inputs.host-platform == 'linux-64' }}
155167
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
@@ -172,6 +184,8 @@ jobs:
172184
output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
173185
env:
174186
CIBW_BUILD: ${{ env.CIBW_BUILD }}
187+
CIBW_BEFORE_BUILD_LINUX: 'python -m pip install --upgrade "pip>=25.3"'
188+
CIBW_BEFORE_BUILD_WINDOWS: 'python -m pip install --upgrade "pip>=25.3" delvewheel'
175189
# TODO: remove cpython-prerelease once 3.15 is officially supported
176190
# Allow CPython pre-release builds (currently 3.15 / 3.15t). This is a
177191
# no-op for stable Python versions because CIBW_BUILD still filters
@@ -181,6 +195,8 @@ jobs:
181195
CIBW_ENVIRONMENT_LINUX: >
182196
CUDA_PATH=/host/${{ env.CUDA_PATH }}
183197
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
198+
PIP_BUILD_CONSTRAINT=/host/${{ github.workspace }}/wheel-constraints/cuda-bindings.txt
199+
PIP_CONSTRAINT=/host/${{ github.workspace }}/wheel-constraints/cuda-bindings.txt
184200
CC="/host/${{ env.SCCACHE_PATH }} cc"
185201
CXX="/host/${{ env.SCCACHE_PATH }} c++"
186202
SCCACHE_GHA_ENABLED=true
@@ -194,6 +210,8 @@ jobs:
194210
CIBW_ENVIRONMENT_WINDOWS: >
195211
CUDA_PATH="$(cygpath -w ${{ env.CUDA_PATH }})"
196212
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
213+
PIP_BUILD_CONSTRAINT="$(cygpath -w ./wheel-constraints/cuda-bindings.txt)"
214+
PIP_CONSTRAINT="$(cygpath -w ./wheel-constraints/cuda-bindings.txt)"
197215
# check cache stats before leaving cibuildwheel
198216
CIBW_BEFORE_TEST_LINUX: >
199217
"/host/${{ env.SCCACHE_PATH }}" --show-adv-stats &&
@@ -226,6 +244,20 @@ jobs:
226244
run: |
227245
twine check --strict ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}/*.whl
228246
247+
- name: Resolve cuda.core build dependencies
248+
run: |
249+
container_args=()
250+
if [[ "${{ inputs.host-platform }}" == linux* ]]; then
251+
container_args+=(--container-mount /host)
252+
fi
253+
mkdir -p wheel-constraints
254+
python ci/tools/write_wheel_constraints.py \
255+
--output wheel-constraints/cuda-core.txt \
256+
"${container_args[@]}" \
257+
--wheel cuda-pathfinder cuda_pathfinder \
258+
--wheel cuda-bindings "${CUDA_BINDINGS_ARTIFACTS_DIR}" \
259+
--expected-major cuda-bindings "${BUILD_CUDA_MAJOR}"
260+
229261
- name: Upload cuda.bindings build artifacts
230262
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
231263
with:
@@ -240,6 +272,8 @@ jobs:
240272
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
241273
env:
242274
CIBW_BUILD: ${{ env.CIBW_BUILD }}
275+
CIBW_BEFORE_BUILD_LINUX: 'python -m pip install --upgrade "pip>=25.3"'
276+
CIBW_BEFORE_BUILD_WINDOWS: 'python -m pip install --upgrade "pip>=25.3" delvewheel'
243277
# TODO: remove cpython-prerelease once 3.15 is officially supported
244278
# Allow CPython pre-release builds (currently 3.15 / 3.15t). This is a
245279
# no-op for stable Python versions because CIBW_BUILD still filters
@@ -250,7 +284,8 @@ jobs:
250284
CUDA_PATH=/host/${{ env.CUDA_PATH }}
251285
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
252286
CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_CUDA_MAJOR }}
253-
PIP_FIND_LINKS=/host/${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
287+
PIP_BUILD_CONSTRAINT=/host/${{ github.workspace }}/wheel-constraints/cuda-core.txt
288+
PIP_CONSTRAINT=/host/${{ github.workspace }}/wheel-constraints/cuda-core.txt
254289
CC="/host/${{ env.SCCACHE_PATH }} cc"
255290
CXX="/host/${{ env.SCCACHE_PATH }} c++"
256291
SCCACHE_GHA_ENABLED=true
@@ -265,7 +300,8 @@ jobs:
265300
CUDA_PATH="$(cygpath -w ${{ env.CUDA_PATH }})"
266301
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
267302
CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_CUDA_MAJOR }}
268-
PIP_FIND_LINKS="$(cygpath -w ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }})"
303+
PIP_BUILD_CONSTRAINT="$(cygpath -w ./wheel-constraints/cuda-core.txt)"
304+
PIP_CONSTRAINT="$(cygpath -w ./wheel-constraints/cuda-core.txt)"
269305
# check cache stats before leaving cibuildwheel
270306
CIBW_BEFORE_TEST_LINUX: >
271307
"/host${{ env.SCCACHE_PATH }}" --show-adv-stats &&
@@ -444,21 +480,38 @@ jobs:
444480
OLD_BRANCH=$(yq '.backport_branch' ci/versions.yml)
445481
OLD_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda*-${{ inputs.host-platform }}*"
446482
LATEST_PRIOR_RUN_ID=$(./ci/tools/lookup-run-id --branch "${OLD_BRANCH}" NVIDIA/cuda-python "CI")
483+
PREV_BINDINGS_DIR="cuda_bindings/dist-prev"
447484
448485
gh run download $LATEST_PRIOR_RUN_ID -p ${OLD_BASENAME} -R NVIDIA/cuda-python
449486
rm -rf ${OLD_BASENAME}-tests # exclude cython test artifacts
450487
ls -al $OLD_BASENAME
451-
mkdir -p "${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}"
452-
mv $OLD_BASENAME/*.whl "${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}"
488+
mkdir -p "${PREV_BINDINGS_DIR}"
489+
mv $OLD_BASENAME/*.whl "${PREV_BINDINGS_DIR}"
453490
rmdir $OLD_BASENAME
454491
492+
- name: Resolve previous cuda.core build dependencies
493+
run: |
494+
container_args=()
495+
if [[ "${{ inputs.host-platform }}" == linux* ]]; then
496+
container_args+=(--container-mount /host)
497+
fi
498+
mkdir -p wheel-constraints
499+
python ci/tools/write_wheel_constraints.py \
500+
--output wheel-constraints/cuda-core-prev.txt \
501+
"${container_args[@]}" \
502+
--wheel cuda-pathfinder cuda_pathfinder \
503+
--wheel cuda-bindings cuda_bindings/dist-prev \
504+
--expected-major cuda-bindings "${BUILD_PREV_CUDA_MAJOR}"
505+
455506
- name: Build cuda.core wheel
456507
uses: pypa/cibuildwheel@4726cd35bb13f7bde50cf2761f2499ac7b3aa32c # v4.1.1
457508
with:
458509
package-dir: ./cuda_core/
459510
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
460511
env:
461512
CIBW_BUILD: ${{ env.CIBW_BUILD }}
513+
CIBW_BEFORE_BUILD_LINUX: 'python -m pip install --upgrade "pip>=25.3"'
514+
CIBW_BEFORE_BUILD_WINDOWS: 'python -m pip install --upgrade "pip>=25.3" delvewheel'
462515
# TODO: remove cpython-prerelease once 3.15 is officially supported
463516
# Allow CPython pre-release builds (currently 3.15 / 3.15t). This is a
464517
# no-op for stable Python versions because CIBW_BUILD still filters
@@ -469,7 +522,8 @@ jobs:
469522
CUDA_PATH=/host/${{ env.CUDA_PATH }}
470523
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
471524
CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_PREV_CUDA_MAJOR }}
472-
PIP_FIND_LINKS=/host/${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}
525+
PIP_BUILD_CONSTRAINT=/host/${{ github.workspace }}/wheel-constraints/cuda-core-prev.txt
526+
PIP_CONSTRAINT=/host/${{ github.workspace }}/wheel-constraints/cuda-core-prev.txt
473527
CC="/host/${{ env.SCCACHE_PATH }} cc"
474528
CXX="/host/${{ env.SCCACHE_PATH }} c++"
475529
SCCACHE_GHA_ENABLED=true
@@ -484,7 +538,8 @@ jobs:
484538
CUDA_PATH="$(cygpath -w ${{ env.CUDA_PATH }})"
485539
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
486540
CUDA_CORE_BUILD_MAJOR=${{ env.BUILD_PREV_CUDA_MAJOR }}
487-
PIP_FIND_LINKS="$(cygpath -w ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }})"
541+
PIP_BUILD_CONSTRAINT="$(cygpath -w ./wheel-constraints/cuda-core-prev.txt)"
542+
PIP_CONSTRAINT="$(cygpath -w ./wheel-constraints/cuda-core-prev.txt)"
488543
# check cache stats before leaving cibuildwheel
489544
CIBW_BEFORE_TEST_LINUX: >
490545
"/host${{ env.SCCACHE_PATH }}" --show-adv-stats &&

.github/workflows/ci.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -521,11 +521,18 @@ jobs:
521521
with:
522522
python-version: '3.13'
523523

524-
- name: Install pre-commit
524+
- name: Install pre-commit and CI test tools
525525
shell: bash
526526
run: |
527527
set -euxo pipefail
528-
python -m pip install --upgrade pip pre-commit
528+
python -m pip install --upgrade pip pre-commit pytest
529+
530+
- name: Run CI tools unit tests
531+
shell: bash
532+
run: |
533+
set -euxo pipefail
534+
# Standalone CI tool tests; skip repo-root conftest.py (imports cuda.pathfinder).
535+
python -m pytest -v --noconftest ci/tools/tests
529536
530537
- name: Run pre-commit
531538
shell: bash

.github/workflows/coverage.yml

Lines changed: 52 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -118,18 +118,41 @@ jobs:
118118
run: |
119119
python -m venv .venv
120120
121-
- name: Build cuda-pathfinder
121+
- name: Install pip with build-constraint support
122+
run: .venv/bin/python -m pip install "pip>=25.3"
123+
124+
- name: Build and install cuda-pathfinder wheel
122125
run: |
123-
cd cuda_pathfinder
124-
../.venv/bin/pip install -v . --group test
126+
.venv/bin/pip wheel -v --no-deps ./cuda_pathfinder -w ./wheels/
127+
.venv/bin/pip install -v ./wheels/cuda_pathfinder*.whl --group ./cuda_pathfinder/pyproject.toml:test
125128
126-
- name: Build cuda-bindings
129+
- name: Resolve cuda-bindings build dependencies
127130
run: |
128-
cd cuda_bindings
129-
../.venv/bin/pip install -v . --group test
131+
mkdir -p wheel-constraints
132+
.venv/bin/python ci/tools/write_wheel_constraints.py \
133+
--output wheel-constraints/cuda-bindings.txt \
134+
--wheel cuda-pathfinder wheels
135+
136+
- name: Build and install cuda-bindings wheel
137+
run: |
138+
export PIP_BUILD_CONSTRAINT="$(pwd)/wheel-constraints/cuda-bindings.txt"
139+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
140+
.venv/bin/pip wheel -v --no-deps ./cuda_bindings -w ./wheels/
141+
.venv/bin/pip install -v ./wheels/cuda_bindings*.whl --group ./cuda_bindings/pyproject.toml:test
130142
131-
- name: Build cuda-core
143+
- name: Resolve cuda-core build dependencies
132144
run: |
145+
CUDA_MAJOR="${CUDA_VER%%.*}"
146+
.venv/bin/python ci/tools/write_wheel_constraints.py \
147+
--output wheel-constraints/cuda-core.txt \
148+
--wheel cuda-pathfinder wheels \
149+
--wheel cuda-bindings wheels \
150+
--expected-major cuda-bindings "${CUDA_MAJOR}"
151+
152+
- name: Build and install cuda-core
153+
run: |
154+
export PIP_BUILD_CONSTRAINT="$(pwd)/wheel-constraints/cuda-core.txt"
155+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
133156
cd cuda_core
134157
../.venv/bin/pip install -v . --group test
135158
@@ -225,20 +248,38 @@ jobs:
225248
run: |
226249
python -m venv .venv
227250
228-
- name: Build and install cuda.pathfinder
251+
- name: Build cuda.pathfinder wheel
229252
run: |
230-
.venv/Scripts/pip install wheel setuptools Cython
253+
.venv/Scripts/python -m pip install "pip>=25.3" wheel setuptools Cython
231254
.venv/Scripts/pip wheel -v --no-deps ./cuda_pathfinder -w ./wheels/
232255
256+
- name: Resolve cuda.bindings build dependencies
257+
run: |
258+
mkdir -p wheel-constraints
259+
.venv/Scripts/python ci/tools/write_wheel_constraints.py \
260+
--output wheel-constraints/cuda-bindings.txt \
261+
--wheel cuda-pathfinder wheels
262+
233263
- name: Build cuda.bindings wheel
234264
run: |
265+
export PIP_BUILD_CONSTRAINT="$(cygpath -w "$(pwd)/wheel-constraints/cuda-bindings.txt")"
266+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
235267
cd cuda_bindings
236268
../.venv/Scripts/pip wheel -v --no-deps . -w ../wheels/
237269
270+
- name: Resolve cuda.core build dependencies
271+
run: |
272+
CUDA_MAJOR="${CUDA_VER%%.*}"
273+
.venv/Scripts/python ci/tools/write_wheel_constraints.py \
274+
--output wheel-constraints/cuda-core.txt \
275+
--wheel cuda-pathfinder wheels \
276+
--wheel cuda-bindings wheels \
277+
--expected-major cuda-bindings "${CUDA_MAJOR}"
278+
238279
- name: Build cuda.core wheel
239280
run: |
240-
export PIP_FIND_LINKS="$(pwd)/wheels"
241-
export PIP_PRE=1
281+
export PIP_BUILD_CONSTRAINT="$(cygpath -w "$(pwd)/wheel-constraints/cuda-core.txt")"
282+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
242283
cd cuda_core
243284
../.venv/Scripts/pip wheel -v --no-deps . -w ../wheels/
244285

.github/workflows/test-sdist-linux.yml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
python-version: "3.12"
4040

4141
- name: Install build tools
42-
run: pip install build
42+
run: python -m pip install "pip>=25.3" build
4343

4444
# Pure Python packages -- no CTK needed.
4545
- name: Build cuda.pathfinder sdist and wheel-from-sdist
@@ -52,6 +52,13 @@ jobs:
5252
python -m build --sdist cuda_python/
5353
pip wheel --no-deps --wheel-dir cuda_python/dist cuda_python/dist/*.tar.gz
5454
55+
- name: Resolve cuda.bindings build dependencies
56+
run: |
57+
mkdir -p wheel-constraints
58+
python ci/tools/write_wheel_constraints.py \
59+
--output wheel-constraints/cuda-bindings.txt \
60+
--wheel cuda-pathfinder cuda_pathfinder/dist
61+
5562
# Cython packages need CTK + sccache.
5663
# The env vars ACTIONS_CACHE_SERVICE_V2, ACTIONS_RESULTS_URL, and ACTIONS_RUNTIME_TOKEN
5764
# are exposed by this action.
@@ -88,10 +95,20 @@ jobs:
8895
export CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)
8996
export CC="sccache cc"
9097
export CXX="sccache c++"
91-
export PIP_FIND_LINKS="$(pwd)/cuda_pathfinder/dist"
98+
export PIP_BUILD_CONSTRAINT="$(pwd)/wheel-constraints/cuda-bindings.txt"
99+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
92100
python -m build --sdist cuda_bindings/
93101
pip wheel --no-deps --wheel-dir cuda_bindings/dist cuda_bindings/dist/*.tar.gz
94102
103+
- name: Resolve cuda.core build dependencies
104+
run: |
105+
CUDA_MAJOR="$(echo '${{ inputs.cuda-version }}' | cut -d. -f1)"
106+
python ci/tools/write_wheel_constraints.py \
107+
--output wheel-constraints/cuda-core.txt \
108+
--wheel cuda-pathfinder cuda_pathfinder/dist \
109+
--wheel cuda-bindings cuda_bindings/dist \
110+
--expected-major cuda-bindings "${CUDA_MAJOR}"
111+
95112
# cuda_core sdist delegates to setuptools (no CTK needed), but
96113
# wheel-from-sdist needs CTK and cuda-bindings (dynamic build dep via
97114
# get_requires_for_build_wheel in build_hooks.py).
@@ -101,7 +118,8 @@ jobs:
101118
export CUDA_CORE_BUILD_MAJOR="$(echo '${{ inputs.cuda-version }}' | cut -d. -f1)"
102119
export CC="sccache cc"
103120
export CXX="sccache c++"
104-
export PIP_FIND_LINKS="$(pwd)/cuda_bindings/dist $(pwd)/cuda_pathfinder/dist"
121+
export PIP_BUILD_CONSTRAINT="$(pwd)/wheel-constraints/cuda-core.txt"
122+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
105123
python -m build --sdist cuda_core/
106124
pip wheel --no-deps --wheel-dir cuda_core/dist cuda_core/dist/*.tar.gz
107125

.github/workflows/test-sdist-windows.yml

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
uses: step-security/msvc-dev-cmd@22c98154b708dbd743e6f27a933cf6ceba3305c4 # v1.13.1
4949

5050
- name: Install build tools
51-
run: pip install build
51+
run: python -m pip install "pip>=25.3" build
5252

5353
# Pure Python packages -- no CTK needed.
5454
- name: Build cuda.pathfinder sdist and wheel-from-sdist
@@ -61,6 +61,13 @@ jobs:
6161
python -m build --sdist cuda_python/
6262
pip wheel --no-deps --wheel-dir cuda_python/dist cuda_python/dist/*.tar.gz
6363
64+
- name: Resolve cuda.bindings build dependencies
65+
run: |
66+
mkdir -p wheel-constraints
67+
python ci/tools/write_wheel_constraints.py \
68+
--output wheel-constraints/cuda-bindings.txt \
69+
--wheel cuda-pathfinder cuda_pathfinder/dist
70+
6471
# Cython packages need CTK. No sccache on Windows (this is a correctness
6572
# smoke test, not a production build; see build-wheel.yml which also
6673
# limits sccache to Linux).
@@ -73,24 +80,33 @@ jobs:
7380

7481
# cuda_bindings/setup.py parses CUDA headers at import time, so CUDA_PATH
7582
# (set by fetch_ctk) must be available for both sdist and wheel builds.
76-
# PIP_FIND_LINKS is passed as a native Windows path via cygpath because
77-
# pip on Windows treats space-separated entries as separators and is
78-
# picky about mixed path styles (see build-wheel.yml for the same
79-
# convention).
83+
# Constraint paths are passed as native Windows paths because the pip
84+
# subprocesses run outside Git Bash.
8085
- name: Build cuda.bindings sdist and wheel-from-sdist
8186
run: |
8287
export CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)
83-
export PIP_FIND_LINKS="$(cygpath -w "$(pwd)/cuda_pathfinder/dist")"
88+
export PIP_BUILD_CONSTRAINT="$(cygpath -w "$(pwd)/wheel-constraints/cuda-bindings.txt")"
89+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
8490
python -m build --sdist cuda_bindings/
8591
pip wheel --no-deps --wheel-dir cuda_bindings/dist cuda_bindings/dist/*.tar.gz
8692
93+
- name: Resolve cuda.core build dependencies
94+
run: |
95+
CUDA_MAJOR="$(echo '${{ inputs.cuda-version }}' | cut -d. -f1)"
96+
python ci/tools/write_wheel_constraints.py \
97+
--output wheel-constraints/cuda-core.txt \
98+
--wheel cuda-pathfinder cuda_pathfinder/dist \
99+
--wheel cuda-bindings cuda_bindings/dist \
100+
--expected-major cuda-bindings "${CUDA_MAJOR}"
101+
87102
# cuda_core sdist delegates to setuptools (no CTK needed), but
88103
# wheel-from-sdist needs CTK and cuda-bindings (dynamic build dep via
89104
# get_requires_for_build_wheel in build_hooks.py).
90105
- name: Build cuda.core sdist and wheel-from-sdist
91106
run: |
92107
export CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)
93108
export CUDA_CORE_BUILD_MAJOR="$(echo '${{ inputs.cuda-version }}' | cut -d. -f1)"
94-
export PIP_FIND_LINKS="$(cygpath -w "$(pwd)/cuda_bindings/dist") $(cygpath -w "$(pwd)/cuda_pathfinder/dist")"
109+
export PIP_BUILD_CONSTRAINT="$(cygpath -w "$(pwd)/wheel-constraints/cuda-core.txt")"
110+
export PIP_CONSTRAINT="${PIP_BUILD_CONSTRAINT}"
95111
python -m build --sdist cuda_core/
96112
pip wheel --no-deps --wheel-dir cuda_core/dist cuda_core/dist/*.tar.gz

0 commit comments

Comments
 (0)