Skip to content

Commit 5fb83a1

Browse files
authored
ci: move cibuildwheel config out of github actions workflows and into pyproject.tomls (#994)
1 parent ebce316 commit 5fb83a1

File tree

4 files changed

+55
-39
lines changed

4 files changed

+55
-39
lines changed

.github/workflows/build-wheel.yml

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,6 @@ jobs:
111111

112112
- name: Build cuda.core wheel
113113
uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
114-
env:
115-
CIBW_BUILD: ${{ env.CIBW_BUILD }}
116-
CIBW_ARCHS_LINUX: "native"
117-
CIBW_BUILD_VERBOSITY: 1
118-
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel"
119-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
120-
CIBW_ENVIRONMENT: >
121-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
122-
CIBW_ENABLE: "cpython-freethreading"
123114
with:
124115
package-dir: ./cuda_core/
125116
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
@@ -154,20 +145,6 @@ jobs:
154145

155146
- name: Build cuda.bindings wheel
156147
uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
157-
env:
158-
CIBW_BUILD: ${{ env.CIBW_BUILD }}
159-
CIBW_ARCHS_LINUX: "native"
160-
CIBW_BUILD_VERBOSITY: 1
161-
# CIBW mounts the host filesystem under /host
162-
CIBW_ENVIRONMENT_LINUX: >
163-
CUDA_PATH=/host/${{ env.CUDA_PATH }}
164-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
165-
CIBW_ENVIRONMENT_WINDOWS: >
166-
CUDA_HOME="$(cygpath -w ${{ env.CUDA_PATH }})"
167-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
168-
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel"
169-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
170-
CIBW_ENABLE: "cpython-freethreading"
171148
with:
172149
package-dir: ./cuda_bindings/
173150
output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}

ci/tools/env-vars

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ if [[ ${#} -ne 1 ]]; then
1616
fi
1717

1818
PYTHON_VERSION_FORMATTED=$(echo "${PY_VER}" | tr -d '.')
19+
1920
if [[ "${HOST_PLATFORM}" == linux* ]]; then
20-
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-manylinux*"
2121
REPO_DIR=$(pwd)
2222
TOOLS_PATH="${REPO_DIR}/ci/tools"
2323
elif [[ "${HOST_PLATFORM}" == win* ]]; then
24-
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-win_amd64"
2524
PWD=$(pwd)
2625
REPO_DIR=$(cygpath -w ${PWD})
2726
TOOLS_PATH=$(cygpath -w ${PWD}/ci/tools)
@@ -30,14 +29,18 @@ fi
3029
echo "${TOOLS_PATH}" >> $GITHUB_PATH
3130
echo "CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)" >> $GITHUB_ENV
3231
CUDA_CORE_ARTIFACT_BASENAME="cuda-core-python${PYTHON_VERSION_FORMATTED}-${HOST_PLATFORM}"
33-
echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" >> $GITHUB_ENV
34-
echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}" >> $GITHUB_ENV
35-
echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")" >> $GITHUB_ENV
36-
echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")" >> $GITHUB_ENV
37-
echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}" >> $GITHUB_ENV
32+
{
33+
echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}"
34+
echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}"
35+
echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")"
36+
echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")"
37+
echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}"
38+
} >> $GITHUB_ENV
3839

3940
if [[ "${1}" == "build" ]]; then
40-
echo "CIBW_BUILD=${CIBW_BUILD}" >> $GITHUB_ENV
41+
# platform is handled by the default value of platform (`auto`) in cibuildwheel
42+
# here we only need to specify the python version we want
43+
echo "CIBW_BUILD=cp${PYTHON_VERSION_FORMATTED}-*" >> $GITHUB_ENV
4144
CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${CUDA_VER}-${HOST_PLATFORM}"
4245
elif [[ "${1}" == "test" ]]; then
4346
BUILD_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${BUILD_CUDA_VER})"
@@ -66,13 +69,17 @@ elif [[ "${1}" == "test" ]]; then
6669
SETUP_SANITIZER=0
6770
echo "SANITIZER_CMD=" >> $GITHUB_ENV
6871
fi
69-
echo "SETUP_SANITIZER=${SETUP_SANITIZER}" >> $GITHUB_ENV
70-
echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}" >> $GITHUB_ENV
71-
echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}" >> $GITHUB_ENV
72-
echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}" >> $GITHUB_ENV
72+
{
73+
echo "SETUP_SANITIZER=${SETUP_SANITIZER}"
74+
echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}"
75+
echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}"
76+
echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}"
77+
} >> $GITHUB_ENV
7378
fi
7479

75-
echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV
76-
echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}" >> $GITHUB_ENV
77-
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")" >> $GITHUB_ENV
78-
echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")" >> $GITHUB_ENV
80+
{
81+
echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}"
82+
echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}"
83+
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")"
84+
echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")"
85+
} >> $GITHUB_ENV

cuda_bindings/pyproject.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,21 @@ exclude = ["cuda/bindings/_version.py"]
110110
"UP022",
111111
"E402", # module level import not at top of file
112112
"F841"] # F841 complains about unused variables, but some assignments have side-effects that could be useful for tests (func calls for example)
113+
114+
[tool.cibuildwheel]
115+
skip = "*-musllinux_*"
116+
enable = "cpython-freethreading"
117+
build-verbosity = 1
118+
environment-pass = ["CUDA_PATH", "CUDA_PYTHON_PARALLEL_LEVEL"]
119+
120+
[tool.cibuildwheel.linux]
121+
archs = "native"
122+
# CIBW mounts the host filesystem under /host
123+
environment-pass = ["CUDA_PATH"]
124+
environment = { CUDA_HOME = "/host/$CUDA_PATH" }
125+
126+
[tool.cibuildwheel.windows]
127+
archs = "AMD64"
128+
before-build = "pip install delvewheel"
129+
repair-wheel-command = "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
130+
environment = { CUDA_HOME = "$(cygpath -w $CUDA_PATH)" }

cuda_core/pyproject.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,17 @@ exclude = ["cuda/core/_version.py"]
114114
[tool.ruff.lint.per-file-ignores]
115115
"__init__.py" = ["F401"]
116116
"setup.py" = ["F401"]
117+
118+
[tool.cibuildwheel]
119+
skip = "*-musllinux_*"
120+
enable = "cpython-freethreading"
121+
build-verbosity = 1
122+
environment-pass = ["CUDA_PYTHON_PARALLEL_LEVEL"]
123+
124+
[tool.cibuildwheel.linux]
125+
archs = "native"
126+
127+
[tool.cibuildwheel.windows]
128+
archs = "AMD64"
129+
before-build = "pip install delvewheel"
130+
repair-wheel-command = "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"

0 commit comments

Comments
 (0)