diff --git a/.github/workflows/build-wheel.yml b/.github/workflows/build-wheel.yml index dd3d011079..7a1da8bf20 100644 --- a/.github/workflows/build-wheel.yml +++ b/.github/workflows/build-wheel.yml @@ -111,15 +111,6 @@ jobs: - name: Build cuda.core wheel uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4 - env: - CIBW_BUILD: ${{ env.CIBW_BUILD }} - CIBW_ARCHS_LINUX: "native" - CIBW_BUILD_VERBOSITY: 1 - CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel" - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}" - CIBW_ENVIRONMENT: > - CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }} - CIBW_ENABLE: "cpython-freethreading" with: package-dir: ./cuda_core/ output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }} @@ -154,20 +145,6 @@ jobs: - name: Build cuda.bindings wheel uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4 - env: - CIBW_BUILD: ${{ env.CIBW_BUILD }} - CIBW_ARCHS_LINUX: "native" - CIBW_BUILD_VERBOSITY: 1 - # CIBW mounts the host filesystem under /host - CIBW_ENVIRONMENT_LINUX: > - CUDA_PATH=/host/${{ env.CUDA_PATH }} - CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }} - CIBW_ENVIRONMENT_WINDOWS: > - CUDA_HOME="$(cygpath -w ${{ env.CUDA_PATH }})" - CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }} - CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel" - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}" - CIBW_ENABLE: "cpython-freethreading" with: package-dir: ./cuda_bindings/ output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }} diff --git a/ci/tools/env-vars b/ci/tools/env-vars index 19126cd133..de4a5a6b9a 100755 --- a/ci/tools/env-vars +++ b/ci/tools/env-vars @@ -16,12 +16,11 @@ if [[ ${#} -ne 1 ]]; then fi PYTHON_VERSION_FORMATTED=$(echo "${PY_VER}" | tr -d '.') + if [[ "${HOST_PLATFORM}" == linux* ]]; then - CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-manylinux*" REPO_DIR=$(pwd) TOOLS_PATH="${REPO_DIR}/ci/tools" elif [[ "${HOST_PLATFORM}" == win* ]]; then - CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-win_amd64" PWD=$(pwd) REPO_DIR=$(cygpath -w ${PWD}) TOOLS_PATH=$(cygpath -w ${PWD}/ci/tools) @@ -30,14 +29,18 @@ fi echo "${TOOLS_PATH}" >> $GITHUB_PATH echo "CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)" >> $GITHUB_ENV CUDA_CORE_ARTIFACT_BASENAME="cuda-core-python${PYTHON_VERSION_FORMATTED}-${HOST_PLATFORM}" -echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" >> $GITHUB_ENV -echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}" >> $GITHUB_ENV -echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")" >> $GITHUB_ENV -echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")" >> $GITHUB_ENV -echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}" >> $GITHUB_ENV +{ + echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" + echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}" + echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")" + echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")" + echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}" +} >> $GITHUB_ENV if [[ "${1}" == "build" ]]; then - echo "CIBW_BUILD=${CIBW_BUILD}" >> $GITHUB_ENV + # platform is handled by the default value of platform (`auto`) in cibuildwheel + # here we only need to specify the python version we want + echo "CIBW_BUILD=cp${PYTHON_VERSION_FORMATTED}-*" >> $GITHUB_ENV CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${CUDA_VER}-${HOST_PLATFORM}" elif [[ "${1}" == "test" ]]; then BUILD_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${BUILD_CUDA_VER})" @@ -66,13 +69,17 @@ elif [[ "${1}" == "test" ]]; then SETUP_SANITIZER=0 echo "SANITIZER_CMD=" >> $GITHUB_ENV fi - echo "SETUP_SANITIZER=${SETUP_SANITIZER}" >> $GITHUB_ENV - echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}" >> $GITHUB_ENV - echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}" >> $GITHUB_ENV - echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}" >> $GITHUB_ENV + { + echo "SETUP_SANITIZER=${SETUP_SANITIZER}" + echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}" + echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}" + echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}" + } >> $GITHUB_ENV fi -echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV -echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}" >> $GITHUB_ENV -echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")" >> $GITHUB_ENV -echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")" >> $GITHUB_ENV +{ + echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" + echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}" + echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")" + echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")" +} >> $GITHUB_ENV diff --git a/cuda_bindings/pyproject.toml b/cuda_bindings/pyproject.toml index b7dbd7a665..31994f2ce6 100644 --- a/cuda_bindings/pyproject.toml +++ b/cuda_bindings/pyproject.toml @@ -110,3 +110,21 @@ exclude = ["cuda/bindings/_version.py"] "UP022", "E402", # module level import not at top of file "F841"] # F841 complains about unused variables, but some assignments have side-effects that could be useful for tests (func calls for example) + +[tool.cibuildwheel] +skip = "*-musllinux_*" +enable = "cpython-freethreading" +build-verbosity = 1 +environment-pass = ["CUDA_PATH", "CUDA_PYTHON_PARALLEL_LEVEL"] + +[tool.cibuildwheel.linux] +archs = "native" +# CIBW mounts the host filesystem under /host +environment-pass = ["CUDA_PATH"] +environment = { CUDA_HOME = "/host/$CUDA_PATH" } + +[tool.cibuildwheel.windows] +archs = "AMD64" +before-build = "pip install delvewheel" +repair-wheel-command = "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}" +environment = { CUDA_HOME = "$(cygpath -w $CUDA_PATH)" } diff --git a/cuda_core/pyproject.toml b/cuda_core/pyproject.toml index dc1c837b30..5f71c8a8cb 100644 --- a/cuda_core/pyproject.toml +++ b/cuda_core/pyproject.toml @@ -114,3 +114,17 @@ exclude = ["cuda/core/_version.py"] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] "setup.py" = ["F401"] + +[tool.cibuildwheel] +skip = "*-musllinux_*" +enable = "cpython-freethreading" +build-verbosity = 1 +environment-pass = ["CUDA_PYTHON_PARALLEL_LEVEL"] + +[tool.cibuildwheel.linux] +archs = "native" + +[tool.cibuildwheel.windows] +archs = "AMD64" +before-build = "pip install delvewheel" +repair-wheel-command = "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"