Skip to content

Commit b748718

Browse files
committed
ci: move wheelbuilding config out of ci
1 parent 5876145 commit b748718

File tree

4 files changed

+56
-34
lines changed

4 files changed

+56
-34
lines changed

.github/workflows/build-wheel.yml

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,6 @@ jobs:
111111
uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
112112
env:
113113
CIBW_BUILD: ${{ env.CIBW_BUILD }}
114-
CIBW_ARCHS_LINUX: "native"
115-
CIBW_BUILD_VERBOSITY: 1
116-
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel"
117-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
118-
CIBW_ENVIRONMENT: >
119-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
120-
CIBW_ENABLE: "cpython-freethreading"
121114
with:
122115
package-dir: ./cuda_core/
123116
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
@@ -154,18 +147,6 @@ jobs:
154147
uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
155148
env:
156149
CIBW_BUILD: ${{ env.CIBW_BUILD }}
157-
CIBW_ARCHS_LINUX: "native"
158-
CIBW_BUILD_VERBOSITY: 1
159-
# CIBW mounts the host filesystem under /host
160-
CIBW_ENVIRONMENT_LINUX: >
161-
CUDA_PATH=/host/${{ env.CUDA_PATH }}
162-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
163-
CIBW_ENVIRONMENT_WINDOWS: >
164-
CUDA_HOME="$(cygpath -w ${{ env.CUDA_PATH }})"
165-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
166-
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel"
167-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
168-
CIBW_ENABLE: "cpython-freethreading"
169150
with:
170151
package-dir: ./cuda_bindings/
171152
output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}

ci/tools/env-vars

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

1818
PYTHON_VERSION_FORMATTED=$(echo "${PY_VER}" | tr -d '.')
19+
20+
# platform is handled by the default value of platform (`auto`) in cibuildwheel
21+
# here we only need to specify the python version we want
22+
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-*"
23+
1924
if [[ "${HOST_PLATFORM}" == linux* ]]; then
20-
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-manylinux*"
2125
REPO_DIR=$(pwd)
2226
TOOLS_PATH="${REPO_DIR}/ci/tools"
2327
elif [[ "${HOST_PLATFORM}" == win* ]]; then
24-
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-win_amd64"
2528
PWD=$(pwd)
2629
REPO_DIR=$(cygpath -w ${PWD})
2730
TOOLS_PATH=$(cygpath -w ${PWD}/ci/tools)
@@ -30,11 +33,13 @@ fi
3033
echo "${TOOLS_PATH}" >> $GITHUB_PATH
3134
echo "CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)" >> $GITHUB_ENV
3235
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
36+
{
37+
echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}"
38+
echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}"
39+
echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")"
40+
echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")"
41+
echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}"
42+
} >> $GITHUB_ENV
3843

3944
if [[ "${1}" == "build" ]]; then
4045
echo "CIBW_BUILD=${CIBW_BUILD}" >> $GITHUB_ENV
@@ -66,13 +71,17 @@ elif [[ "${1}" == "test" ]]; then
6671
SETUP_SANITIZER=0
6772
echo "SANITIZER_CMD=" >> $GITHUB_ENV
6873
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
74+
{
75+
echo "SETUP_SANITIZER=${SETUP_SANITIZER}"
76+
echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}"
77+
echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}"
78+
echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}"
79+
} >> $GITHUB_ENV
7380
fi
7481

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
82+
{
83+
echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}"
84+
echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}"
85+
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")"
86+
echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")"
87+
} >> $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)