diff --git a/ci-conda.Dockerfile b/ci-conda.Dockerfile index 03d2023..04f8117 100644 --- a/ci-conda.Dockerfile +++ b/ci-conda.Dockerfile @@ -8,7 +8,6 @@ FROM nvidia/cuda:${CUDA_VER}-base-${LINUX_VER} AS miniforge-cuda ARG LINUX_VER ARG PYTHON_VER -ARG PYTHON_VER_UPPER_BOUND ARG DEBIAN_FRONTEND=noninteractive ENV PATH=/opt/conda/bin:$PATH ENV PYTHON_VERSION=${PYTHON_VER} @@ -34,7 +33,17 @@ umask 002 # an older conda with newer packages still works well conda update --all -y -n base # install expected Python version -conda install -y -n base "python>=${PYTHON_VERSION},<${PYTHON_VER_UPPER_BOUND}=*_cpython" +PYTHON_MAJOR_VERSION=${PYTHON_VERSION%%.*} +PYTHON_MINOR_VERSION=${PYTHON_VERSION#*.} +PYTHON_UPPER_BOUND="${PYTHON_MAJOR_VERSION}.$((PYTHON_MINOR_VERSION+1)).0a0" +PYTHON_MINOR_PADDED=$(printf "%02d" "$PYTHON_MINOR_VERSION") +PYTHON_VERSION_PADDED="${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_PADDED}" +if [[ "$PYTHON_VERSION_PADDED" > "3.12" ]]; then + PYTHON_ABI_TAG="cp${PYTHON_MAJOR_VERSION}${PYTHON_MINOR_VERSION}" +else + PYTHON_ABI_TAG="cpython" +fi +conda install -y -n base "python>=${PYTHON_VERSION},<${PYTHON_UPPER_BOUND}=*_${PYTHON_ABI_TAG}" conda update --all -y -n base if [[ "$LINUX_VER" == "rockylinux"* ]]; then yum install -y findutils @@ -94,7 +103,6 @@ ARG TARGETPLATFORM=notset ARG CUDA_VER=notset ARG LINUX_VER=notset ARG PYTHON_VER=notset -ARG PYTHON_VER_UPPER_BOUND=notset ARG DEBIAN_FRONTEND @@ -210,6 +218,16 @@ RUN cat /tmp/condarc.tmpl | envsubst | tee /opt/conda/.condarc; \ # Install CI tools using mamba RUN < "3.12" ]]; then + PYTHON_ABI_TAG="cp${PYTHON_MAJOR_VERSION}${PYTHON_MINOR_VERSION}" +else + PYTHON_ABI_TAG="cpython" +fi rapids-mamba-retry install -y \ anaconda-client \ boa \ @@ -220,7 +238,7 @@ rapids-mamba-retry install -y \ git \ jq \ packaging \ - "python>=${PYTHON_VERSION},<${PYTHON_VER_UPPER_BOUND}=*_cpython" \ + "python>=${PYTHON_VERSION},<${PYTHON_UPPER_BOUND}=*_${PYTHON_ABI_TAG}" \ "rapids-dependency-file-generator==1.*" conda clean -aipty EOF diff --git a/ci/compute-build-args.sh b/ci/compute-build-args.sh index e542183..7a1087d 100755 --- a/ci/compute-build-args.sh +++ b/ci/compute-build-args.sh @@ -17,16 +17,10 @@ if [[ MANYLINUX_VER="manylinux_2_31" fi -# compute upper bound, e.g. "3.11 -> 3.12.0a0" -PYTHON_VER_MAJOR="${PYTHON_VER%%.*}" -PYTHON_VER_MINOR="${PYTHON_VER#*.}" -PYTHON_VER_UPPER_BOUND="${PYTHON_VER_MAJOR}.$(( PYTHON_VER_MINOR + 1)).0a0" - ARGS=" CUDA_VER: ${CUDA_VER} LINUX_VER: ${LINUX_VER} PYTHON_VER: ${PYTHON_VER} -PYTHON_VER_UPPER_BOUND: ${PYTHON_VER_UPPER_BOUND} CPU_ARCH: ${ARCH} REAL_ARCH: $(arch) MANYLINUX_VER: ${MANYLINUX_VER} diff --git a/matrix.yaml b/matrix.yaml index 49be306..1ee4ea2 100644 --- a/matrix.yaml +++ b/matrix.yaml @@ -9,6 +9,7 @@ PYTHON_VER: - "3.10" - "3.11" - "3.12" + - "3.13" LINUX_VER: - "ubuntu20.04" - "ubuntu22.04" @@ -28,6 +29,12 @@ CI_IMAGE_CONFIG: dockerfile: citestwheel.Dockerfile docker_target: "" exclude: + # Python 3.13 isn't ready for conda yet (needs support in the conda package) + - PYTHON_VER: "3.13" + IMAGE_REPO: "miniforge-cuda" + - PYTHON_VER: "3.13" + IMAGE_REPO: "ci-conda" + # Exclusions from CUDA's OS support matrix - LINUX_VER: "ubuntu22.04" CUDA_VER: "11.4.3"