From f6875adf87c4bdccd232fa6848981db290eb461d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 28 Jul 2023 06:39:27 +0200 Subject: [PATCH 001/324] base: Update Git LFS to v3.4.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index c0866d2..037d015 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG GIT_VERSION=2.41.0 -ARG GIT_LFS_VERSION=3.3.0 +ARG GIT_LFS_VERSION=3.4.0 ARG PANDOC_VERSION=3.1.1 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From bd85f266f537002565da4358154697b6a2c1fb5c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 5 Aug 2023 21:57:39 +0200 Subject: [PATCH 002/324] scipy: Update Quarto to v1.3.450 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 02493f4..7a3a98b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.3.433 +ARG QUARTO_VERSION=1.3.450 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} From a4976910a3eacc0658ada7fdf8c137a4ae32167e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 22 Aug 2023 11:49:03 +0200 Subject: [PATCH 003/324] base: Update Git to v2.42.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 037d015..0eee5c6 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.41.0 +ARG GIT_VERSION=2.42.0 ARG GIT_LFS_VERSION=3.4.0 ARG PANDOC_VERSION=3.1.1 From d33939b95b1e030c3d7a3c1cb47c60947bff2ce4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 26 Aug 2023 07:16:03 +0200 Subject: [PATCH 004/324] Freeze Python v3.10.13 --- base/.gitlab-ci.yml | 9 ++- base/3.10.13.Dockerfile | 105 +++++++++++++++++++++++++++++++++ cuda/3.10.13.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 9 ++- scipy/3.10.13.Dockerfile | 124 +++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 16 ++++- ver/3.10.13.Dockerfile | 70 ++++++++++++++++++++++ 7 files changed, 402 insertions(+), 3 deletions(-) create mode 100644 base/3.10.13.Dockerfile create mode 100644 cuda/3.10.13.Dockerfile create mode 100644 scipy/3.10.13.Dockerfile create mode 100644 ver/3.10.13.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 9c11f81..687a99f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.4" + PYTHON_VERSION: "3.10.13" .before-script-build: &before-script-build - | @@ -185,6 +185,13 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/base/3.10.13.Dockerfile b/base/3.10.13.Dockerfile new file mode 100644 index 0000000..523948f --- /dev/null +++ b/base/3.10.13.Dockerfile @@ -0,0 +1,105 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.10.13 +ARG GIT_VERSION=2.42.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.10.13.Dockerfile b/cuda/3.10.13.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.10.13.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0b23012..faf8cc7 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.4" + PYTHON_VERSION: "3.10.13" .before-script-build: &before-script-build - | @@ -177,6 +177,13 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/scipy/3.10.13.Dockerfile b/scipy/3.10.13.Dockerfile new file mode 100644 index 0000000..757ff76 --- /dev/null +++ b/scipy/3.10.13.Dockerfile @@ -0,0 +1,124 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.10.13 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/08/24/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 07d0678..ceae2e2 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.4" + PYTHON_VERSION: "3.10.13" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" @@ -289,6 +289,13 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR - | if [[ "$CUDA_IMAGE_FLAVOR" == "runtime" ]]; then docker manifest create $CI_APP_REPO:$CI_APP_TAG $CI_MANIFEST_LIST @@ -297,6 +304,13 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" diff --git a/ver/3.10.13.Dockerfile b/ver/3.10.13.Dockerfile new file mode 100644 index 0000000..2e78f9f --- /dev/null +++ b/ver/3.10.13.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.10.13 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From a7df1ba6f60d49959c94bbd8c70966219efd9535 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 26 Aug 2023 07:40:44 +0200 Subject: [PATCH 005/324] Freeze Python v3.11.4 --- base/.gitlab-ci.yml | 9 +-- base/3.11.4.Dockerfile | 105 ++++++++++++++++++++++++++++++++++ cuda/3.11.4.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 9 +-- scipy/3.11.4.Dockerfile | 124 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 16 +----- ver/3.11.4.Dockerfile | 70 +++++++++++++++++++++++ 7 files changed, 374 insertions(+), 31 deletions(-) create mode 100644 base/3.11.4.Dockerfile create mode 100644 cuda/3.11.4.Dockerfile create mode 100644 scipy/3.11.4.Dockerfile create mode 100644 ver/3.11.4.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 687a99f..9c11f81 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.10.13" + PYTHON_VERSION: "3.11.4" .before-script-build: &before-script-build - | @@ -185,13 +185,6 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - | - docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST - if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then - docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ - $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 - fi - docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/base/3.11.4.Dockerfile b/base/3.11.4.Dockerfile new file mode 100644 index 0000000..1352d62 --- /dev/null +++ b/base/3.11.4.Dockerfile @@ -0,0 +1,105 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.4 +ARG GIT_VERSION=2.42.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.4.Dockerfile b/cuda/3.11.4.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.4.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index faf8cc7..0b23012 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.10.13" + PYTHON_VERSION: "3.11.4" .before-script-build: &before-script-build - | @@ -177,13 +177,6 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - | - docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST - if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then - docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ - $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 - fi - docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/scipy/3.11.4.Dockerfile b/scipy/3.11.4.Dockerfile new file mode 100644 index 0000000..ceb0745 --- /dev/null +++ b/scipy/3.11.4.Dockerfile @@ -0,0 +1,124 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.4 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/08/24/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index ceae2e2..07d0678 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.10.13" + PYTHON_VERSION: "3.11.4" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" @@ -289,13 +289,6 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR - - docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR $CI_MANIFEST_LIST - if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then - docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR \ - $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 - fi - docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR - | if [[ "$CUDA_IMAGE_FLAVOR" == "runtime" ]]; then docker manifest create $CI_APP_REPO:$CI_APP_TAG $CI_MANIFEST_LIST @@ -304,13 +297,6 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST - if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then - docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ - $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 - fi - docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" diff --git a/ver/3.11.4.Dockerfile b/ver/3.11.4.Dockerfile new file mode 100644 index 0000000..2caa175 --- /dev/null +++ b/ver/3.11.4.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.4 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 90cfc91c626ca1b864aec4ad1a0a472c12f42fcd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 26 Aug 2023 08:04:46 +0200 Subject: [PATCH 006/324] Update Python to v3.11.5 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 5d569ca..dae8d95 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=11.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.11.4 \ + --build-arg PYTHON_VERSION=3.11.5 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 7777ce8..4f49d14 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.11.4 \ + --build-arg PYTHON_VERSION=3.11.5 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 9c11f81..f96be4a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.4" + PYTHON_VERSION: "3.11.5" .before-script-build: &before-script-build - | diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0b23012..d2b198c 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.4" + PYTHON_VERSION: "3.11.5" .before-script-build: &before-script-build - | diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 07d0678..7e5fd40 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.4" + PYTHON_VERSION: "3.11.5" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" From 922a32da432e69813591315dc001307a02e26f14 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 30 Aug 2023 14:57:19 +0200 Subject: [PATCH 007/324] scipy: Add package librsvg2-bin - Provide command-line utility rsvg-convert - Add PDF support for SVG images --- scipy/latest.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 7a3a98b..52716a6 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -24,6 +24,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && apt-get install -y --no-install-recommends \ fonts-roboto \ ghostscript \ + librsvg2-bin \ qpdf \ texinfo \ ## Install quarto From d75487a29f46e262ef9972b19e8591f978fe57a5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 3 Oct 2023 13:53:51 +0200 Subject: [PATCH 008/324] Freeze Python v3.11.5 --- base/3.11.5.Dockerfile | 105 +++++++++++++++++++++++++++++++++ cuda/3.11.5.Dockerfile | 72 +++++++++++++++++++++++ scipy/3.11.5.Dockerfile | 125 ++++++++++++++++++++++++++++++++++++++++ ver/3.11.5.Dockerfile | 70 ++++++++++++++++++++++ 4 files changed, 372 insertions(+) create mode 100644 base/3.11.5.Dockerfile create mode 100644 cuda/3.11.5.Dockerfile create mode 100644 scipy/3.11.5.Dockerfile create mode 100644 ver/3.11.5.Dockerfile diff --git a/base/3.11.5.Dockerfile b/base/3.11.5.Dockerfile new file mode 100644 index 0000000..a48f558 --- /dev/null +++ b/base/3.11.5.Dockerfile @@ -0,0 +1,105 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.5 +ARG GIT_VERSION=2.42.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.5.Dockerfile b/cuda/3.11.5.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.5.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.11.5.Dockerfile b/scipy/3.11.5.Dockerfile new file mode 100644 index 0000000..468226f --- /dev/null +++ b/scipy/3.11.5.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.5 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/10/02/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/3.11.5.Dockerfile b/ver/3.11.5.Dockerfile new file mode 100644 index 0000000..4eeb9af --- /dev/null +++ b/ver/3.11.5.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.5 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From a76f36ddb853c430e1f876bb283a62b6fadddfca Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 3 Oct 2023 14:18:02 +0200 Subject: [PATCH 009/324] Update Python to v3.11.6 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index dae8d95..2e7ff45 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=11.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.11.5 \ + --build-arg PYTHON_VERSION=3.11.6 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 4f49d14..d16a6f5 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.11.5 \ + --build-arg PYTHON_VERSION=3.11.6 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f96be4a..c2d5048 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.5" + PYTHON_VERSION: "3.11.6" .before-script-build: &before-script-build - | diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index d2b198c..df42f5b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.5" + PYTHON_VERSION: "3.11.6" .before-script-build: &before-script-build - | diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 7e5fd40..9835ebc 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.5" + PYTHON_VERSION: "3.11.6" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" From 8c56f72c59995454029a51757fff35bf32712c1c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 3 Nov 2023 08:15:56 +0100 Subject: [PATCH 010/324] base: Update Git to v2.42.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 0eee5c6..68e0684 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.42.0 +ARG GIT_VERSION=2.42.1 ARG GIT_LFS_VERSION=3.4.0 ARG PANDOC_VERSION=3.1.1 From 387942023c799c85c33413dd3825119919eef416 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 3 Nov 2023 09:17:45 +0100 Subject: [PATCH 011/324] base: Add package ncdu --- base/latest.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 68e0684..8b69a8a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -48,6 +48,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ libclang-dev \ man-db \ nano \ + ncdu \ procps \ psmisc \ screen \ From fe26c05cb880c7593550ae4a2026785aec50b74b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 21 Nov 2023 14:40:25 +0100 Subject: [PATCH 012/324] base: Update Git to v2.43.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 8b69a8a..29bd41f 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.42.1 +ARG GIT_VERSION=2.43.0 ARG GIT_LFS_VERSION=3.4.0 ARG PANDOC_VERSION=3.1.1 From b73f5aeb1ddba311872a40436afa379d1dbf7a56 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Nov 2023 16:19:34 +0100 Subject: [PATCH 013/324] Update Python to v3.12.0 - scipy: Temporarily remove numba - scipy: Temporarily add libhdf5-dev - For h5py wheels --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- scipy/latest.Dockerfile | 4 +++- ver/.gitlab-ci.yml | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CUDA.md b/CUDA.md index 2e7ff45..73a9d93 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=11.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.11.6 \ + --build-arg PYTHON_VERSION=3.12.0 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index d16a6f5..b123ae1 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.11.6 \ + --build-arg PYTHON_VERSION=3.12.0 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index c2d5048..293acbf 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.6" + PYTHON_VERSION: "3.12.0" .before-script-build: &before-script-build - | diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index df42f5b..de4942c 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.6" + PYTHON_VERSION: "3.12.0" .before-script-build: &before-script-build - | diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 52716a6..d61b401 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -27,6 +27,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ librsvg2-bin \ qpdf \ texinfo \ + ## For h5py wheels + libhdf5-dev \ ## Install quarto && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ && mkdir -p /opt/quarto \ @@ -95,7 +97,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ #ipympl \ #ipywidgets \ matplotlib \ - numba \ + #numba \ numexpr \ numpy \ pandas \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 9835ebc..b793262 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.11.6" + PYTHON_VERSION: "3.12.0" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" From 74a3c6cd77af03609a98d54c971e8ca7dadb313c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 5 Dec 2023 14:00:09 +0100 Subject: [PATCH 014/324] Update .gitlab-ci.yml --- base/.gitlab-ci.yml | 26 +++++++++++++++++++++++--- scipy/.gitlab-ci.yml | 26 +++++++++++++++++++++++--- ver/.gitlab-ci.yml | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 6 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 293acbf..ecdfe97 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,8 @@ .env: variables: PYTHON_VERSION: "3.12.0" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build - | @@ -144,21 +146,21 @@ build-manifest:latest-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - | + docker manifest create $CI_APP_REPO:latest $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:latest \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:latest - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ @@ -185,6 +187,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ + fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index de4942c..b8eec18 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,8 @@ .env: variables: PYTHON_VERSION: "3.12.0" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build - | @@ -136,21 +138,21 @@ build-manifest:latest-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG - - | + docker manifest create $CI_APP_REPO:latest $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:latest \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:latest - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN - - | + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ @@ -177,6 +179,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ + $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ + fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED changes: diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b793262..c047ca9 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -4,6 +4,8 @@ CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all - | @@ -289,6 +291,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR + fi - | if [[ "$CUDA_IMAGE_FLAVOR" == "runtime" ]]; then docker manifest create $CI_APP_REPO:$CI_APP_TAG $CI_MANIFEST_LIST @@ -297,6 +317,24 @@ build-manifest:version-linux-multiarch: $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 fi docker manifest push $CI_APP_REPO:$CI_APP_TAG + + if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN + fi + + if [[ "$TAG_VERSION_MAJ" == "true" ]]; then + docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST + if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then + docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \ + $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 + fi + docker manifest push $CI_APP_REPO:$VERSION_MAJ + fi fi rules: - if: $CI_COMMIT_BRANCH == "freeze-version" From bb0e5659f122d1a403829bdcab98e0178c53ca4a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 5 Dec 2023 14:06:51 +0100 Subject: [PATCH 015/324] Freeze Python v3.11.6 --- base/.gitlab-ci.yml | 4 +- base/3.11.6.Dockerfile | 106 ++++++++++++++++++++++++++++++++++ cuda/3.11.6.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.11.6.Dockerfile | 125 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.11.6.Dockerfile | 70 ++++++++++++++++++++++ 7 files changed, 379 insertions(+), 6 deletions(-) create mode 100644 base/3.11.6.Dockerfile create mode 100644 cuda/3.11.6.Dockerfile create mode 100644 scipy/3.11.6.Dockerfile create mode 100644 ver/3.11.6.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ecdfe97..dd59acb 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.0" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.11.6" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.11.6.Dockerfile b/base/3.11.6.Dockerfile new file mode 100644 index 0000000..a3c6344 --- /dev/null +++ b/base/3.11.6.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.6 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.6.Dockerfile b/cuda/3.11.6.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.6.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index b8eec18..5b6ecec 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.0" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.11.6" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.11.6.Dockerfile b/scipy/3.11.6.Dockerfile new file mode 100644 index 0000000..3c98fe4 --- /dev/null +++ b/scipy/3.11.6.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.6 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/12/04/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index c047ca9..0f8f8e1 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.12.0" + PYTHON_VERSION: "3.11.6" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.11.6.Dockerfile b/ver/3.11.6.Dockerfile new file mode 100644 index 0000000..b1f0bcf --- /dev/null +++ b/ver/3.11.6.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.6 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 1f41d25814f8e440713ed8e3dc1f7dff5bd31742 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 5 Dec 2023 14:38:03 +0100 Subject: [PATCH 016/324] Release Python v3.11.7 --- base/.gitlab-ci.yml | 4 +- base/3.11.7.Dockerfile | 106 ++++++++++++++++++++++++++++++++++ cuda/3.11.7.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.11.7.Dockerfile | 125 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.11.7.Dockerfile | 70 ++++++++++++++++++++++ 7 files changed, 379 insertions(+), 6 deletions(-) create mode 100644 base/3.11.7.Dockerfile create mode 100644 cuda/3.11.7.Dockerfile create mode 100644 scipy/3.11.7.Dockerfile create mode 100644 ver/3.11.7.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index dd59acb..4fbe8ea 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.6" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.7" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.11.7.Dockerfile b/base/3.11.7.Dockerfile new file mode 100644 index 0000000..8962c57 --- /dev/null +++ b/base/3.11.7.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.7 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.7.Dockerfile b/cuda/3.11.7.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.7.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 5b6ecec..167badf 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.6" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.7" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.11.7.Dockerfile b/scipy/3.11.7.Dockerfile new file mode 100644 index 0000000..aa05548 --- /dev/null +++ b/scipy/3.11.7.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.7 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0f8f8e1..578f4cf 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.6" + PYTHON_VERSION: "3.11.7" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.11.7.Dockerfile b/ver/3.11.7.Dockerfile new file mode 100644 index 0000000..6421a32 --- /dev/null +++ b/ver/3.11.7.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.7 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 6dab1494da00a4f5f9bbf47a0c751b85a419f1cc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 8 Dec 2023 10:29:49 +0100 Subject: [PATCH 017/324] Freeze Python v3.12.0 --- base/.gitlab-ci.yml | 4 +- base/3.12.0.Dockerfile | 106 +++++++++++++++++++++++++++++++++ cuda/3.12.0.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.0.Dockerfile | 127 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.12.0.Dockerfile | 70 ++++++++++++++++++++++ 7 files changed, 381 insertions(+), 6 deletions(-) create mode 100644 base/3.12.0.Dockerfile create mode 100644 cuda/3.12.0.Dockerfile create mode 100644 scipy/3.12.0.Dockerfile create mode 100644 ver/3.12.0.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 4fbe8ea..d9e6054 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.7" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.0.Dockerfile b/base/3.12.0.Dockerfile new file mode 100644 index 0000000..8c28eff --- /dev/null +++ b/base/3.12.0.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.0 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.0 +ARG PANDOC_VERSION=3.1.1 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + [ -s "/usr/bin/$src" ]; \ + [ ! -e "/usr/bin/$dst" ]; \ + ln -svT "$src" "/usr/bin/$dst"; \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.0.Dockerfile b/cuda/3.12.0.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.12.0.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 167badf..31fba2f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.7" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.0.Dockerfile b/scipy/3.12.0.Dockerfile new file mode 100644 index 0000000..fffca59 --- /dev/null +++ b/scipy/3.12.0.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.0 +ARG QUARTO_VERSION=1.3.450 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/12/07/tlnet + +FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## For h5py wheels + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 578f4cf..d90c05c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.7" + PYTHON_VERSION: "3.12.0" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.12.0.Dockerfile b/ver/3.12.0.Dockerfile new file mode 100644 index 0000000..982efd0 --- /dev/null +++ b/ver/3.12.0.Dockerfile @@ -0,0 +1,70 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.12.0 + +FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 5bed4abf2d95365ca809c68dd0ef010844d4d4d0 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 8 Dec 2023 10:54:52 +0100 Subject: [PATCH 018/324] Update Python to v3.12.1 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 73a9d93..d0c6396 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=11.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.0 \ + --build-arg PYTHON_VERSION=3.12.1 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index b123ae1..4a63057 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.0 \ + --build-arg PYTHON_VERSION=3.12.1 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index d9e6054..d01a97e 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.0" + PYTHON_VERSION: "3.12.1" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 31fba2f..06113f7 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.0" + PYTHON_VERSION: "3.12.1" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d90c05c..1600727 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.0" + PYTHON_VERSION: "3.12.1" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" From 08fc19ec29976786c75c985c4d5b4b4afad37969 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 8 Dec 2023 13:13:35 +0100 Subject: [PATCH 019/324] scipy: Set CTAN date to 2023-12-08 for Python v3.12.0 - Python v3.12.1 was officialy released on 2023-12-08 --- scipy/3.12.0.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/3.12.0.Dockerfile b/scipy/3.12.0.Dockerfile index fffca59..3cfd414 100644 --- a/scipy/3.12.0.Dockerfile +++ b/scipy/3.12.0.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.12.0 ARG QUARTO_VERSION=1.3.450 -ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/12/07/tlnet +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2023/12/08/tlnet FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} From c82d7c77a2bea9a39f1605a132aca18094246e42 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 10 Dec 2023 17:27:11 +0100 Subject: [PATCH 020/324] Allow building with the system's Python - Without build argument PYTHON_VERSION set - For any suitable BUILD_ON_IMAGE --- base/latest.Dockerfile | 10 +++++----- scipy/latest.Dockerfile | 4 ++-- ver/latest.Dockerfile | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 29bd41f..c412a9c 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -9,7 +9,7 @@ ARG PANDOC_VERSION=3.1.1 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi -FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive @@ -19,7 +19,7 @@ ARG GIT_LFS_VERSION ARG PANDOC_VERSION ARG BUILD_START -ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ GIT_VERSION=${GIT_VERSION} \ GIT_LFS_VERSION=${GIT_LFS_VERSION} \ PANDOC_VERSION=${PANDOC_VERSION} \ @@ -77,9 +77,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ ## ("/usr/bin/python" and friends) for src in pydoc3 python3 python3-config; do \ dst="$(echo "$src" | tr -d 3)"; \ - [ -s "/usr/bin/$src" ]; \ - [ ! -e "/usr/bin/$dst" ]; \ - ln -svT "$src" "/usr/bin/$dst"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ done; \ else \ ## Force update pip, setuptools and wheel diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index d61b401..5dc00fc 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -3,7 +3,7 @@ ARG PYTHON_VERSION ARG QUARTO_VERSION=1.3.450 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet -FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive @@ -12,7 +12,7 @@ ARG QUARTO_VERSION ARG CTAN_REPO ARG BUILD_START -ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ QUARTO_VERSION=${QUARTO_VERSION} \ CTAN_REPO=${CTAN_REPO} \ BUILD_DATE=${BUILD_START} diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index d769fed..ae6a476 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -6,7 +6,7 @@ ARG BLAS=libopenblas-dev ARG CUDA_VERSION ARG PYTHON_VERSION -FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} @@ -53,6 +53,19 @@ RUN apt-get update \ unzip \ zip \ zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ ## Update locale && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ && locale-gen \ From 60eb3812fd6e7d4b69f8e871c76589652e219877 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 16 Dec 2023 21:06:47 +0100 Subject: [PATCH 021/324] base: Update Git LFS to v3.4.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index c412a9c..5221d01 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG GIT_VERSION=2.43.0 -ARG GIT_LFS_VERSION=3.4.0 +ARG GIT_LFS_VERSION=3.4.1 ARG PANDOC_VERSION=3.1.1 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From b44412e543efe87f9d5df0268a0b9cc00f6ef854 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 25 Jan 2024 17:08:05 +0100 Subject: [PATCH 022/324] scipy: Update Quarto to v1.4.549 --- scipy/latest.Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 5dc00fc..60eda93 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.3.450 +ARG QUARTO_VERSION=1.4.549 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} @@ -35,9 +35,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ ## Remove quarto pandoc - && rm /opt/quarto/bin/tools/pandoc \ + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Link to system pandoc - && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Tell APT about the TeX Live installation ## by building a dummy package using equivs && apt-get install -y --no-install-recommends equivs \ From f9cfa1e957aea81748361ddca4d4ff032a916f4d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 25 Jan 2024 17:10:05 +0100 Subject: [PATCH 023/324] base: Update pandoc to v3.1.11 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 5221d01..025e664 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG GIT_VERSION=2.43.0 ARG GIT_LFS_VERSION=3.4.1 -ARG PANDOC_VERSION=3.1.1 +ARG PANDOC_VERSION=3.1.11 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi From 766f80463f024d193267ab95f0a011839cc8feeb Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 1 Feb 2024 17:43:26 +0100 Subject: [PATCH 024/324] scipy: Add numba again --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 60eda93..16eb83f 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -97,7 +97,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ #ipympl \ #ipywidgets \ matplotlib \ - #numba \ + numba \ numexpr \ numpy \ pandas \ From 4929a77dc387beef47d15ee360e831380de3a578 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 7 Feb 2024 15:33:44 +0100 Subject: [PATCH 025/324] Freeze Python v3.11.7 --- base/.gitlab-ci.yml | 2 +- base/3.11.7.Dockerfile | 14 +++++++------- scipy/.gitlab-ci.yml | 2 +- scipy/3.11.7.Dockerfile | 12 ++++++------ ver/.gitlab-ci.yml | 2 +- ver/3.11.7.Dockerfile | 15 ++++++++++++++- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index d01a97e..d686cf9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.1" + PYTHON_VERSION: "3.11.7" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.11.7.Dockerfile b/base/3.11.7.Dockerfile index 8962c57..50a7158 100644 --- a/base/3.11.7.Dockerfile +++ b/base/3.11.7.Dockerfile @@ -3,13 +3,13 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.11.7 ARG GIT_VERSION=2.43.0 -ARG GIT_LFS_VERSION=3.4.0 -ARG PANDOC_VERSION=3.1.1 +ARG GIT_LFS_VERSION=3.4.1 +ARG PANDOC_VERSION=3.1.11 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi -FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive @@ -19,7 +19,7 @@ ARG GIT_LFS_VERSION ARG PANDOC_VERSION ARG BUILD_START -ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ GIT_VERSION=${GIT_VERSION} \ GIT_LFS_VERSION=${GIT_LFS_VERSION} \ PANDOC_VERSION=${PANDOC_VERSION} \ @@ -77,9 +77,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ ## ("/usr/bin/python" and friends) for src in pydoc3 python3 python3-config; do \ dst="$(echo "$src" | tr -d 3)"; \ - [ -s "/usr/bin/$src" ]; \ - [ ! -e "/usr/bin/$dst" ]; \ - ln -svT "$src" "/usr/bin/$dst"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ done; \ else \ ## Force update pip, setuptools and wheel diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 06113f7..bd2dc5d 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.1" + PYTHON_VERSION: "3.11.7" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.11.7.Dockerfile b/scipy/3.11.7.Dockerfile index aa05548..c3d50e7 100644 --- a/scipy/3.11.7.Dockerfile +++ b/scipy/3.11.7.Dockerfile @@ -1,9 +1,9 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.11.7 -ARG QUARTO_VERSION=1.3.450 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.4.549 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/02/06/tlnet -FROM ${BUILD_ON_IMAGE}:${PYTHON_VERSION} +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive @@ -12,7 +12,7 @@ ARG QUARTO_VERSION ARG CTAN_REPO ARG BUILD_START -ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${PYTHON_VERSION} \ +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ QUARTO_VERSION=${QUARTO_VERSION} \ CTAN_REPO=${CTAN_REPO} \ BUILD_DATE=${BUILD_START} @@ -33,9 +33,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ ## Remove quarto pandoc - && rm /opt/quarto/bin/tools/pandoc \ + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Link to system pandoc - && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc \ + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Tell APT about the TeX Live installation ## by building a dummy package using equivs && apt-get install -y --no-install-recommends equivs \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1600727..9866258 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.1" + PYTHON_VERSION: "3.11.7" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" diff --git a/ver/3.11.7.Dockerfile b/ver/3.11.7.Dockerfile index 6421a32..83760e5 100644 --- a/ver/3.11.7.Dockerfile +++ b/ver/3.11.7.Dockerfile @@ -6,7 +6,7 @@ ARG BLAS=libopenblas-dev ARG CUDA_VERSION=11.8.0 ARG PYTHON_VERSION=3.11.7 -FROM glcr.b-data.ch/python/psi/${PYTHON_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as psi +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} @@ -53,6 +53,19 @@ RUN apt-get update \ unzip \ zip \ zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ ## Update locale && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ && locale-gen \ From 6754ac93509d48adb197e8f3f8b7d0d17637e798 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 7 Feb 2024 16:01:24 +0100 Subject: [PATCH 026/324] Release Python v3.11.8 --- base/.gitlab-ci.yml | 4 +- base/3.11.8.Dockerfile | 106 ++++++++++++++++++++++++++++++++++ cuda/3.11.8.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.11.8.Dockerfile | 125 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.11.8.Dockerfile | 83 ++++++++++++++++++++++++++ 7 files changed, 392 insertions(+), 6 deletions(-) create mode 100644 base/3.11.8.Dockerfile create mode 100644 cuda/3.11.8.Dockerfile create mode 100644 scipy/3.11.8.Dockerfile create mode 100644 ver/3.11.8.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index d686cf9..aef7b02 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.7" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.8" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.11.8.Dockerfile b/base/3.11.8.Dockerfile new file mode 100644 index 0000000..e0f203d --- /dev/null +++ b/base/3.11.8.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION==3.11.8 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.8.Dockerfile b/cuda/3.11.8.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.8.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index bd2dc5d..e62f3cd 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.7" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.8" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.11.8.Dockerfile b/scipy/3.11.8.Dockerfile new file mode 100644 index 0000000..a603071 --- /dev/null +++ b/scipy/3.11.8.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.8 +ARG QUARTO_VERSION=1.4.549 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 9866258..03b81d5 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.7" + PYTHON_VERSION: "3.11.8" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.11.8.Dockerfile b/ver/3.11.8.Dockerfile new file mode 100644 index 0000000..35847e8 --- /dev/null +++ b/ver/3.11.8.Dockerfile @@ -0,0 +1,83 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.8 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 527077870aee06a0c5b24c3586274e898b0cbe64 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 7 Feb 2024 16:06:55 +0100 Subject: [PATCH 027/324] Release Python v3.11.8 --- base/3.11.8.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/3.11.8.Dockerfile b/base/3.11.8.Dockerfile index e0f203d..4f17fa6 100644 --- a/base/3.11.8.Dockerfile +++ b/base/3.11.8.Dockerfile @@ -1,7 +1,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver -ARG PYTHON_VERSION==3.11.8 +ARG PYTHON_VERSION=3.11.8 ARG GIT_VERSION=2.43.0 ARG GIT_LFS_VERSION=3.4.1 ARG PANDOC_VERSION=3.1.11 From a38b140f9d49a0248f0483dbeae67e1fb7d1b9b0 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 7 Feb 2024 16:47:21 +0100 Subject: [PATCH 028/324] Freeze Python v3.12.1 --- base/.gitlab-ci.yml | 4 +- base/3.12.1.Dockerfile | 106 +++++++++++++++++++++++++++++++++ cuda/3.12.1.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.1.Dockerfile | 127 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.12.1.Dockerfile | 83 ++++++++++++++++++++++++++ 7 files changed, 394 insertions(+), 6 deletions(-) create mode 100644 base/3.12.1.Dockerfile create mode 100644 cuda/3.12.1.Dockerfile create mode 100644 scipy/3.12.1.Dockerfile create mode 100644 ver/3.12.1.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index aef7b02..d01a97e 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.8" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.1" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.1.Dockerfile b/base/3.12.1.Dockerfile new file mode 100644 index 0000000..31d3386 --- /dev/null +++ b/base/3.12.1.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.1 +ARG GIT_VERSION=2.43.0 +ARG GIT_LFS_VERSION=3.4.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.1.Dockerfile b/cuda/3.12.1.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.12.1.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e62f3cd..06113f7 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.8" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.1" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.1.Dockerfile b/scipy/3.12.1.Dockerfile new file mode 100644 index 0000000..0945587 --- /dev/null +++ b/scipy/3.12.1.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.1 +ARG QUARTO_VERSION=1.4.549 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/02/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## For h5py wheels + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 03b81d5..1600727 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.8" + PYTHON_VERSION: "3.12.1" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.12.1.Dockerfile b/ver/3.12.1.Dockerfile new file mode 100644 index 0000000..b715d20 --- /dev/null +++ b/ver/3.12.1.Dockerfile @@ -0,0 +1,83 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.12.1 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +LABEL org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 9ccd07ced1ecbef59f9c4fcb13ff28787a03bbcc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 7 Feb 2024 17:15:03 +0100 Subject: [PATCH 029/324] Update Python to v3.12.2 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index d0c6396..2dc9c97 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=11.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.1 \ + --build-arg PYTHON_VERSION=3.12.2 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 4a63057..3fe3815 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.1 \ + --build-arg PYTHON_VERSION=3.12.2 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index d01a97e..ceec108 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.1" + PYTHON_VERSION: "3.12.2" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 06113f7..5f65df8 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.1" + PYTHON_VERSION: "3.12.2" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1600727..1baf591 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.1" + PYTHON_VERSION: "3.12.2" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" From 06aa818745eb9bdbb8889ffdbd5f235cc6685f98 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 11 Feb 2024 12:38:31 +0100 Subject: [PATCH 030/324] base: Update Git to v2.43.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 025e664..cd3856a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.43.0 +ARG GIT_VERSION=2.43.1 ARG GIT_LFS_VERSION=3.4.1 ARG PANDOC_VERSION=3.1.11 From 9b5aaa8c73d75a86e240750c9c49cb05a91ddfa6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 15 Feb 2024 09:28:58 +0100 Subject: [PATCH 031/324] base: Update Git to v2.43.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index cd3856a..02dc8fe 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.43.1 +ARG GIT_VERSION=2.43.2 ARG GIT_LFS_VERSION=3.4.1 ARG PANDOC_VERSION=3.1.11 From 28caeb1702a5f822f21582a6f8ad4b88f0add3ef Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 16 Feb 2024 15:30:01 +0100 Subject: [PATCH 032/324] pubtools: Update Quarto to v1.4.550 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 16eb83f..c2bca07 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.549 +ARG QUARTO_VERSION=1.4.550 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 15b50d3f3532a2bb7c430200567e4a49a6cd04d7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 25 Feb 2024 19:39:04 +0100 Subject: [PATCH 033/324] base: Update Git to v2.44.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 02dc8fe..dc7f5bc 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.43.2 +ARG GIT_VERSION=2.44.0 ARG GIT_LFS_VERSION=3.4.1 ARG PANDOC_VERSION=3.1.11 From d30dd9ed3527b94ad0aa0f78440fd6a74b0bc769 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 7 Mar 2024 12:15:09 +0100 Subject: [PATCH 034/324] scipy: Update Quarto to v1.4.551 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index c2bca07..df17869 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.550 +ARG QUARTO_VERSION=1.4.551 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 4549ece03f254cd967cb479a3846ab6a706ab4c5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 8 Mar 2024 08:51:17 +0100 Subject: [PATCH 035/324] base: Update Git LFS to v3.5.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index dc7f5bc..0b303d5 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG GIT_VERSION=2.44.0 -ARG GIT_LFS_VERSION=3.4.1 +ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.1.11 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From a06ae8801abcbc526f9101b8301898d13e685bc5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 26 Mar 2024 16:35:37 +0100 Subject: [PATCH 036/324] scipy: Update Quarto to v1.4.552 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index df17869..6b5c64a 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.551 +ARG QUARTO_VERSION=1.4.552 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 99312e4fb4937a5a34e1a684d95baa69e7c6ad9e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 28 Mar 2024 13:58:23 +0100 Subject: [PATCH 037/324] CUDA images: Correct image license --- ver/.gitlab-ci.yml | 4 ++++ ver/latest.Dockerfile | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1baf591..882921c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -75,6 +75,7 @@ build:latest-linux-amd64: --build-arg CUDA_IMAGE --build-arg CUDA_VERSION --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg PYTHON_VERSION --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 @@ -113,6 +114,7 @@ build:latest-linux-arm64v8: --build-arg CUDA_IMAGE --build-arg CUDA_VERSION --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg PYTHON_VERSION --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 @@ -150,6 +152,7 @@ build:version-linux-amd64: --build-arg BASE_IMAGE_TAG --build-arg CUDA_IMAGE --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/$PYTHON_VERSION.Dockerfile . @@ -183,6 +186,7 @@ build:version-linux-arm64v8: --build-arg BASE_IMAGE_TAG --build-arg CUDA_IMAGE --build-arg CUDA_IMAGE_SUBTAG + --build-arg CUDA_IMAGE_LICENSE --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/$PYTHON_VERSION.Dockerfile . diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index ae6a476..2feef7e 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -10,7 +10,10 @@ FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTH FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} -LABEL org.opencontainers.image.licenses="MIT" \ +ARG CUDA_IMAGE_LICENSE +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-MIT} + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ org.opencontainers.image.vendor="b-data GmbH" \ org.opencontainers.image.authors="Olivier Benz " From 366f9521dff86f7d935b49901b100e7c40919e04 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 2 Apr 2024 09:37:16 +0200 Subject: [PATCH 038/324] Hard-code default image licenses --- ver/latest.Dockerfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 2feef7e..81b554f 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -10,14 +10,6 @@ FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTH FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} -ARG CUDA_IMAGE_LICENSE -ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-MIT} - -LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ - org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ - org.opencontainers.image.vendor="b-data GmbH" \ - org.opencontainers.image.authors="Olivier Benz " - ARG DEBIAN_FRONTEND=noninteractive ARG BASE_IMAGE @@ -29,6 +21,14 @@ ARG CUDA_VERSION ARG PYTHON_VERSION ARG BUILD_START +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ + org.opencontainers.image.vendor="b-data GmbH" \ + org.opencontainers.image.authors="Olivier Benz " + ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ From 70dab19190d6e39cd06f6cc7e9eeabb4ee949833 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 2 Apr 2024 14:11:12 +0200 Subject: [PATCH 039/324] ver: Allow setting LABELs via build arguments --- ver/latest.Dockerfile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 81b554f..30113bf 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -23,11 +23,14 @@ ARG BUILD_START ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ - org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ - org.opencontainers.image.vendor="b-data GmbH" \ - org.opencontainers.image.authors="Olivier Benz " + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ From d605deaeb43079be6631832c98b04277b0e3aaaa Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 4 Apr 2024 14:11:22 +0200 Subject: [PATCH 040/324] Freeze Python v3.11.8 --- base/.gitlab-ci.yml | 2 +- base/3.11.8.Dockerfile | 4 ++-- scipy/.gitlab-ci.yml | 2 +- scipy/3.11.8.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 2 +- ver/3.11.8.Dockerfile | 16 +++++++++++----- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ceec108..e566408 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.2" + PYTHON_VERSION: "3.11.8" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.11.8.Dockerfile b/base/3.11.8.Dockerfile index 4f17fa6..a1c9de9 100644 --- a/base/3.11.8.Dockerfile +++ b/base/3.11.8.Dockerfile @@ -2,8 +2,8 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.11.8 -ARG GIT_VERSION=2.43.0 -ARG GIT_LFS_VERSION=3.4.1 +ARG GIT_VERSION=2.44.0 +ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.1.11 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 5f65df8..9a83caa 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.2" + PYTHON_VERSION: "3.11.8" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.11.8.Dockerfile b/scipy/3.11.8.Dockerfile index a603071..774f593 100644 --- a/scipy/3.11.8.Dockerfile +++ b/scipy/3.11.8.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.11.8 -ARG QUARTO_VERSION=1.4.549 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.4.552 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/04/02/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 882921c..e1de6af 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.2" + PYTHON_VERSION: "3.11.8" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" diff --git a/ver/3.11.8.Dockerfile b/ver/3.11.8.Dockerfile index 35847e8..896d9c1 100644 --- a/ver/3.11.8.Dockerfile +++ b/ver/3.11.8.Dockerfile @@ -10,11 +10,6 @@ FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTH FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} -LABEL org.opencontainers.image.licenses="MIT" \ - org.opencontainers.image.source="https://gitlab.b-data.ch/python/docker-stack" \ - org.opencontainers.image.vendor="b-data GmbH" \ - org.opencontainers.image.authors="Olivier Benz " - ARG DEBIAN_FRONTEND=noninteractive ARG BASE_IMAGE @@ -26,6 +21,17 @@ ARG CUDA_VERSION ARG PYTHON_VERSION ARG BUILD_START +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ From 74d233f45175aacd4fd3dd740dd637789c72ddc2 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 4 Apr 2024 14:38:57 +0200 Subject: [PATCH 041/324] Release Python v3.11.9 - scipy: Update Quarto to v1.4.553 --- base/.gitlab-ci.yml | 4 +- base/3.11.9.Dockerfile | 106 ++++++++++++++++++++++++++++++++++ cuda/3.11.9.Dockerfile | 72 +++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.11.9.Dockerfile | 125 ++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.11.9.Dockerfile | 89 ++++++++++++++++++++++++++++ 7 files changed, 398 insertions(+), 6 deletions(-) create mode 100644 base/3.11.9.Dockerfile create mode 100644 cuda/3.11.9.Dockerfile create mode 100644 scipy/3.11.9.Dockerfile create mode 100644 ver/3.11.9.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index e566408..1deaf7f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.8" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.9" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.11.9.Dockerfile b/base/3.11.9.Dockerfile new file mode 100644 index 0000000..ca2adcb --- /dev/null +++ b/base/3.11.9.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.9 +ARG GIT_VERSION=2.44.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.9.Dockerfile b/cuda/3.11.9.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.9.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 9a83caa..9961b01 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.8" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.9" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.11.9.Dockerfile b/scipy/3.11.9.Dockerfile new file mode 100644 index 0000000..3a0c566 --- /dev/null +++ b/scipy/3.11.9.Dockerfile @@ -0,0 +1,125 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.9 +ARG QUARTO_VERSION=1.4.553 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index e1de6af..670e7a8 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.8" + PYTHON_VERSION: "3.11.9" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.11.9.Dockerfile b/ver/3.11.9.Dockerfile new file mode 100644 index 0000000..d22e4ef --- /dev/null +++ b/ver/3.11.9.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.9 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 5ebd741363c1c5bd0799843c7423f28642aeb435 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 4 Apr 2024 15:59:08 +0200 Subject: [PATCH 042/324] scipy: Update Quarto to v1.4.553 --- base/.gitlab-ci.yml | 4 ++-- scipy/.gitlab-ci.yml | 4 ++-- scipy/latest.Dockerfile | 2 +- ver/.gitlab-ci.yml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 1deaf7f..ceec108 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.9" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.2" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 9961b01..5f65df8 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.9" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.2" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 6b5c64a..8de542b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.552 +ARG QUARTO_VERSION=1.4.553 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 670e7a8..882921c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.9" + PYTHON_VERSION: "3.12.2" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all From f7959f446186d891570c7a28bc3ded6b533d3060 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 10 Apr 2024 06:57:30 +0200 Subject: [PATCH 043/324] Freeze Python v3.12.2 --- base/3.12.2.Dockerfile | 106 +++++++++++++++++++++++++++++++++ cuda/3.12.2.Dockerfile | 72 +++++++++++++++++++++++ scipy/3.12.2.Dockerfile | 127 ++++++++++++++++++++++++++++++++++++++++ ver/3.12.2.Dockerfile | 89 ++++++++++++++++++++++++++++ 4 files changed, 394 insertions(+) create mode 100644 base/3.12.2.Dockerfile create mode 100644 cuda/3.12.2.Dockerfile create mode 100644 scipy/3.12.2.Dockerfile create mode 100644 ver/3.12.2.Dockerfile diff --git a/base/3.12.2.Dockerfile b/base/3.12.2.Dockerfile new file mode 100644 index 0000000..bae575b --- /dev/null +++ b/base/3.12.2.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.2 +ARG GIT_VERSION=2.44.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.2.Dockerfile b/cuda/3.12.2.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.12.2.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.12.2.Dockerfile b/scipy/3.12.2.Dockerfile new file mode 100644 index 0000000..62305dc --- /dev/null +++ b/scipy/3.12.2.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.2 +ARG QUARTO_VERSION=1.4.553 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/04/09/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## For h5py wheels + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/3.12.2.Dockerfile b/ver/3.12.2.Dockerfile new file mode 100644 index 0000000..989eebe --- /dev/null +++ b/ver/3.12.2.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.12.2 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 5dce44a5f8ad35b3b329a9de01069c855e50009d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 10 Apr 2024 07:23:01 +0200 Subject: [PATCH 044/324] Update Python to v3.12.3 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 2dc9c97..d002402 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=11.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.2 \ + --build-arg PYTHON_VERSION=3.12.3 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 3fe3815..da6f064 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.2 \ + --build-arg PYTHON_VERSION=3.12.3 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ceec108..cb42776 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.2" + PYTHON_VERSION: "3.12.3" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 5f65df8..e88b8b6 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.2" + PYTHON_VERSION: "3.12.3" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 882921c..d9f5821 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.2" + PYTHON_VERSION: "3.12.3" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" From 6ae8f8b55e4714246ab72ad21e7f623abe493835 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 25 Apr 2024 07:40:37 +0200 Subject: [PATCH 045/324] Update Python to v3.12.3 - CUDA images: Update CUDA to v12.4.1 --- CUDA.md | 12 +- cuda/latest.Dockerfile | 237 ++++++++++++++++++++++++++++++++++------ scipy/latest.Dockerfile | 2 +- ver/.gitlab-ci.yml | 26 +++-- 4 files changed, 225 insertions(+), 52 deletions(-) diff --git a/CUDA.md b/CUDA.md index d002402..7cbaac3 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,8 +62,8 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=11.8.0 \ - --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ + --build-arg CUDA_VERSION=12.4.1 \ + --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.12.3 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . @@ -74,8 +74,10 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg LIBNVINFER_VERSION=8.5.3-1 \ - --build-arg LIBNVINFER_VERSION_MAJ=8 \ + --build-arg CUDNN_VERSION=8.9.7.29 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ + --build-arg LIBNVINFER_VERSION=10.0.0.6 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.4 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . @@ -90,7 +92,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_IMAGE_SUBTAG=cudnn8-runtime-ubuntu22.04 \ + --build-arg CUDA_IMAGE_SUBTAG=[cudnn8-]runtime-ubuntu22.04 \ -t cuda/python/ver:MAJOR.MINOR.PATCH \ -f ver/MAJOR.MINOR.PATCH.Dockerfile . ``` diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 1c41957..e8307c9 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -1,20 +1,142 @@ +ARG CUDNN_VERSION +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN + ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR -ARG CUDA_HOME=/usr/local/cuda -ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 -FROM ${BUILD_ON_IMAGE} +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN -ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_MAJ +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf ARG CUDA_IMAGE_FLAVOR ARG CUPTI_AVAILABLE ARG BUILD_START -ARG CUDA_HOME -ARG NVBLAS_CONFIG_FILE - ENV CUDA_HOME=${CUDA_HOME} \ NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ @@ -23,9 +145,21 @@ ENV CUDA_HOME=${CUDA_HOME} \ RUN cpuBlasLib="$(update-alternatives --query \ libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ ## Unminimise if the system has been minimised && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + apt-mark hold \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ fi \ ## NVBLAS log configuration && touch /var/log/nvblas.log \ @@ -35,35 +169,68 @@ RUN cpuBlasLib="$(update-alternatives --query \ && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ ## Install TensorRT - ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) - && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ - ## Install development libraries and headers - ## if devel-flavor of CUDA image is used - if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ - CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ - apt-get update; \ - apt-get -y install --no-install-recommends \ - libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ - ## Keep apt from auto upgrading the libnvinfer packages - apt-mark hold \ - libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer${LIBNVINFER_VERSION_MAJ} \ - libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.17 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 - ## Create symlink when only TensorRT libraries version > 7 are available - trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ - grep 'libnvinfer.so.[0-9]\+$'); \ - trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ - grep 'libnvinfer_plugin.so.[0-9]\+$'); \ - if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ - ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ - ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ - fi \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ fi \ ## Clean up && rm -rf /var/lib/apt/lists/* diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 8de542b..4442b19 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -27,7 +27,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ librsvg2-bin \ qpdf \ texinfo \ - ## For h5py wheels + ## Python: For h5py wheels (arm64) libhdf5-dev \ ## Install quarto && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d9f5821..a30ce60 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,9 +1,13 @@ .env: variables: PYTHON_VERSION: "3.12.3" - CUDA_VERSION: "11.8.0" - LIBNVINFER_VERSION: "8.5.3-1" - LIBNVINFER_VERSION_MAJ: "8" + CUDA_VERSION: "12.4.1" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" + LIBNVINFER_VERSION_AMD64: "10.0.0.6" + LIBNVINFER_VERSION_ARM64: "10.0.0.6" + LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" @@ -84,9 +88,11 @@ build:latest-linux-amd64: - | if [[ ! -z "$CUDA_IMAGE" ]]; then docker build \ + --build-arg CUDNN_VERSION_AMD64 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN \ + --build-arg LIBNVINFER_VERSION_AMD64 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -123,9 +129,11 @@ build:latest-linux-arm64v8: - | if [[ ! -z "$CUDA_IMAGE" ]]; then docker build \ + --build-arg CUDNN_VERSION_ARM64 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN \ + --build-arg LIBNVINFER_VERSION_ARM64 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -160,8 +168,6 @@ build:version-linux-amd64: if [[ ! -z "$CUDA_IMAGE" ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ @@ -194,8 +200,6 @@ build:version-linux-arm64v8: if [[ ! -z "$CUDA_IMAGE" ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ - --build-arg LIBNVINFER_VERSION \ - --build-arg LIBNVINFER_VERSION_MAJ \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ --build-arg BUILD_START=$(date -uIseconds) \ From 0a5cf33b38ee035dd922badd0c77cd2cb4ed3683 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 25 Apr 2024 15:34:15 +0200 Subject: [PATCH 046/324] CUDA images: Update TensorRT to v10.0.1.6 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 7cbaac3..6d4e217 100644 --- a/CUDA.md +++ b/CUDA.md @@ -76,7 +76,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.0.0.6 \ + --build-arg LIBNVINFER_VERSION=10.0.1.6 \ --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.4 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index a30ce60..71f88b3 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" - LIBNVINFER_VERSION_AMD64: "10.0.0.6" - LIBNVINFER_VERSION_ARM64: "10.0.0.6" + LIBNVINFER_VERSION_AMD64: "10.0.1.6" + LIBNVINFER_VERSION_ARM64: "10.0.1.6" LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From ada701a7fb6f508ebd60fb618722323258047c6e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 1 May 2024 16:41:10 +0200 Subject: [PATCH 047/324] base: Update Git to v2.45.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 0b303d5..937dde9 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.44.0 +ARG GIT_VERSION=2.45.0 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.1.11 From cb86c94ede415420eaf3475433f605149003acc1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 2 May 2024 14:21:37 +0200 Subject: [PATCH 048/324] scipy: Update Quarto to v1.4.554 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 4442b19..ad26290 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.553 +ARG QUARTO_VERSION=1.4.554 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 168eaef4142a98f94f51827db32e630fa3fae36b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 16 May 2024 05:59:21 +0200 Subject: [PATCH 049/324] base: Update Git to v2.45.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 937dde9..6e0c0f9 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.45.0 +ARG GIT_VERSION=2.45.1 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.1.11 From 7b8a35248ac864cf61d8721bd24db1e9593e6312 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 21 May 2024 06:35:17 +0200 Subject: [PATCH 050/324] Update README.md section License --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index da6f064..838f5b9 100644 --- a/README.md +++ b/README.md @@ -113,4 +113,6 @@ This project follows the ## License -[MIT](LICENSE) © 2022 b-data GmbH +Copyright © 2022 b-data GmbH + +Distributed under the terms of the [MIT License](LICENSE). From b306c32f44aa3b7bd340a6e8657e9b92b61517cf Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 1 Jun 2024 13:53:09 +0200 Subject: [PATCH 051/324] base: Update Git to v2.45.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 6e0c0f9..97def96 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.45.1 +ARG GIT_VERSION=2.45.2 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.1.11 From b2073eefd1a741325b2fd3a852d30eef67a0aed3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 1 Jun 2024 13:54:09 +0200 Subject: [PATCH 052/324] CUDA images: Update CUDA to v12.5.0 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 6d4e217..ec8d8c3 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.4.1 \ + --build-arg CUDA_VERSION=12.5.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.12.3 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 71f88b3..9947095 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.12.3" - CUDA_VERSION: "12.4.1" + CUDA_VERSION: "12.5.0" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" From 174f8f0a46a37aa0edf9db68537e500b81b67c24 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 4 Jun 2024 06:41:47 +0200 Subject: [PATCH 053/324] scipy: Update Quarto to v1.4.555 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index ad26290..89b1d58 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.554 +ARG QUARTO_VERSION=1.4.555 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 8a8a9caf771cfaec68e06e5a0ba2fccd318c7d5b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 7 Jun 2024 11:15:34 +0200 Subject: [PATCH 054/324] Freeze Python v3.12.3 --- base/3.12.3.Dockerfile | 106 ++++++++++++++++++ cuda/3.12.3.Dockerfile | 239 ++++++++++++++++++++++++++++++++++++++++ scipy/3.12.3.Dockerfile | 127 +++++++++++++++++++++ ver/3.12.3.Dockerfile | 89 +++++++++++++++ 4 files changed, 561 insertions(+) create mode 100644 base/3.12.3.Dockerfile create mode 100644 cuda/3.12.3.Dockerfile create mode 100644 scipy/3.12.3.Dockerfile create mode 100644 ver/3.12.3.Dockerfile diff --git a/base/3.12.3.Dockerfile b/base/3.12.3.Dockerfile new file mode 100644 index 0000000..2042c96 --- /dev/null +++ b/base/3.12.3.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.3 +ARG GIT_VERSION=2.45.2 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.1.11 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.3.Dockerfile b/cuda/3.12.3.Dockerfile new file mode 100644 index 0000000..0e117a5 --- /dev/null +++ b/cuda/3.12.3.Dockerfile @@ -0,0 +1,239 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 + +ARG LIBNVINFER_VERSION=10.0.1.6 +ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.4 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.5.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.5.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + apt-mark hold \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.17 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.12.3.Dockerfile b/scipy/3.12.3.Dockerfile new file mode 100644 index 0000000..a9d59e4 --- /dev/null +++ b/scipy/3.12.3.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.3 +ARG QUARTO_VERSION=1.4.555 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/06/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/3.12.3.Dockerfile b/ver/3.12.3.Dockerfile new file mode 100644 index 0000000..10697d7 --- /dev/null +++ b/ver/3.12.3.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.5.0 +ARG PYTHON_VERSION=3.12.3 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From d0e64d507465b8956a0415a0138526207130e236 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 7 Jun 2024 12:05:59 +0200 Subject: [PATCH 055/324] Update Python to v3.12.4 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index ec8d8c3..b390278 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.5.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.3 \ + --build-arg PYTHON_VERSION=3.12.4 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 838f5b9..ffb40bb 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.3 \ + --build-arg PYTHON_VERSION=3.12.4 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index cb42776..27b4dc7 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.3" + PYTHON_VERSION: "3.12.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e88b8b6..b132767 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.3" + PYTHON_VERSION: "3.12.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 9947095..0d38207 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.3" + PYTHON_VERSION: "3.12.4" CUDA_VERSION: "12.5.0" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" From e408e7b59865ee9a53fa79df70339fdc74f35ffe Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 10 Jun 2024 12:54:50 +0200 Subject: [PATCH 056/324] Rename CUDA-enabled to CUDA-based --- CUDA.md | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index b390278..c825f6f 100644 --- a/CUDA.md +++ b/CUDA.md @@ -1,4 +1,4 @@ -# CUDA-enabled Python docker stack +# CUDA-based Python docker stack GPU accelerated, multi-arch (`linux/amd64`, `linux/arm64/v8`) docker images: diff --git a/README.md b/README.md index ffb40bb..d61577c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![minimal-readme compliant](https://img.shields.io/badge/readme%20style-minimal-brightgreen.svg)](https://github.com/RichardLitt/standard-readme/blob/master/example-readmes/minimal-readme.md) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) Donate using Liberapay -| See the [CUDA-enabled Python docker stack](CUDA.md) for GPU accelerated docker images. | -|----------------------------------------------------------------------------------------| +| See the [CUDA-based Python docker stack](CUDA.md) for GPU accelerated docker images. | +|--------------------------------------------------------------------------------------| # Python docker stack From dd67769a94d10bcf91f8c181a279ded4e414726c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 15 Jun 2024 16:32:44 +0200 Subject: [PATCH 057/324] scipy: Fix TeX package installation - https://ctan.org/pkg/ms - https://github.com/rstudio/tinytex/issues/444 --- scipy/latest.Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 89b1d58..4012636 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -60,7 +60,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tlmgr update --self \ ## TeX packages as requested by the community && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ - && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && tlmgr install $(cat pkgs-yihui.txt | sed '/^ms$/d' | tr '\n' ' ') \ + ## ms: All packages of that bundle have now become independent packages + && tlmgr install count1to multitoc prelim2e everyshi \ && rm -f pkgs-yihui.txt \ ## TeX packages as in rocker/verse && tlmgr install \ From ddd624d42fd1f9ceb20d0b570ac119f87340c336 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 15 Jun 2024 19:09:02 +0200 Subject: [PATCH 058/324] Revert "scipy: Fix TeX package installation" This reverts commit dd67769a94d10bcf91f8c181a279ded4e414726c. --- scipy/latest.Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 4012636..89b1d58 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -60,9 +60,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tlmgr update --self \ ## TeX packages as requested by the community && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ - && tlmgr install $(cat pkgs-yihui.txt | sed '/^ms$/d' | tr '\n' ' ') \ - ## ms: All packages of that bundle have now become independent packages - && tlmgr install count1to multitoc prelim2e everyshi \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ && rm -f pkgs-yihui.txt \ ## TeX packages as in rocker/verse && tlmgr install \ From c3c5dfead87a60262b566f69ed6a6274b18278fa Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 17 Jun 2024 09:23:59 +0200 Subject: [PATCH 059/324] Add section Support to README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index d61577c..9d41bcb 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ and any configuration thereof. * [Install](#install) * [Usage](#usage) * [Contributing](#contributing) +* [Support](#support) * [License](#license) ## Prerequisites @@ -111,6 +112,13 @@ This project follows the [Contributor Covenant](https://www.contributor-covenant.org) [Code of Conduct](CODE_OF_CONDUCT.md). +## Support + +Community support: Open a new disussion +[here](https://github.com/orgs/b-data/discussions). + +Commercial support: Contact b-data by [email](mailto:support@b-data.ch). + ## License Copyright © 2022 b-data GmbH From df3a2e9f2c2f5036d7f19ccc55d6c54e61a202c8 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 20 Jun 2024 12:20:40 +0200 Subject: [PATCH 060/324] CUDA images: Update TensorRT to v10.1.0.27 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index c825f6f..38674b1 100644 --- a/CUDA.md +++ b/CUDA.md @@ -76,7 +76,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.0.1.6 \ + --build-arg LIBNVINFER_VERSION=10.1.0.27 \ --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.4 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0d38207..5170a43 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" - LIBNVINFER_VERSION_AMD64: "10.0.1.6" - LIBNVINFER_VERSION_ARM64: "10.0.1.6" + LIBNVINFER_VERSION_AMD64: "10.1.0.27" + LIBNVINFER_VERSION_ARM64: "10.1.0.27" LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From ad0233a99b1e69d2034e244f9dee1b5018d461a1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 27 Jun 2024 08:27:12 +0200 Subject: [PATCH 061/324] scipy: Update Quarto to v1.4.556 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 89b1d58..5d57904 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.555 +ARG QUARTO_VERSION=1.4.556 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From f70b9499ef7b39429a7ece3e4182b5460995b149 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 27 Jun 2024 20:45:32 +0200 Subject: [PATCH 062/324] scipy: Update Quarto to v1.4.557 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 5d57904..838edf7 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.556 +ARG QUARTO_VERSION=1.4.557 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From a9d27c0ef1b44d99a3e3fb21a1d4042e5e372cad Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 16 Jul 2024 17:04:26 +0200 Subject: [PATCH 063/324] scipy: Update Quarto to v1.5.54 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 838edf7..247d13d 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.4.557 +ARG QUARTO_VERSION=1.5.54 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From cf99d62af6236810483e7f87189ff55e3623db31 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 16 Jul 2024 17:07:04 +0200 Subject: [PATCH 064/324] base: Update pandoc to v3.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 97def96..d6889a0 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG GIT_VERSION=2.45.2 ARG GIT_LFS_VERSION=3.5.1 -ARG PANDOC_VERSION=3.1.11 +ARG PANDOC_VERSION=3.2 FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi From d6cda200410aea50974b5aa96cdc04fd841a516c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 16 Jul 2024 17:11:33 +0200 Subject: [PATCH 065/324] CUDA images: Update CUDA to v12.5.1 - Update TensorRT to v10.2.0.19 --- CUDA.md | 6 +++--- ver/.gitlab-ci.yml | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CUDA.md b/CUDA.md index 38674b1..5b642da 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.5.0 \ + --build-arg CUDA_VERSION=12.5.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.12.4 \ -t cuda/python/ver \ @@ -76,8 +76,8 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.1.0.27 \ - --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.4 \ + --build-arg LIBNVINFER_VERSION=10.2.0.19 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.5 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 5170a43..4710962 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,13 +1,13 @@ .env: variables: PYTHON_VERSION: "3.12.4" - CUDA_VERSION: "12.5.0" + CUDA_VERSION: "12.5.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" - LIBNVINFER_VERSION_AMD64: "10.1.0.27" - LIBNVINFER_VERSION_ARM64: "10.1.0.27" - LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.4" + LIBNVINFER_VERSION_AMD64: "10.2.0.19" + LIBNVINFER_VERSION_ARM64: "10.2.0.19" + LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From 3486905fb6d03e537060f961d78d5c1a9b8b5f89 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 18 Jul 2024 19:50:26 +0200 Subject: [PATCH 066/324] scipy: Update Quarto to v1.5.55 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 247d13d..7b8b243 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.5.54 +ARG QUARTO_VERSION=1.5.55 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 0540ad8afe3f5a7d058480c6aeba3c6a43dec77e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 1 Aug 2024 11:20:48 +0200 Subject: [PATCH 067/324] base: Update Git to v2.46.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index d6889a0..1c9768b 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG GIT_VERSION=2.45.2 +ARG GIT_VERSION=2.46.0 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.2 From efe5fe5760cc49dec515efb137c6be14a4c53b50 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 1 Aug 2024 15:53:56 +0200 Subject: [PATCH 068/324] scipy: Update Quarto to v1.5.56 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 7b8b243..070283b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.5.55 +ARG QUARTO_VERSION=1.5.56 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From e79ce17d98868bc6987b55c60dcb6971ae3f9906 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 Aug 2024 08:54:01 +0200 Subject: [PATCH 069/324] Freeze Python v3.12.4 --- base/3.12.4.Dockerfile | 106 ++++++++++++++++++ cuda/3.12.4.Dockerfile | 239 ++++++++++++++++++++++++++++++++++++++++ scipy/3.12.4.Dockerfile | 127 +++++++++++++++++++++ ver/3.12.4.Dockerfile | 89 +++++++++++++++ 4 files changed, 561 insertions(+) create mode 100644 base/3.12.4.Dockerfile create mode 100644 cuda/3.12.4.Dockerfile create mode 100644 scipy/3.12.4.Dockerfile create mode 100644 ver/3.12.4.Dockerfile diff --git a/base/3.12.4.Dockerfile b/base/3.12.4.Dockerfile new file mode 100644 index 0000000..0fe1aed --- /dev/null +++ b/base/3.12.4.Dockerfile @@ -0,0 +1,106 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.4 +ARG GIT_VERSION=2.46.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.4.Dockerfile b/cuda/3.12.4.Dockerfile new file mode 100644 index 0000000..2935721 --- /dev/null +++ b/cuda/3.12.4.Dockerfile @@ -0,0 +1,239 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 + +ARG LIBNVINFER_VERSION=10.2.0.19 +ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.5.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.5.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + apt-mark hold \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.17 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.12.4.Dockerfile b/scipy/3.12.4.Dockerfile new file mode 100644 index 0000000..7ae2b96 --- /dev/null +++ b/scipy/3.12.4.Dockerfile @@ -0,0 +1,127 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.4 +ARG QUARTO_VERSION=1.5.56 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/08/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + CTAN_REPO=${CTAN_REPO} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts diff --git a/ver/3.12.4.Dockerfile b/ver/3.12.4.Dockerfile new file mode 100644 index 0000000..3df6b7d --- /dev/null +++ b/ver/3.12.4.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.5.1 +ARG PYTHON_VERSION=3.12.4 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 921657cd28c3eb85bc6e273c0b194912bc108cd8 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 Aug 2024 09:36:24 +0200 Subject: [PATCH 070/324] Update Python to v3.12.5 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 5b642da..280e33c 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.5.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.4 \ + --build-arg PYTHON_VERSION=3.12.5 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 9d41bcb..df0cfaf 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.4 \ + --build-arg PYTHON_VERSION=3.12.5 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 27b4dc7..aa81ffe 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.4" + PYTHON_VERSION: "3.12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index b132767..b6624c1 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.4" + PYTHON_VERSION: "3.12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4710962..840b93d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.4" + PYTHON_VERSION: "3.12.5" CUDA_VERSION: "12.5.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" From 0367d99fdace257df03d3fa0f636381e7d9690d1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 9 Aug 2024 06:53:19 +0200 Subject: [PATCH 071/324] CUDA images: Update TensorRT to v10.1.0.27 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 5b642da..8c7d46a 100644 --- a/CUDA.md +++ b/CUDA.md @@ -76,7 +76,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.2.0.19 \ + --build-arg LIBNVINFER_VERSION=10.3.0.26 \ --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.5 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4710962..377fe3f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" - LIBNVINFER_VERSION_AMD64: "10.2.0.19" - LIBNVINFER_VERSION_ARM64: "10.2.0.19" + LIBNVINFER_VERSION_AMD64: "10.3.0.26" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From 91cdcb8673f8412b5293e4c1290035fcd59fadb7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 9 Aug 2024 06:53:35 +0200 Subject: [PATCH 072/324] Freeze Python v3.12.4 --- cuda/3.12.4.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cuda/3.12.4.Dockerfile b/cuda/3.12.4.Dockerfile index 2935721..8edd558 100644 --- a/cuda/3.12.4.Dockerfile +++ b/cuda/3.12.4.Dockerfile @@ -3,7 +3,7 @@ ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 -ARG LIBNVINFER_VERSION=10.2.0.19 +ARG LIBNVINFER_VERSION=10.3.0.26 ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.5 From 9614f9c15465e14ee24e0c33ba8535b182cd19ce Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 15 Aug 2024 15:07:08 +0200 Subject: [PATCH 073/324] CUDA images: Update CUDA to v12.6.0 --- CUDA.md | 2 +- cuda/3.12.4.Dockerfile | 2 +- cuda/latest.Dockerfile | 2 +- ver/.gitlab-ci.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CUDA.md b/CUDA.md index 2d33858..70a68de 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.5.1 \ + --build-arg CUDA_VERSION=12.6.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.12.5 \ -t cuda/python/ver \ diff --git a/cuda/3.12.4.Dockerfile b/cuda/3.12.4.Dockerfile index 8edd558..d828e61 100644 --- a/cuda/3.12.4.Dockerfile +++ b/cuda/3.12.4.Dockerfile @@ -217,7 +217,7 @@ RUN cpuBlasLib="$(update-alternatives --query \ && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ grep 'libnvinfer_plugin.so.[0-9]\+$') \ && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ - ## TensorFlow versions < 2.17 expect TensorRT libraries version 8.6.1/8.6.2 + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 if [ "$dpkgArch" = "amd64" ]; then \ ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index e8307c9..5477448 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -214,7 +214,7 @@ RUN cpuBlasLib="$(update-alternatives --query \ && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ grep 'libnvinfer_plugin.so.[0-9]\+$') \ && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ - ## TensorFlow versions < 2.17 expect TensorRT libraries version 8.6.1/8.6.2 + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 if [ "$dpkgArch" = "amd64" ]; then \ ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 931210a..521c643 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.12.5" - CUDA_VERSION: "12.5.1" + CUDA_VERSION: "12.6.0" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" From 0d211e7b4955e7ae96440a5e333fa15d0422ee5f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 17 Aug 2024 09:51:35 +0200 Subject: [PATCH 074/324] scipy: Add build arg CTAN_REPO_BUILD_LATEST - Set CTAN_REPO to CTAN_REPO_BUILD_LATEST during build --- scipy/.gitlab-ci.yml | 3 +++ scipy/latest.Dockerfile | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index b6624c1..2d76abb 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,7 @@ .env: variables: PYTHON_VERSION: "3.12.5" + CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" @@ -57,6 +58,7 @@ build:latest-linux-amd64: docker build --pull --build-arg BUILD_ON_IMAGE --build-arg PYTHON_VERSION + --build-arg CTAN_REPO_BUILD_LATEST --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG-linux-amd64 -t $CI_APP_REPO:latest-linux-amd64 @@ -77,6 +79,7 @@ build:latest-linux-arm64v8: docker build --pull --build-arg BUILD_ON_IMAGE --build-arg PYTHON_VERSION + --build-arg CTAN_REPO_BUILD_LATEST --build-arg BUILD_START=$(date -uIseconds) -t $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 -t $CI_APP_REPO:latest-linux-arm64v8 diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 070283b..d63d5dc 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -10,11 +10,11 @@ ARG DEBIAN_FRONTEND=noninteractive ARG BUILD_ON_IMAGE ARG QUARTO_VERSION ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST ARG BUILD_START ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ QUARTO_VERSION=${QUARTO_VERSION} \ - CTAN_REPO=${CTAN_REPO} \ BUILD_DATE=${BUILD_START} ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH @@ -49,6 +49,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && apt-get -y purge equivs \ && apt-get -y autoremove \ ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ | sh -s - --admin --no-path \ && mv ${HOME}/.TinyTeX /opt/TinyTeX \ @@ -75,6 +78,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ oberdiek \ titling \ && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ && chown -R root:${NB_GID} /opt/TinyTeX \ && chmod -R g+w /opt/TinyTeX \ && chmod -R g+wx /opt/TinyTeX/bin \ @@ -125,3 +129,5 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ ${HOME}/.config \ ${HOME}/.local \ ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} From 33fa565b63d3727ca380fddef5397c9a5d0bbf0e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 30 Aug 2024 08:39:08 +0200 Subject: [PATCH 075/324] scipy: Update Quarto to v1.5.57 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index d63d5dc..8800279 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.5.56 +ARG QUARTO_VERSION=1.5.57 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 709813f0171fd44e5db981cbf02d2ee1d9136274 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 3 Sep 2024 14:27:38 +0200 Subject: [PATCH 076/324] base: Add Neovim - Copy source-installation from nvsi image - Add package ripgrep --- base/latest.Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 1c9768b..1fe40ff 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,10 +2,12 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION +ARG NEOVIM_VERSION=0.10.1 ARG GIT_VERSION=2.46.0 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.2 +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi @@ -14,17 +16,21 @@ FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION ARG GIT_VERSION ARG GIT_LFS_VERSION ARG PANDOC_VERSION ARG BUILD_START ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ GIT_VERSION=${GIT_VERSION} \ GIT_LFS_VERSION=${GIT_LFS_VERSION} \ PANDOC_VERSION=${PANDOC_VERSION} \ BUILD_DATE=${BUILD_START} +## Install Neovim +COPY --from=nvsi /usr/local /usr/local ## Install Git COPY --from=gsi /usr/local /usr/local ## Install Git LFS @@ -58,6 +64,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ vim-tiny \ wget \ zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ ## Git: Additional runtime dependencies libcurl3-gnutls \ liberror-perl \ From 12348caff900841a295dbd08a16c7e909ca5a7fa Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 5 Sep 2024 20:16:37 +0200 Subject: [PATCH 077/324] CUDA images: Update CUDA to v12.6.1 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 70a68de..8ef34b6 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.6.0 \ + --build-arg CUDA_VERSION=12.6.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.12.5 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 521c643..33bdb6f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.12.5" - CUDA_VERSION: "12.6.0" + CUDA_VERSION: "12.6.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" From e00f1097b841f4d01946f2e95aecac76b3515a65 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 8 Sep 2024 08:45:56 +0200 Subject: [PATCH 078/324] Freeze Python v3.11.9 --- base/.gitlab-ci.yml | 2 +- base/3.11.9.Dockerfile | 12 ++++++++++-- scipy/.gitlab-ci.yml | 2 +- scipy/3.11.9.Dockerfile | 12 +++++++++--- ver/.gitlab-ci.yml | 12 ++++-------- 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index aa81ffe..e4eb7a5 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.5" + PYTHON_VERSION: "3.11.9" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.11.9.Dockerfile b/base/3.11.9.Dockerfile index ca2adcb..ebf18dd 100644 --- a/base/3.11.9.Dockerfile +++ b/base/3.11.9.Dockerfile @@ -2,10 +2,12 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.11.9 -ARG GIT_VERSION=2.44.0 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.0 ARG GIT_LFS_VERSION=3.5.1 -ARG PANDOC_VERSION=3.1.11 +ARG PANDOC_VERSION=3.2 +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi @@ -14,17 +16,21 @@ FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION ARG GIT_VERSION ARG GIT_LFS_VERSION ARG PANDOC_VERSION ARG BUILD_START ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ GIT_VERSION=${GIT_VERSION} \ GIT_LFS_VERSION=${GIT_LFS_VERSION} \ PANDOC_VERSION=${PANDOC_VERSION} \ BUILD_DATE=${BUILD_START} +## Install Neovim +COPY --from=nvsi /usr/local /usr/local ## Install Git COPY --from=gsi /usr/local /usr/local ## Install Git LFS @@ -58,6 +64,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ vim-tiny \ wget \ zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ ## Git: Additional runtime dependencies libcurl3-gnutls \ liberror-perl \ diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 2d76abb..54410d0 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.5" + PYTHON_VERSION: "3.11.9" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.11.9.Dockerfile b/scipy/3.11.9.Dockerfile index 3a0c566..5fedf2e 100644 --- a/scipy/3.11.9.Dockerfile +++ b/scipy/3.11.9.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.11.9 -ARG QUARTO_VERSION=1.4.553 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/09/07/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} @@ -10,11 +10,11 @@ ARG DEBIAN_FRONTEND=noninteractive ARG BUILD_ON_IMAGE ARG QUARTO_VERSION ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST ARG BUILD_START ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ QUARTO_VERSION=${QUARTO_VERSION} \ - CTAN_REPO=${CTAN_REPO} \ BUILD_DATE=${BUILD_START} ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH @@ -47,6 +47,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && apt-get -y purge equivs \ && apt-get -y autoremove \ ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ | sh -s - --admin --no-path \ && mv ${HOME}/.TinyTeX /opt/TinyTeX \ @@ -73,6 +76,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ oberdiek \ titling \ && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ && chown -R root:${NB_GID} /opt/TinyTeX \ && chmod -R g+w /opt/TinyTeX \ && chmod -R g+wx /opt/TinyTeX/bin \ @@ -123,3 +127,5 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ ${HOME}/.config \ ${HOME}/.local \ ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 33bdb6f..b035a7b 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,13 +1,9 @@ .env: variables: - PYTHON_VERSION: "3.12.5" - CUDA_VERSION: "12.6.1" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" - LIBNVINFER_VERSION_AMD64: "10.3.0.26" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.5" + PYTHON_VERSION: "3.11.9" + CUDA_VERSION: "11.8.0" + LIBNVINFER_VERSION: "8.5.3-1" + LIBNVINFER_VERSION_MAJ: "8" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From d51cdfb0713df1108d9f3a41d6cd0a7155aaad3f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 8 Sep 2024 09:31:57 +0200 Subject: [PATCH 079/324] Freeze Python v3.11.9 --- scipy/3.11.9.Dockerfile | 2 ++ ver/.gitlab-ci.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/scipy/3.11.9.Dockerfile b/scipy/3.11.9.Dockerfile index 5fedf2e..072ce88 100644 --- a/scipy/3.11.9.Dockerfile +++ b/scipy/3.11.9.Dockerfile @@ -27,6 +27,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ librsvg2-bin \ qpdf \ texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ ## Install quarto && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ && mkdir -p /opt/quarto \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b035a7b..c096f7a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,6 +2,8 @@ variables: PYTHON_VERSION: "3.11.9" CUDA_VERSION: "11.8.0" + CUDA_IMAGE_SUBTAG: "cudnn8-runtime-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "cudnn8-devel-$BASE_IMAGE$BASE_IMAGE_TAG" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" TAG_VERSION_MAJ_MIN: "false" From 0cb03a477a89d81b5c8fa314fb468881a73c9d1e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 8 Sep 2024 09:38:35 +0200 Subject: [PATCH 080/324] Freeze Python v3.11.9 --- ver/.gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index c096f7a..b035a7b 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,6 @@ variables: PYTHON_VERSION: "3.11.9" CUDA_VERSION: "11.8.0" - CUDA_IMAGE_SUBTAG: "cudnn8-runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - CUDA_IMAGE_DEVEL_SUBTAG: "cudnn8-devel-$BASE_IMAGE$BASE_IMAGE_TAG" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" TAG_VERSION_MAJ_MIN: "false" From 909cffeeefd99ef6ba6c44e5e2beaa39d41e1e3a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 8 Sep 2024 10:15:10 +0200 Subject: [PATCH 081/324] Release Python v3.11.10 --- base/.gitlab-ci.yml | 4 +- base/3.11.10.Dockerfile | 114 +++++++++++++++++++++++++++++++++ cuda/3.11.10.Dockerfile | 72 +++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.11.10.Dockerfile | 133 +++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.11.10.Dockerfile | 89 ++++++++++++++++++++++++++ 7 files changed, 414 insertions(+), 6 deletions(-) create mode 100644 base/3.11.10.Dockerfile create mode 100644 cuda/3.11.10.Dockerfile create mode 100644 scipy/3.11.10.Dockerfile create mode 100644 ver/3.11.10.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index e4eb7a5..f7b290f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.9" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.10" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.11.10.Dockerfile b/base/3.11.10.Dockerfile new file mode 100644 index 0000000..2ee6f54 --- /dev/null +++ b/base/3.11.10.Dockerfile @@ -0,0 +1,114 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.11.10 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.11.10.Dockerfile b/cuda/3.11.10.Dockerfile new file mode 100644 index 0000000..a3db44d --- /dev/null +++ b/cuda/3.11.10.Dockerfile @@ -0,0 +1,72 @@ +ARG BUILD_ON_IMAGE + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +FROM ${BUILD_ON_IMAGE} + +## CUDA_IMAGE +## ├── nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 +## └── nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 +ARG LIBNVINFER_VERSION=8.5.3-1 +ARG LIBNVINFER_VERSION_MAJ=8 + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ARG CUDA_HOME +ARG NVBLAS_CONFIG_FILE + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + yes | unminimize; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install TensorRT + ## libnvinfer is not yet available for Ubuntu 22.04 on sbsa (arm64) + && if [ ${dpkgArch} = "amd64" -o ! ${BASE_IMAGE} = "ubuntu:22.04" ]; then \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then dev="-dev"; fi; \ + CUDA_VERSION_MAJ_MIN=$(echo ${CUDA_VERSION} | cut -c 1-4); \ + apt-get update; \ + apt-get -y install --no-install-recommends \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}+cuda${CUDA_VERSION_MAJ_MIN}; \ + ## Keep apt from auto upgrading the libnvinfer packages + apt-mark hold \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}; \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ## Create symlink when only TensorRT libraries version > 7 are available + trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$'); \ + trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$'); \ + if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 54410d0..32cb045 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.11.9" + PYTHON_VERSION: "3.11.10" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.11.10.Dockerfile b/scipy/3.11.10.Dockerfile new file mode 100644 index 0000000..75cbb97 --- /dev/null +++ b/scipy/3.11.10.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.11.10 +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b035a7b..baab13d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.11.9" + PYTHON_VERSION: "3.11.10" CUDA_VERSION: "11.8.0" LIBNVINFER_VERSION: "8.5.3-1" LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.11.10.Dockerfile b/ver/3.11.10.Dockerfile new file mode 100644 index 0000000..e399790 --- /dev/null +++ b/ver/3.11.10.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=11.8.0 +ARG PYTHON_VERSION=3.11.10 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 6184015cd573717a442bad3898d8730a1f616488 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 8 Sep 2024 10:38:58 +0200 Subject: [PATCH 082/324] CUDA images: Fix Dockerfiles --- cuda/3.12.3.Dockerfile | 1 - cuda/3.12.4.Dockerfile | 1 - cuda/latest.Dockerfile | 1 - 3 files changed, 3 deletions(-) diff --git a/cuda/3.12.3.Dockerfile b/cuda/3.12.3.Dockerfile index 0e117a5..0461bf2 100644 --- a/cuda/3.12.3.Dockerfile +++ b/cuda/3.12.3.Dockerfile @@ -159,7 +159,6 @@ RUN cpuBlasLib="$(update-alternatives --query \ cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ ## Unminimise if the system has been minimised && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ - apt-mark hold \ sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ yes | unminimize; \ sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ diff --git a/cuda/3.12.4.Dockerfile b/cuda/3.12.4.Dockerfile index d828e61..23f15d9 100644 --- a/cuda/3.12.4.Dockerfile +++ b/cuda/3.12.4.Dockerfile @@ -159,7 +159,6 @@ RUN cpuBlasLib="$(update-alternatives --query \ cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ ## Unminimise if the system has been minimised && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ - apt-mark hold \ sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ yes | unminimize; \ sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 5477448..672fa89 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -156,7 +156,6 @@ RUN cpuBlasLib="$(update-alternatives --query \ cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ ## Unminimise if the system has been minimised && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ - apt-mark hold \ sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ yes | unminimize; \ sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ From e77633b68002c9558c12e58d222abde37523ca94 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 8 Sep 2024 10:40:33 +0200 Subject: [PATCH 083/324] Update .gitlab-ci.yml --- base/.gitlab-ci.yml | 4 ++-- scipy/.gitlab-ci.yml | 4 ++-- ver/.gitlab-ci.yml | 14 +++++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f7b290f..aa81ffe 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.10" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.5" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 32cb045..2d76abb 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.11.10" + PYTHON_VERSION: "3.12.5" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index baab13d..33bdb6f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,14 @@ .env: variables: - PYTHON_VERSION: "3.11.10" - CUDA_VERSION: "11.8.0" - LIBNVINFER_VERSION: "8.5.3-1" - LIBNVINFER_VERSION_MAJ: "8" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.5" + CUDA_VERSION: "12.6.1" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" + LIBNVINFER_VERSION_AMD64: "10.3.0.26" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.5" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all From 6d0d7b907acc1005cf6513fd1cf53a7cd91682cb Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 12 Sep 2024 07:42:27 +0200 Subject: [PATCH 084/324] CUDA images (amd64): Update TensorRT to v10.4.0.26 --- CUDA.md | 4 ++-- ver/.gitlab-ci.yml | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CUDA.md b/CUDA.md index 8ef34b6..135b6fa 100644 --- a/CUDA.md +++ b/CUDA.md @@ -76,8 +76,8 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.3.0.26 \ - --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.5 \ + --build-arg LIBNVINFER_VERSION=10.4.0.26 \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.6 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 33bdb6f..9725403 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -4,10 +4,12 @@ CUDA_VERSION: "12.6.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN: "12.2" - LIBNVINFER_VERSION_AMD64: "10.3.0.26" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.4.0.26" LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN: "12.5" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.6" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" @@ -89,9 +91,9 @@ build:latest-linux-amd64: if [[ ! -z "$CUDA_IMAGE" ]]; then docker build \ --build-arg CUDNN_VERSION_AMD64 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 \ --build-arg LIBNVINFER_VERSION_AMD64 \ - --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ @@ -130,9 +132,9 @@ build:latest-linux-arm64v8: if [[ ! -z "$CUDA_IMAGE" ]]; then docker build \ --build-arg CUDNN_VERSION_ARM64 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 \ --build-arg LIBNVINFER_VERSION_ARM64 \ - --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN \ + --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ --build-arg CUDA_IMAGE_FLAVOR \ --build-arg CUPTI_AVAILABLE \ From da0eb32b5d5ed380b37bc9c8a17f44bf73fe6732 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 12 Sep 2024 07:51:01 +0200 Subject: [PATCH 085/324] Freeze Python v3.12.5 --- base/3.12.5.Dockerfile | 114 +++++++++++++++++++ cuda/3.12.5.Dockerfile | 243 ++++++++++++++++++++++++++++++++++++++++ scipy/3.12.5.Dockerfile | 133 ++++++++++++++++++++++ ver/3.12.5.Dockerfile | 89 +++++++++++++++ 4 files changed, 579 insertions(+) create mode 100644 base/3.12.5.Dockerfile create mode 100644 cuda/3.12.5.Dockerfile create mode 100644 scipy/3.12.5.Dockerfile create mode 100644 ver/3.12.5.Dockerfile diff --git a/base/3.12.5.Dockerfile b/base/3.12.5.Dockerfile new file mode 100644 index 0000000..3ae36a8 --- /dev/null +++ b/base/3.12.5.Dockerfile @@ -0,0 +1,114 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.5 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.0 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + curl -sLO https://bootstrap.pypa.io/get-pip.py; \ + python get-pip.py \ + pip \ + setuptools \ + wheel; \ + rm get-pip.py; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.5.Dockerfile b/cuda/3.12.5.Dockerfile new file mode 100644 index 0000000..06f9476 --- /dev/null +++ b/cuda/3.12.5.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.4.0.26 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.12.5.Dockerfile b/scipy/3.12.5.Dockerfile new file mode 100644 index 0000000..6c1b921 --- /dev/null +++ b/scipy/3.12.5.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.5 +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/09/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.12.5.Dockerfile b/ver/3.12.5.Dockerfile new file mode 100644 index 0000000..a866636 --- /dev/null +++ b/ver/3.12.5.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.1 +ARG PYTHON_VERSION=3.12.5 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From ce261831fb6aa48b6a386b21cef86ab136d16e28 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 12 Sep 2024 08:42:32 +0200 Subject: [PATCH 086/324] Update Python to v3.12.6 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- cuda/latest.Dockerfile | 51 +++++++++++++++++++++++------------------- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/CUDA.md b/CUDA.md index 135b6fa..7e4fbe0 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.6.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.5 \ + --build-arg PYTHON_VERSION=3.12.6 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index df0cfaf..29041dc 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.5 \ + --build-arg PYTHON_VERSION=3.12.6 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index aa81ffe..434f087 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.5" + PYTHON_VERSION: "3.12.6" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 672fa89..fb02ea8 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -2,11 +2,15 @@ ARG CUDNN_VERSION ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG LIBNVINFER_VERSION ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=${LIBNVINFER_CUDA_VERSION_MAJ_MIN} +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=${LIBNVINFER_CUDA_VERSION_MAJ_MIN} ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} @@ -17,31 +21,31 @@ ARG CUDA_IMAGE_FLAVOR FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 ARG CUDNN_VERSION_AMD64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} -ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 ARG CUDNN_VERSION_ARM64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} -ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 ARG CUDNN_VERSION_AMD64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" @@ -50,13 +54,13 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev -ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" -ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 ARG CUDNN_VERSION_ARM64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" @@ -65,60 +69,60 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev -ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" -ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN}" +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 ARG CUDNN_VERSION_AMD64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} -ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 ARG CUDNN_VERSION_ARM64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} -ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 ARG CUDNN_VERSION_AMD64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} -ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} -ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 ARG CUDNN_VERSION_ARM64 -ARG CUDNN_CUDA_VERSION_MAJ_MIN +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} -ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} -ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN%%.*} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" @@ -128,7 +132,8 @@ ARG DEBIAN_FRONTEND=noninteractive ARG LIBNVINFER_VERSION_AMD64 ARG LIBNVINFER_VERSION_ARM64 -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ARG CUDA_HOME=/usr/local/cuda ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf @@ -178,8 +183,8 @@ RUN cpuBlasLib="$(update-alternatives --query \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ ## Install TensorRT && case "$dpkgArch" in \ - amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 ;; \ - arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 ;; \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ esac \ ## Install development libraries and headers diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 2d76abb..870b19e 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.5" + PYTHON_VERSION: "3.12.6" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 9725403..e381e7b 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.5" + PYTHON_VERSION: "3.12.6" CUDA_VERSION: "12.6.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" From 3f12c30218ab57346a17f34976dc70953229b8eb Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 12 Sep 2024 09:43:14 +0200 Subject: [PATCH 087/324] Freeze Python v3.12.5 --- scipy/3.12.5.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/3.12.5.Dockerfile b/scipy/3.12.5.Dockerfile index 6c1b921..cd3318d 100644 --- a/scipy/3.12.5.Dockerfile +++ b/scipy/3.12.5.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.12.5 ARG QUARTO_VERSION=1.5.57 -ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/09/07/tlnet +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/09/06/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From cc2bdd520983b1cb378e65c0fb15fcd1c6a4fd06 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 12 Sep 2024 12:23:36 +0200 Subject: [PATCH 088/324] Update latest Dockerfile --- base/latest.Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 1fe40ff..128c329 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -91,12 +91,10 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ done; \ else \ ## Force update pip, setuptools and wheel - curl -sLO https://bootstrap.pypa.io/get-pip.py; \ - python get-pip.py \ + pip install --upgrade --force-reinstall \ pip \ setuptools \ wheel; \ - rm get-pip.py; \ fi \ ## Git: Set default branch name to main && git config --system init.defaultBranch main \ From 9ff6778a4fe8927a827d4a742c0a3807a0715353 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 16 Sep 2024 09:27:10 +0200 Subject: [PATCH 089/324] base: Update Git to v2.46.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 128c329..ba07610 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.1 -ARG GIT_VERSION=2.46.0 +ARG GIT_VERSION=2.46.1 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.2 From ed7c00dcda36d4aa3af271c8ae9c94bd43ffb037 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 26 Sep 2024 11:10:21 +0200 Subject: [PATCH 090/324] base: Update Git to v2.46.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index ba07610..58d7950 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.1 -ARG GIT_VERSION=2.46.1 +ARG GIT_VERSION=2.46.2 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.2 From a2626bfb81759bcdc54eab52bb89204f54fe9d3f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 2 Oct 2024 07:08:14 +0200 Subject: [PATCH 091/324] Freeze Python v3.12.6 --- base/3.12.6.Dockerfile | 112 ++++++++++++++++++ cuda/3.12.6.Dockerfile | 243 ++++++++++++++++++++++++++++++++++++++++ scipy/3.12.6.Dockerfile | 133 ++++++++++++++++++++++ ver/3.12.6.Dockerfile | 89 +++++++++++++++ 4 files changed, 577 insertions(+) create mode 100644 base/3.12.6.Dockerfile create mode 100644 cuda/3.12.6.Dockerfile create mode 100644 scipy/3.12.6.Dockerfile create mode 100644 ver/3.12.6.Dockerfile diff --git a/base/3.12.6.Dockerfile b/base/3.12.6.Dockerfile new file mode 100644 index 0000000..87c5f28 --- /dev/null +++ b/base/3.12.6.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.6 +ARG NEOVIM_VERSION=0.10.1 +ARG GIT_VERSION=2.46.2 +ARG GIT_LFS_VERSION=3.5.1 +ARG PANDOC_VERSION=3.2 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.6.Dockerfile b/cuda/3.12.6.Dockerfile new file mode 100644 index 0000000..06f9476 --- /dev/null +++ b/cuda/3.12.6.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.4.0.26 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.12.6.Dockerfile b/scipy/3.12.6.Dockerfile new file mode 100644 index 0000000..68f5e72 --- /dev/null +++ b/scipy/3.12.6.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.6 +ARG QUARTO_VERSION=1.5.57 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/10/01/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.12.6.Dockerfile b/ver/3.12.6.Dockerfile new file mode 100644 index 0000000..89a3e2e --- /dev/null +++ b/ver/3.12.6.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.1 +ARG PYTHON_VERSION=3.12.6 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From eb121001d0bb7ebe447141f76919ed31b1f8ddc6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 2 Oct 2024 07:58:30 +0200 Subject: [PATCH 092/324] Update Python to v3.12.7 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 7e4fbe0..01f89b4 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.6.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.6 \ + --build-arg PYTHON_VERSION=3.12.7 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 29041dc..2a7569f 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.6 \ + --build-arg PYTHON_VERSION=3.12.7 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 434f087..d18153f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.6" + PYTHON_VERSION: "3.12.7" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 870b19e..319b24e 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.6" + PYTHON_VERSION: "3.12.7" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index e381e7b..c4a101a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.6" + PYTHON_VERSION: "3.12.7" CUDA_VERSION: "12.6.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" From dee014d3fd0c499b74704f1dfe9ae6afc57e585a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 3 Oct 2024 19:49:36 +0200 Subject: [PATCH 093/324] base: Update Neovim to v0.10.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 58d7950..6e3b70a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.10.1 +ARG NEOVIM_VERSION=0.10.2 ARG GIT_VERSION=2.46.2 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.2 From b5377f9ee390f362fe485d174b5be962aacde7de Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 6 Oct 2024 17:08:31 +0200 Subject: [PATCH 094/324] scipy: Set build argument NB_GID to 100 by default --- scipy/latest.Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 8800279..0861212 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -7,6 +7,8 @@ FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive +ARG NB_GID=100 + ARG BUILD_ON_IMAGE ARG QUARTO_VERSION ARG CTAN_REPO From c728d69040c38bc219bc14993f02845d48c30191 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 8 Oct 2024 16:59:20 +0200 Subject: [PATCH 095/324] Update Python to v3.13.0 - base: Stop installing setuptools and wheel - https://github.com/pypa/get-pip/commit/def4aec84b261b939137dd1c69eff0aabb4a7bf4 - scipy: Temporarily remove numba --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- base/latest.Dockerfile | 7 ++----- scipy/.gitlab-ci.yml | 2 +- scipy/latest.Dockerfile | 2 +- ver/.gitlab-ci.yml | 2 +- 7 files changed, 8 insertions(+), 11 deletions(-) diff --git a/CUDA.md b/CUDA.md index 01f89b4..296d353 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.6.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.12.7 \ + --build-arg PYTHON_VERSION=3.13.0 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 2a7569f..978655a 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.12.7 \ + --build-arg PYTHON_VERSION=3.13.0 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index d18153f..84484a9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.7" + PYTHON_VERSION: "3.13.0" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 6e3b70a..fdd5a4b 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -90,11 +90,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ fi \ done; \ else \ - ## Force update pip, setuptools and wheel - pip install --upgrade --force-reinstall \ - pip \ - setuptools \ - wheel; \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ fi \ ## Git: Set default branch name to main && git config --system init.defaultBranch main \ diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 319b24e..1a0a6bd 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.7" + PYTHON_VERSION: "3.13.0" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 0861212..50c4007 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -103,7 +103,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ #ipympl \ #ipywidgets \ matplotlib \ - numba \ + #numba \ numexpr \ numpy \ pandas \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index c4a101a..2dbb4bb 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.7" + PYTHON_VERSION: "3.13.0" CUDA_VERSION: "12.6.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" From b41e2c44c8839445ffa489db8e747e8d9efe194c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 8 Oct 2024 18:34:38 +0200 Subject: [PATCH 096/324] CUDA images (amd64): Update TensorRT to v10.5.0.18 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 296d353..a5c854d 100644 --- a/CUDA.md +++ b/CUDA.md @@ -76,7 +76,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.4.0.26 \ + --build-arg LIBNVINFER_VERSION=10.5.0.18 \ --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.6 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 2dbb4bb..179e015 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -6,7 +6,7 @@ CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.4.0.26" + LIBNVINFER_VERSION_AMD64: "10.5.0.18" LIBNVINFER_VERSION_ARM64: "10.3.0.26" LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.6" LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" From 798f8032c838730458509146cc8755d0054ba2ac Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 10 Oct 2024 06:15:23 +0200 Subject: [PATCH 097/324] base: Update Git to v2.47.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index fdd5a4b..4523288 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.2 -ARG GIT_VERSION=2.46.2 +ARG GIT_VERSION=2.47.0 ARG GIT_LFS_VERSION=3.5.1 ARG PANDOC_VERSION=3.2 From bdfafae537b35fc1c215dbe791d2b28b2caabc4a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 14 Oct 2024 10:45:37 +0200 Subject: [PATCH 098/324] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 978655a..866b257 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ This project follows the ## Support -Community support: Open a new disussion +Community support: Open a new discussion [here](https://github.com/orgs/b-data/discussions). Commercial support: Contact b-data by [email](mailto:support@b-data.ch). From 819ab7ddf95ad5c861505a1a2a64542366215625 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 17 Oct 2024 21:34:51 +0200 Subject: [PATCH 099/324] CUDA images: Update CUDA to v12.6.2 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index a5c854d..2cb40cb 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.6.1 \ + --build-arg CUDA_VERSION=12.6.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.13.0 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 179e015..5ca787d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.13.0" - CUDA_VERSION: "12.6.1" + CUDA_VERSION: "12.6.2" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" From b4df4cf8bbfa1b3786a88ea77bf417c9fd072283 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 26 Oct 2024 08:18:28 +0200 Subject: [PATCH 100/324] Breaking: CUDA images: Drop TensorRT --- CUDA.md | 2 -- cuda/latest.Dockerfile | 67 ------------------------------------------ ver/.gitlab-ci.yml | 4 --- 3 files changed, 73 deletions(-) diff --git a/CUDA.md b/CUDA.md index 2cb40cb..0f969ec 100644 --- a/CUDA.md +++ b/CUDA.md @@ -76,8 +76,6 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=8.9.7.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ - --build-arg LIBNVINFER_VERSION=10.5.0.18 \ - --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN=12.6 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index fb02ea8..33fdad8 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -5,13 +5,6 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} -ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_AMD64=${LIBNVINFER_VERSION} -ARG LIBNVINFER_VERSION_ARM64=${LIBNVINFER_VERSION} -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=${LIBNVINFER_CUDA_VERSION_MAJ_MIN} -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=${LIBNVINFER_CUDA_VERSION_MAJ_MIN} - ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} @@ -130,11 +123,6 @@ FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} ARG DEBIAN_FRONTEND=noninteractive -ARG LIBNVINFER_VERSION_AMD64 -ARG LIBNVINFER_VERSION_ARM64 -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 - ARG CUDA_HOME=/usr/local/cuda ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf @@ -181,60 +169,5 @@ RUN cpuBlasLib="$(update-alternatives --query \ && apt-mark hold \ ${NV_CUDNN_PACKAGE_NAME} \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ - ## Install TensorRT - && case "$dpkgArch" in \ - amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ - arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ - *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ - esac \ - ## Install development libraries and headers - ## if devel-flavor of CUDA image is used - && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ - dev="-dev"; \ - if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ - headers="-headers"; \ - fi; \ - fi \ - && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ - && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ - && apt-get -y install --no-install-recommends \ - libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ - libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ - ## Keep apt from auto upgrading the libnvinfer packages - && apt-mark hold \ - libnvinfer${LIBNVINFER_VERSION_MAJ} \ - libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ - libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ - libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ - ## Create symlink when only newer TensorRT libraries are available - && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ - grep 'libnvinfer.so.[0-9]\+$') \ - && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ - grep 'libnvinfer_plugin.so.[0-9]\+$') \ - && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ - ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 - if [ "$dpkgArch" = "amd64" ]; then \ - ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ - ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ - fi; \ - if [ "$dpkgArch" = "arm64" ]; then \ - ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ - ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ - fi; \ - ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 - ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ - ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ - fi \ - && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ - ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 - ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ - ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ - fi \ ## Clean up && rm -rf /var/lib/apt/lists/* diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 5ca787d..00f6687 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -6,10 +6,6 @@ CUDNN_VERSION_ARM64: "8.9.7.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.5.0.18" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.6" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From 4817a333243867d7c1f5bd4ba04d65f90b7f6eb9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 26 Oct 2024 08:20:35 +0200 Subject: [PATCH 101/324] CUDA images: Update cuDNN to v9 --- CUDA.md | 4 ++-- ver/.gitlab-ci.yml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CUDA.md b/CUDA.md index 0f969ec..0879cf1 100644 --- a/CUDA.md +++ b/CUDA.md @@ -74,8 +74,8 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=8.9.7.29 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.2 \ + --build-arg CUDNN_VERSION=9.5.1.17 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 00f6687..5f8d96c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,10 +2,10 @@ variables: PYTHON_VERSION: "3.13.0" CUDA_VERSION: "12.6.2" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + CUDNN_VERSION_AMD64: "9.5.1.17" + CUDNN_VERSION_ARM64: "9.5.1.17" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From 59b13b14a1b1b9ea48f082418eefb2c9cbc5c3c7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 21 Nov 2024 19:38:54 +0100 Subject: [PATCH 102/324] base: Update Git LFS to v3.6.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 4523288..40fb3a9 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.2 ARG GIT_VERSION=2.47.0 -ARG GIT_LFS_VERSION=3.5.1 +ARG GIT_LFS_VERSION=3.6.0 ARG PANDOC_VERSION=3.2 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi From b4c8725f3ccc49601b779d2ac72f58c746c7ad1a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 28 Nov 2024 19:33:54 +0100 Subject: [PATCH 103/324] scipy: Update Quarto to v1.6.38 - Exempt quarto from address space limit - https://github.com/quarto-dev/quarto-cli/issues/4197 --- scipy/latest.Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 50c4007..6e443e9 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.5.57 +ARG QUARTO_VERSION=1.6.38 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} @@ -36,6 +36,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && mkdir -p /opt/quarto \ && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ ## Remove quarto pandoc && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Link to system pandoc From 3a61789c9985fabc79d01087260baa93d7190938 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 28 Nov 2024 19:34:11 +0100 Subject: [PATCH 104/324] base: Update Pandoc to v3.4 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 40fb3a9..0d16842 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -5,7 +5,7 @@ ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.2 ARG GIT_VERSION=2.47.0 ARG GIT_LFS_VERSION=3.6.0 -ARG PANDOC_VERSION=3.2 +ARG PANDOC_VERSION=3.4 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From 97479027b999a7e5b03ae44e5866643cea637731 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 28 Nov 2024 19:34:36 +0100 Subject: [PATCH 105/324] base: Update Git to v2.47.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 0d16842..f79feaf 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.2 -ARG GIT_VERSION=2.47.0 +ARG GIT_VERSION=2.47.1 ARG GIT_LFS_VERSION=3.6.0 ARG PANDOC_VERSION=3.4 From 7c7e2d4de3a8f74360d3e1f8c8f68c1e7b11fa01 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 09:26:21 +0100 Subject: [PATCH 106/324] Freeze Python v3.11.10 --- base/.gitlab-ci.yml | 4 ++-- base/3.11.10.Dockerfile | 8 ++++---- scipy/.gitlab-ci.yml | 4 ++-- scipy/3.11.10.Dockerfile | 9 +++++++-- ver/.gitlab-ci.yml | 12 +++++------- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 84484a9..8c88e71 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.13.0" + PYTHON_VERSION: "3.11.10" TAG_VERSION_MAJ_MIN: "false" - TAG_VERSION_MAJ: "false" + TAG_VERSION_MAJ: "true" .before-script-build: &before-script-build - | diff --git a/base/3.11.10.Dockerfile b/base/3.11.10.Dockerfile index 2ee6f54..bbed2be 100644 --- a/base/3.11.10.Dockerfile +++ b/base/3.11.10.Dockerfile @@ -2,10 +2,10 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.11.10 -ARG NEOVIM_VERSION=0.10.1 -ARG GIT_VERSION=2.46.0 -ARG GIT_LFS_VERSION=3.5.1 -ARG PANDOC_VERSION=3.2 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 1a0a6bd..32cb045 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.13.0" + PYTHON_VERSION: "3.11.10" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.11.10.Dockerfile b/scipy/3.11.10.Dockerfile index 75cbb97..4f194ad 100644 --- a/scipy/3.11.10.Dockerfile +++ b/scipy/3.11.10.Dockerfile @@ -1,12 +1,14 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.11.10 -ARG QUARTO_VERSION=1.5.57 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/12/03/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} ARG DEBIAN_FRONTEND=noninteractive +ARG NB_GID=100 + ARG BUILD_ON_IMAGE ARG QUARTO_VERSION ARG CTAN_REPO @@ -34,6 +36,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && mkdir -p /opt/quarto \ && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ ## Remove quarto pandoc && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ ## Link to system pandoc diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 5f8d96c..3a05937 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,12 +1,10 @@ .env: variables: - PYTHON_VERSION: "3.13.0" - CUDA_VERSION: "12.6.2" - CUDNN_VERSION_AMD64: "9.5.1.17" - CUDNN_VERSION_ARM64: "9.5.1.17" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.11.10" + CUDA_VERSION: "11.8.0" + LIBNVINFER_VERSION: "8.5.3-1" + LIBNVINFER_VERSION_MAJ: "8" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all From f4ab35bf7d80a5c199608a28763de4d47ef0dbf4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 09:49:54 +0100 Subject: [PATCH 107/324] Freeze Python v3.11.10 --- base/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 8c88e71..f7b290f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: PYTHON_VERSION: "3.11.10" - TAG_VERSION_MAJ_MIN: "false" - TAG_VERSION_MAJ: "true" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build - | From ce2e31c800ac44e2afe5ccc1baa906a79b11e34a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 11:41:49 +0100 Subject: [PATCH 108/324] CUDA images: Update CUDA to v12.6.3 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 0879cf1..c3e63ee 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.6.2 \ + --build-arg CUDA_VERSION=12.6.3 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.13.0 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 5f8d96c..fe5ea7a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.13.0" - CUDA_VERSION: "12.6.2" + CUDA_VERSION: "12.6.3" CUDNN_VERSION_AMD64: "9.5.1.17" CUDNN_VERSION_ARM64: "9.5.1.17" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" From 514c68a1c9a58768e5b3e5c331aae4071f683e1a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 11:42:51 +0100 Subject: [PATCH 109/324] pubtools: Update Quarto to v1.6.39 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 6e443e9..69f6893 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.6.38 +ARG QUARTO_VERSION=1.6.39 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 9fed21668f58c0098bc8238637881a464edcef57 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 12:10:37 +0100 Subject: [PATCH 110/324] Freeze Python v3.12.7 --- base/.gitlab-ci.yml | 4 +- base/3.12.7.Dockerfile | 112 ++++++++++++++++++ cuda/3.12.7.Dockerfile | 243 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.7.Dockerfile | 138 +++++++++++++++++++++++ ver/.gitlab-ci.yml | 14 ++- ver/3.12.7.Dockerfile | 89 +++++++++++++++ 7 files changed, 595 insertions(+), 9 deletions(-) create mode 100644 base/3.12.7.Dockerfile create mode 100644 cuda/3.12.7.Dockerfile create mode 100644 scipy/3.12.7.Dockerfile create mode 100644 ver/3.12.7.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f7b290f..d18153f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.11.10" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.12.7" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.7.Dockerfile b/base/3.12.7.Dockerfile new file mode 100644 index 0000000..2a01a04 --- /dev/null +++ b/base/3.12.7.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.7 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.7.Dockerfile b/cuda/3.12.7.Dockerfile new file mode 100644 index 0000000..9147390 --- /dev/null +++ b/cuda/3.12.7.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.7.0.23 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.3-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.3-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 32cb045..319b24e 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.11.10" + PYTHON_VERSION: "3.12.7" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.7.Dockerfile b/scipy/3.12.7.Dockerfile new file mode 100644 index 0000000..53b8856 --- /dev/null +++ b/scipy/3.12.7.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.7 +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/12/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index fe5ea7a..fd9042e 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,15 @@ .env: variables: - PYTHON_VERSION: "3.13.0" + PYTHON_VERSION: "3.12.7" CUDA_VERSION: "12.6.3" - CUDNN_VERSION_AMD64: "9.5.1.17" - CUDNN_VERSION_ARM64: "9.5.1.17" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.7.0.23" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.6" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/3.12.7.Dockerfile b/ver/3.12.7.Dockerfile new file mode 100644 index 0000000..ea59eb7 --- /dev/null +++ b/ver/3.12.7.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.3 +ARG PYTHON_VERSION=3.12.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From f2e70863da4b8aa09fe4e9bf6fd9e67d64d88283 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 13:36:45 +0100 Subject: [PATCH 111/324] Release Python v3.12.8 --- base/.gitlab-ci.yml | 4 +- base/3.12.8.Dockerfile | 112 ++++++++++++++++++ cuda/3.12.8.Dockerfile | 243 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.8.Dockerfile | 138 +++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.12.8.Dockerfile | 89 +++++++++++++++ 7 files changed, 588 insertions(+), 6 deletions(-) create mode 100644 base/3.12.8.Dockerfile create mode 100644 cuda/3.12.8.Dockerfile create mode 100644 scipy/3.12.8.Dockerfile create mode 100644 ver/3.12.8.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index d18153f..562933a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.7" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.12.8" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.8.Dockerfile b/base/3.12.8.Dockerfile new file mode 100644 index 0000000..9ca4a9e --- /dev/null +++ b/base/3.12.8.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.8 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.8.Dockerfile b/cuda/3.12.8.Dockerfile new file mode 100644 index 0000000..9147390 --- /dev/null +++ b/cuda/3.12.8.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.7.0.23 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.3-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.3-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 319b24e..ad510f8 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.7" + PYTHON_VERSION: "3.12.8" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.8.Dockerfile b/scipy/3.12.8.Dockerfile new file mode 100644 index 0000000..e5356a4 --- /dev/null +++ b/scipy/3.12.8.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.8 +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index fd9042e..b8b5aad 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.7" + PYTHON_VERSION: "3.12.8" CUDA_VERSION: "12.6.3" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" @@ -10,7 +10,7 @@ LIBNVINFER_VERSION_ARM64: "10.3.0.26" LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.6" LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.12.8.Dockerfile b/ver/3.12.8.Dockerfile new file mode 100644 index 0000000..bde8d4e --- /dev/null +++ b/ver/3.12.8.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.3 +ARG PYTHON_VERSION=3.12.8 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 54654bf572c9f66a81aa6bb4aa4c02282da6cf80 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 14:50:01 +0100 Subject: [PATCH 112/324] Freeze Python v3.13.0 --- base/.gitlab-ci.yml | 4 +- base/3.13.0.Dockerfile | 109 +++++++++++++++++++++++++ cuda/3.13.0.Dockerfile | 176 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.0.Dockerfile | 138 +++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 16 ++-- ver/3.13.0.Dockerfile | 89 ++++++++++++++++++++ 7 files changed, 522 insertions(+), 14 deletions(-) create mode 100644 base/3.13.0.Dockerfile create mode 100644 cuda/3.13.0.Dockerfile create mode 100644 scipy/3.13.0.Dockerfile create mode 100644 ver/3.13.0.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 562933a..84484a9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.8" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.13.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.13.0.Dockerfile b/base/3.13.0.Dockerfile new file mode 100644 index 0000000..1ae7c9f --- /dev/null +++ b/base/3.13.0.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.0 +ARG NEOVIM_VERSION=0.10.2 +ARG GIT_VERSION=2.47.1 +ARG GIT_LFS_VERSION=3.6.0 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.0.Dockerfile b/cuda/3.13.0.Dockerfile new file mode 100644 index 0000000..6cb4dd3 --- /dev/null +++ b/cuda/3.13.0.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.6.0.74 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.6.3-runtime-ubuntu22.04 +## └── nvidia/cuda:12.6.3-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index ad510f8..1a0a6bd 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.8" + PYTHON_VERSION: "3.13.0" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.0.Dockerfile b/scipy/3.13.0.Dockerfile new file mode 100644 index 0000000..be8eb72 --- /dev/null +++ b/scipy/3.13.0.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.0 +ARG QUARTO_VERSION=1.6.39 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2024/12/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b8b5aad..4283cf0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,16 +1,12 @@ .env: variables: - PYTHON_VERSION: "3.12.8" + PYTHON_VERSION: "3.13.0" CUDA_VERSION: "12.6.3" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.7.0.23" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.6" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "true" + CUDNN_VERSION_AMD64: "9.6.0.74" + CUDNN_VERSION_ARM64: "9.6.0.74" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.13.0.Dockerfile b/ver/3.13.0.Dockerfile new file mode 100644 index 0000000..c4c3ec5 --- /dev/null +++ b/ver/3.13.0.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.6.3 +ARG PYTHON_VERSION=3.13.0 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 5c8dfd6c6bbdb0ab2f72e313e0c31c018e0babc7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Dec 2024 17:00:56 +0100 Subject: [PATCH 113/324] Update Python to v3.13.1 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index c3e63ee..d6f04ca 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.6.3 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.0 \ + --build-arg PYTHON_VERSION=3.13.1 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 866b257..0578b92 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.0 \ + --build-arg PYTHON_VERSION=3.13.1 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 84484a9..0688d7f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.0" + PYTHON_VERSION: "3.13.1" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 1a0a6bd..e438fac 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.0" + PYTHON_VERSION: "3.13.1" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4283cf0..201834f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.0" + PYTHON_VERSION: "3.13.1" CUDA_VERSION: "12.6.3" CUDNN_VERSION_AMD64: "9.6.0.74" CUDNN_VERSION_ARM64: "9.6.0.74" From e69fcdeb40b1c9ce34ff8462a48174747e49643c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 22 Dec 2024 14:54:51 +0100 Subject: [PATCH 114/324] Update .gitlab-ci.yml --- ver/.gitlab-ci.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 201834f..4065dc7 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -84,7 +84,7 @@ build:latest-linux-amd64: -t $CI_APP_REPO:latest${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/latest.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then docker build \ --build-arg CUDNN_VERSION_AMD64 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 \ @@ -125,7 +125,7 @@ build:latest-linux-arm64v8: -t $CI_APP_REPO:latest${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/latest.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then docker build \ --build-arg CUDNN_VERSION_ARM64 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 \ @@ -163,7 +163,7 @@ build:version-linux-amd64: -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/$PYTHON_VERSION.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ --build-arg CUDA_IMAGE_FLAVOR \ @@ -195,7 +195,7 @@ build:version-linux-arm64v8: -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/$PYTHON_VERSION.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ --build-arg CUDA_IMAGE_FLAVOR \ @@ -409,7 +409,7 @@ trigger-version-cuda-build: changes: - ver/$PYTHON_VERSION.Dockerfile -trigger-latest-cuda-devel-build: +trigger-latest-cuda-self-build: extends: .post stage: .post needs: ["build-manifest:latest-linux-multiarch"] @@ -417,6 +417,7 @@ trigger-latest-cuda-devel-build: - apk upgrade --no-cache - apk add --update --no-cache curl script: + - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=main -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_BASE_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=main -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline rules: - if: $CI_COMMIT_BRANCH == "main" && $CUDA_IMAGE_SUBTAG =~ /runtime/ @@ -424,7 +425,7 @@ trigger-latest-cuda-devel-build: - ver/latest.Dockerfile - cuda/latest.Dockerfile -trigger-version-cuda-devel-build: +trigger-version-cuda-self-build: extends: .post stage: .post needs: ["build-manifest:version-linux-multiarch"] @@ -432,6 +433,7 @@ trigger-version-cuda-devel-build: - apk upgrade --no-cache - apk add --update --no-cache curl script: + - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_BASE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_IMAGE_SUBTAG =~ /runtime/ From 5737c8edca4169df9653b5fe35d7fc186ef15eea Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 22 Dec 2024 14:56:57 +0100 Subject: [PATCH 115/324] Fix .gitlab-ci.yml --- ver/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4065dc7..ae617a0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -433,7 +433,7 @@ trigger-version-cuda-self-build: - apk upgrade --no-cache - apk add --update --no-cache curl script: - - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_BASE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline + - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_BASE_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline - curl -X POST -F token=$CUDA_PYTHON_VER -F ref=freeze-version -F "variables[CUDA_IMAGE_SUBTAG]=$CUDA_IMAGE_DEVEL_SUBTAG" https://gitlab.b-data.ch/api/v4/projects/318/trigger/pipeline rules: - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_IMAGE_SUBTAG =~ /runtime/ From 1948370a73b553dde16139c2223b72c338d208cc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 22 Dec 2024 14:59:18 +0100 Subject: [PATCH 116/324] Fix .gitlab-ci.yml --- ver/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index ae617a0..78d70b0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -12,7 +12,7 @@ .before-script-all: &before-script-all - | if [[ ! -z "$CUDA_IMAGE_SUBTAG" ]]; then - export CUDA_IMAGE_FLAVOR=`echo $CUDA_IMAGE_SUBTAG | grep -o "runtime\|devel"` + export CUDA_IMAGE_FLAVOR=`echo $CUDA_IMAGE_SUBTAG | grep -o "base\|runtime\|devel"` if [[ "$CUDA_IMAGE_FLAVOR" == "devel" ]]; then export CUPTI_AVAILABLE=1 fi From f9cacdf9043f624381db6af36f22d5c7920c32e7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 22 Dec 2024 15:12:20 +0100 Subject: [PATCH 117/324] Fix .gitlab-ci.yml --- ver/.gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 78d70b0..959bf02 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -84,7 +84,7 @@ build:latest-linux-amd64: -t $CI_APP_REPO:latest${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/latest.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ --build-arg CUDNN_VERSION_AMD64 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 \ @@ -125,7 +125,7 @@ build:latest-linux-arm64v8: -t $CI_APP_REPO:latest${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/latest.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ --build-arg CUDNN_VERSION_ARM64 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 \ @@ -163,7 +163,7 @@ build:version-linux-amd64: -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 -f ver/$PYTHON_VERSION.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ --build-arg CUDA_IMAGE_FLAVOR \ @@ -195,7 +195,7 @@ build:version-linux-arm64v8: -t $CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 -f ver/$PYTHON_VERSION.Dockerfile . - | - if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_SUBTAG" != *"base"* ]]; then + if [[ ! -z "$CUDA_IMAGE" && "$CUDA_IMAGE_FLAVOR" != "base" ]]; then docker build \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ --build-arg CUDA_IMAGE_FLAVOR \ From 5825bf7ec75d90db8be0393fbfb175777f32fa98 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 24 Dec 2024 15:31:00 +0100 Subject: [PATCH 118/324] Add CUDA_NOTES.md - Split from NOTES.md --- CUDA_NOTES.md | 21 +++++++++++++++++++++ NOTES.md | 22 ---------------------- 2 files changed, 21 insertions(+), 22 deletions(-) create mode 100644 CUDA_NOTES.md diff --git a/CUDA_NOTES.md b/CUDA_NOTES.md new file mode 100644 index 0000000..801fa15 --- /dev/null +++ b/CUDA_NOTES.md @@ -0,0 +1,21 @@ +# Notes on CUDA + +The CUDA and OS versions are selected as follows: + +* CUDA: The lastest version that has image flavour `devel` including cuDNN + available. +* OS: The latest version that has TensortRT libraries for `amd64` available. + :information_source: It is taking quite a long time for these to be available + for `arm64`. + +## Tweaks + +### Environment variables + +**Versions** + +* `CUDA_VERSION` + +**Miscellaneous** + +* `CUDA_IMAGE`: The CUDA image it is derived from. diff --git a/NOTES.md b/NOTES.md index 46528cd..34dbd23 100644 --- a/NOTES.md +++ b/NOTES.md @@ -35,25 +35,3 @@ are installed. The latest Python version is installed at `/usr/local/bin`, regardless of whether all packages – such as numba, tensorflow, etc. – are already compatible with it. - -# Additional notes on CUDA - -The CUDA and OS versions are selected as follows: - -* CUDA: The lastest version that has image flavour `devel` including cuDNN - available. -* OS: The latest version that has TensortRT libraries for `amd64` available. - :information_source: It is taking quite a long time for these to be available - for `arm64`. - -## Tweaks - -### Environment variables - -**Versions** - -* `CUDA_VERSION` - -**Miscellaneous** - -* `CUDA_IMAGE`: The CUDA image it is derived from. From a15bde3c076bbf03ca4725b40ab5c54257d49ae0 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 24 Dec 2024 15:33:53 +0100 Subject: [PATCH 119/324] Update CUDA.md --- CUDA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index d6f04ca..8c819fe 100644 --- a/CUDA.md +++ b/CUDA.md @@ -131,4 +131,4 @@ docker run -it --rm \ * [`glcr.b-data.ch/cuda/python/base`](https://gitlab.b-data.ch/cuda/python/base/container_registry) * [`glcr.b-data.ch/cuda/python/scipy`](https://gitlab.b-data.ch/cuda/python/scipy/container_registry) -See [Notes](NOTES.md) for tweaks. +See [CUDA Notes](CUDA_NOTES.md) for tweaks. From ab4cbea7bb9c67adacdec48eff9c7b527d09c3d1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 3 Jan 2025 09:56:52 +0100 Subject: [PATCH 120/324] base: Update Neovim to v0.10.3 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index f79feaf..153660a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.10.2 +ARG NEOVIM_VERSION=0.10.3 ARG GIT_VERSION=2.47.1 ARG GIT_LFS_VERSION=3.6.0 ARG PANDOC_VERSION=3.4 From e4dec0da204b66fd019d56474fff8a9f85937b67 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Jan 2025 20:55:00 +0100 Subject: [PATCH 121/324] scipy: Update Quarto to v1.6.40 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 69f6893..6c1ba28 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.6.39 +ARG QUARTO_VERSION=1.6.40 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From bfd230deef756708b5c52f7c02a89a9bd307be3b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 16 Jan 2025 19:33:00 +0100 Subject: [PATCH 122/324] base: Update Git to v2.48.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 153660a..5e0ce9a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.3 -ARG GIT_VERSION=2.47.1 +ARG GIT_VERSION=2.48.1 ARG GIT_LFS_VERSION=3.6.0 ARG PANDOC_VERSION=3.4 From 50b094c1b5d2bbc5e72b886e81273b11314d20bc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 16 Jan 2025 19:33:28 +0100 Subject: [PATCH 123/324] base: Update Git LFS to v3.6.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 5e0ce9a..e024aa5 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.3 ARG GIT_VERSION=2.48.1 -ARG GIT_LFS_VERSION=3.6.0 +ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi From 79bad834477fac1c79d1cd4425910c1c1a01a3d9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 22 Jan 2025 07:39:38 +0100 Subject: [PATCH 124/324] scipy: Add numba again --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 6c1ba28..0655462 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -106,7 +106,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ #ipympl \ #ipywidgets \ matplotlib \ - #numba \ + numba \ numexpr \ numpy \ pandas \ From cf60f627e567daac1541402e37de5566c174d178 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 25 Jan 2025 10:19:31 +0100 Subject: [PATCH 125/324] CUDA images: Update cuDNN to v9.7.0.66 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 8c819fe..00234a3 100644 --- a/CUDA.md +++ b/CUDA.md @@ -74,7 +74,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.5.1.17 \ + --build-arg CUDNN_VERSION=9.7.0.66 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 959bf02..1ed2b75 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.1" CUDA_VERSION: "12.6.3" - CUDNN_VERSION_AMD64: "9.6.0.74" - CUDNN_VERSION_ARM64: "9.6.0.74" + CUDNN_VERSION_AMD64: "9.7.0.66" + CUDNN_VERSION_ARM64: "9.7.0.66" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From 892d71b6e416f6fb8dc8c2830e72c64c2379d53c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 30 Jan 2025 20:43:57 +0100 Subject: [PATCH 126/324] CUDA images: Update CUDA to v12.8.0 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 00234a3..f391d00 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.6.3 \ + --build-arg CUDA_VERSION=12.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.13.1 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1ed2b75..950f412 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.13.1" - CUDA_VERSION: "12.6.3" + CUDA_VERSION: "12.8.0" CUDNN_VERSION_AMD64: "9.7.0.66" CUDNN_VERSION_ARM64: "9.7.0.66" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" From eeae8d848e18bd0cf5a7cef93f452377e7461bb8 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 31 Jan 2025 17:38:08 +0100 Subject: [PATCH 127/324] base: Update Neovim to v0.10.4 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index e024aa5..be3fe16 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.10.3 +ARG NEOVIM_VERSION=0.10.4 ARG GIT_VERSION=2.48.1 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 From f95e96a094970340b2d660393247d4c991fdc590 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 5 Feb 2025 05:37:11 +0100 Subject: [PATCH 128/324] Freeze Python v3.12.8 --- base/.gitlab-ci.yml | 2 +- base/3.12.8.Dockerfile | 6 +++--- cuda/3.12.8.Dockerfile | 8 ++++---- scipy/.gitlab-ci.yml | 2 +- scipy/3.12.8.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 14 +++++++++----- ver/3.12.8.Dockerfile | 2 +- 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 0688d7f..bc8ad71 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.1" + PYTHON_VERSION: "3.12.8" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.12.8.Dockerfile b/base/3.12.8.Dockerfile index 9ca4a9e..a470840 100644 --- a/base/3.12.8.Dockerfile +++ b/base/3.12.8.Dockerfile @@ -2,9 +2,9 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.12.8 -ARG NEOVIM_VERSION=0.10.2 -ARG GIT_VERSION=2.47.1 -ARG GIT_LFS_VERSION=3.6.0 +ARG NEOVIM_VERSION=0.10.4 +ARG GIT_VERSION=2.48.1 +ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi diff --git a/cuda/3.12.8.Dockerfile b/cuda/3.12.8.Dockerfile index 9147390..4be7f64 100644 --- a/cuda/3.12.8.Dockerfile +++ b/cuda/3.12.8.Dockerfile @@ -6,15 +6,15 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_AMD64=10.7.0.23 +ARG LIBNVINFER_VERSION_AMD64=10.8.0.43 ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.6 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 ## CUDA_IMAGE -## ├── nvidia/cuda:12.6.3-runtime-ubuntu22.04 -## └── nvidia/cuda:12.6.3-devel-ubuntu22.04 +## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.0-devel-ubuntu22.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e438fac..6f1739c 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.1" + PYTHON_VERSION: "3.12.8" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.12.8.Dockerfile b/scipy/3.12.8.Dockerfile index e5356a4..a9bf307 100644 --- a/scipy/3.12.8.Dockerfile +++ b/scipy/3.12.8.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.12.8 -ARG QUARTO_VERSION=1.6.39 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.6.40 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/02/04/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 950f412..f3fdd5b 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,15 @@ .env: variables: - PYTHON_VERSION: "3.13.1" + PYTHON_VERSION: "3.12.8" CUDA_VERSION: "12.8.0" - CUDNN_VERSION_AMD64: "9.7.0.66" - CUDNN_VERSION_ARM64: "9.7.0.66" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.8.0.43" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/3.12.8.Dockerfile b/ver/3.12.8.Dockerfile index bde8d4e..b313aa0 100644 --- a/ver/3.12.8.Dockerfile +++ b/ver/3.12.8.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=12.6.3 +ARG CUDA_VERSION=12.8.0 ARG PYTHON_VERSION=3.12.8 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From 9d1fb0d77ad9f0546cc7707671744af196412859 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 5 Feb 2025 07:19:01 +0100 Subject: [PATCH 129/324] Release Python v3.12.9 --- base/.gitlab-ci.yml | 4 +- base/3.12.9.Dockerfile | 112 ++++++++++++++++++ cuda/3.12.9.Dockerfile | 243 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.9.Dockerfile | 138 +++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.12.9.Dockerfile | 89 +++++++++++++++ 7 files changed, 588 insertions(+), 6 deletions(-) create mode 100644 base/3.12.9.Dockerfile create mode 100644 cuda/3.12.9.Dockerfile create mode 100644 scipy/3.12.9.Dockerfile create mode 100644 ver/3.12.9.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index bc8ad71..05ef43c 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.8" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.12.9" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.9.Dockerfile b/base/3.12.9.Dockerfile new file mode 100644 index 0000000..e4a50cf --- /dev/null +++ b/base/3.12.9.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.9 +ARG NEOVIM_VERSION=0.10.4 +ARG GIT_VERSION=2.48.1 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.9.Dockerfile b/cuda/3.12.9.Dockerfile new file mode 100644 index 0000000..4be7f64 --- /dev/null +++ b/cuda/3.12.9.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.8.0.43 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 6f1739c..c63a757 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.8" + PYTHON_VERSION: "3.12.9" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.9.Dockerfile b/scipy/3.12.9.Dockerfile new file mode 100644 index 0000000..9f35b8a --- /dev/null +++ b/scipy/3.12.9.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.9 +ARG QUARTO_VERSION=1.6.40 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index f3fdd5b..d2f3ee9 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.8" + PYTHON_VERSION: "3.12.9" CUDA_VERSION: "12.8.0" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" @@ -10,7 +10,7 @@ LIBNVINFER_VERSION_ARM64: "10.3.0.26" LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8" LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.12.9.Dockerfile b/ver/3.12.9.Dockerfile new file mode 100644 index 0000000..756c545 --- /dev/null +++ b/ver/3.12.9.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.0 +ARG PYTHON_VERSION=3.12.9 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 436dedf9ed48eb524638f1ea13a71b0cd36ad5d0 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 5 Feb 2025 09:39:49 +0100 Subject: [PATCH 130/324] Freeze Python v3.13.1 --- base/.gitlab-ci.yml | 4 +- base/3.13.1.Dockerfile | 109 +++++++++++++++++++++++++ cuda/3.13.1.Dockerfile | 176 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.1.Dockerfile | 138 +++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 16 ++-- ver/3.13.1.Dockerfile | 89 ++++++++++++++++++++ 7 files changed, 522 insertions(+), 14 deletions(-) create mode 100644 base/3.13.1.Dockerfile create mode 100644 cuda/3.13.1.Dockerfile create mode 100644 scipy/3.13.1.Dockerfile create mode 100644 ver/3.13.1.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 05ef43c..0688d7f 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.9" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.13.1" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.13.1.Dockerfile b/base/3.13.1.Dockerfile new file mode 100644 index 0000000..4e5f0d3 --- /dev/null +++ b/base/3.13.1.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.1 +ARG NEOVIM_VERSION=0.10.4 +ARG GIT_VERSION=2.48.1 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.1.Dockerfile b/cuda/3.13.1.Dockerfile new file mode 100644 index 0000000..909a841 --- /dev/null +++ b/cuda/3.13.1.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.7.0.66 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index c63a757..e438fac 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.9" + PYTHON_VERSION: "3.13.1" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.1.Dockerfile b/scipy/3.13.1.Dockerfile new file mode 100644 index 0000000..f877eca --- /dev/null +++ b/scipy/3.13.1.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.1 +ARG QUARTO_VERSION=1.6.40 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/02/04/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d2f3ee9..950f412 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,16 +1,12 @@ .env: variables: - PYTHON_VERSION: "3.12.9" + PYTHON_VERSION: "3.13.1" CUDA_VERSION: "12.8.0" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.8.0.43" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "true" + CUDNN_VERSION_AMD64: "9.7.0.66" + CUDNN_VERSION_ARM64: "9.7.0.66" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.13.1.Dockerfile b/ver/3.13.1.Dockerfile new file mode 100644 index 0000000..4799e09 --- /dev/null +++ b/ver/3.13.1.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.0 +ARG PYTHON_VERSION=3.13.1 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 383fe7d5f38b59bba0b7c56996a8424523f6410f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 5 Feb 2025 11:41:40 +0100 Subject: [PATCH 131/324] Update Python to v3.13.2 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index f391d00..8eb7ba2 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.8.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.1 \ + --build-arg PYTHON_VERSION=3.13.2 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 0578b92..b0edfa6 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.1 \ + --build-arg PYTHON_VERSION=3.13.2 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 0688d7f..38197aa 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.1" + PYTHON_VERSION: "3.13.2" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e438fac..6001c51 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.1" + PYTHON_VERSION: "3.13.2" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 950f412..9822749 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.1" + PYTHON_VERSION: "3.13.2" CUDA_VERSION: "12.8.0" CUDNN_VERSION_AMD64: "9.7.0.66" CUDNN_VERSION_ARM64: "9.7.0.66" From fe62c899f22f326ea9edff220f7fcf0f222b281a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 27 Feb 2025 15:16:44 +0100 Subject: [PATCH 132/324] scipy: Update Quarto to v1.6.42 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 0655462..79b96a1 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.6.40 +ARG QUARTO_VERSION=1.6.42 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From a9dac94b73f5940a0e2296464c671479c5fa96b5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 2 Mar 2025 17:40:14 +0100 Subject: [PATCH 133/324] scipy: Update latest Dockerfile --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 79b96a1..cdec40d 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -37,7 +37,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ ## Exempt quarto from address space limit - && sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \ + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ /opt/quarto/bin/quarto \ ## Remove quarto pandoc && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ From c719b16061e795487ce088f63a054a3dfe61f661 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 16 Mar 2025 19:23:55 +0100 Subject: [PATCH 134/324] CUDA images: Update cuDNN to v9.8.0.87 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 9822749..0fc9d49 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.2" CUDA_VERSION: "12.8.0" - CUDNN_VERSION_AMD64: "9.7.0.66" - CUDNN_VERSION_ARM64: "9.7.0.66" + CUDNN_VERSION_AMD64: "9.8.0.87" + CUDNN_VERSION_ARM64: "9.8.0.87" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From 4479831d085f86ef58afa91b63356391e1ccc4c9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 16 Mar 2025 19:27:39 +0100 Subject: [PATCH 135/324] CUDA images: Update CUDA to v12.8.1 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 8eb7ba2..1129e59 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.8.0 \ + --build-arg CUDA_VERSION=12.8.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.13.2 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0fc9d49..63809b5 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.13.2" - CUDA_VERSION: "12.8.0" + CUDA_VERSION: "12.8.1" CUDNN_VERSION_AMD64: "9.8.0.87" CUDNN_VERSION_ARM64: "9.8.0.87" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" From 68aee283cc2f2100185eec45bc419480e3864f86 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 16 Mar 2025 19:30:08 +0100 Subject: [PATCH 136/324] base: Update Git to v2.49.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index be3fe16..2622f78 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.10.4 -ARG GIT_VERSION=2.48.1 +ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 From b51020e0be70ee03a314c6ac750d922f9db1a756 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 17 Mar 2025 16:04:39 +0100 Subject: [PATCH 137/324] Update CUDA.md --- CUDA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index 1129e59..75465da 100644 --- a/CUDA.md +++ b/CUDA.md @@ -74,7 +74,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.7.0.66 \ + --build-arg CUDNN_VERSION=9.8.0.87 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ From 95cda2c5f499e7ce7796e9cc420eb3278c8b3ecb Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 26 Mar 2025 17:01:56 +0100 Subject: [PATCH 138/324] base: Update Neovim to v0.11.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 2622f78..321796c 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.10.4 +ARG NEOVIM_VERSION=0.11.0 ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 From 0fe580bd1302a0850369c0c65f4affb93634565e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 7 Apr 2025 09:41:32 +0200 Subject: [PATCH 139/324] scipy: Update Quarto to v1.6.43 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index cdec40d..1e7ef47 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.6.42 +ARG QUARTO_VERSION=1.6.43 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 5d61fee64d76a98cc6b86cdf74d0b217567872dd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 9 Apr 2025 06:24:09 +0200 Subject: [PATCH 140/324] Freeze Python v3.12.9 --- base/.gitlab-ci.yml | 2 +- base/3.12.9.Dockerfile | 4 ++-- cuda/3.12.9.Dockerfile | 6 +++--- scipy/.gitlab-ci.yml | 2 +- scipy/3.12.9.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 14 +++++++++----- ver/3.12.9.Dockerfile | 2 +- 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 38197aa..4070bf6 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.2" + PYTHON_VERSION: "3.12.9" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.12.9.Dockerfile b/base/3.12.9.Dockerfile index e4a50cf..db418fe 100644 --- a/base/3.12.9.Dockerfile +++ b/base/3.12.9.Dockerfile @@ -2,8 +2,8 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.12.9 -ARG NEOVIM_VERSION=0.10.4 -ARG GIT_VERSION=2.48.1 +ARG NEOVIM_VERSION=0.11.0 +ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 diff --git a/cuda/3.12.9.Dockerfile b/cuda/3.12.9.Dockerfile index 4be7f64..6a1a608 100644 --- a/cuda/3.12.9.Dockerfile +++ b/cuda/3.12.9.Dockerfile @@ -6,15 +6,15 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_AMD64=10.8.0.43 +ARG LIBNVINFER_VERSION_AMD64=10.9.0.34 ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 ## CUDA_IMAGE -## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04 -## └── nvidia/cuda:12.8.0-devel-ubuntu22.04 +## ├── nvidia/cuda:12.8.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.1-devel-ubuntu22.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 6001c51..0c59d4b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.2" + PYTHON_VERSION: "3.12.9" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.12.9.Dockerfile b/scipy/3.12.9.Dockerfile index 9f35b8a..3042131 100644 --- a/scipy/3.12.9.Dockerfile +++ b/scipy/3.12.9.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.12.9 -ARG QUARTO_VERSION=1.6.40 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.6.43 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/04/08/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 63809b5..8308876 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,15 @@ .env: variables: - PYTHON_VERSION: "3.13.2" + PYTHON_VERSION: "3.12.9" CUDA_VERSION: "12.8.1" - CUDNN_VERSION_AMD64: "9.8.0.87" - CUDNN_VERSION_ARM64: "9.8.0.87" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.9.0.34" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/3.12.9.Dockerfile b/ver/3.12.9.Dockerfile index 756c545..10d26cc 100644 --- a/ver/3.12.9.Dockerfile +++ b/ver/3.12.9.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=12.8.0 +ARG CUDA_VERSION=12.8.1 ARG PYTHON_VERSION=3.12.9 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From 3d800e12439df7b59a32b1d6baa2a99b5afeb7a5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 9 Apr 2025 07:13:23 +0200 Subject: [PATCH 141/324] Release Python v3.12.10 --- base/.gitlab-ci.yml | 4 +- base/3.12.10.Dockerfile | 112 ++++++++++++++++++ cuda/3.12.10.Dockerfile | 243 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.10.Dockerfile | 138 ++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.12.10.Dockerfile | 89 ++++++++++++++ 7 files changed, 588 insertions(+), 6 deletions(-) create mode 100644 base/3.12.10.Dockerfile create mode 100644 cuda/3.12.10.Dockerfile create mode 100644 scipy/3.12.10.Dockerfile create mode 100644 ver/3.12.10.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 4070bf6..309011a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.9" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.12.10" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.10.Dockerfile b/base/3.12.10.Dockerfile new file mode 100644 index 0000000..596b394 --- /dev/null +++ b/base/3.12.10.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.10 +ARG NEOVIM_VERSION=0.11.0 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.10.Dockerfile b/cuda/3.12.10.Dockerfile new file mode 100644 index 0000000..6a1a608 --- /dev/null +++ b/cuda/3.12.10.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.9.0.34 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0c59d4b..f3dcfff 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.9" + PYTHON_VERSION: "3.12.10" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.10.Dockerfile b/scipy/3.12.10.Dockerfile new file mode 100644 index 0000000..c0d6ee3 --- /dev/null +++ b/scipy/3.12.10.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.10 +ARG QUARTO_VERSION=1.6.43 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 8308876..425f478 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.9" + PYTHON_VERSION: "3.12.10" CUDA_VERSION: "12.8.1" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" @@ -10,7 +10,7 @@ LIBNVINFER_VERSION_ARM64: "10.3.0.26" LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8" LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.12.10.Dockerfile b/ver/3.12.10.Dockerfile new file mode 100644 index 0000000..9bc8649 --- /dev/null +++ b/ver/3.12.10.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.1 +ARG PYTHON_VERSION=3.12.10 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 026cf24201d82720bcac80b12e14a27eed003962 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 9 Apr 2025 07:59:42 +0200 Subject: [PATCH 142/324] Freeze Python v3.13.2 --- base/.gitlab-ci.yml | 4 +- base/3.13.2.Dockerfile | 109 +++++++++++++++++++++++++ cuda/3.13.2.Dockerfile | 176 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.2.Dockerfile | 138 +++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 16 ++-- ver/3.13.2.Dockerfile | 89 ++++++++++++++++++++ 7 files changed, 522 insertions(+), 14 deletions(-) create mode 100644 base/3.13.2.Dockerfile create mode 100644 cuda/3.13.2.Dockerfile create mode 100644 scipy/3.13.2.Dockerfile create mode 100644 ver/3.13.2.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 309011a..38197aa 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.10" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.13.2" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.13.2.Dockerfile b/base/3.13.2.Dockerfile new file mode 100644 index 0000000..d0515ca --- /dev/null +++ b/base/3.13.2.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.2 +ARG NEOVIM_VERSION=0.11.0 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.4 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.2.Dockerfile b/cuda/3.13.2.Dockerfile new file mode 100644 index 0000000..d1c2df1 --- /dev/null +++ b/cuda/3.13.2.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.8.0.87 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.8.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.8.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index f3dcfff..6001c51 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.10" + PYTHON_VERSION: "3.13.2" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.2.Dockerfile b/scipy/3.13.2.Dockerfile new file mode 100644 index 0000000..0276f17 --- /dev/null +++ b/scipy/3.13.2.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.2 +ARG QUARTO_VERSION=1.6.43 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/04/08/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 425f478..63809b5 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,16 +1,12 @@ .env: variables: - PYTHON_VERSION: "3.12.10" + PYTHON_VERSION: "3.13.2" CUDA_VERSION: "12.8.1" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.9.0.34" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "true" + CUDNN_VERSION_AMD64: "9.8.0.87" + CUDNN_VERSION_ARM64: "9.8.0.87" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.13.2.Dockerfile b/ver/3.13.2.Dockerfile new file mode 100644 index 0000000..90edb78 --- /dev/null +++ b/ver/3.13.2.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.8.1 +ARG PYTHON_VERSION=3.13.2 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 49747cf0634fdf73432b68c686837c7bac47af53 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 9 Apr 2025 08:57:18 +0200 Subject: [PATCH 143/324] Update Python to v3.13.3 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 75465da..cb469ee 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.8.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.2 \ + --build-arg PYTHON_VERSION=3.13.3 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index b0edfa6..afe2025 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.2 \ + --build-arg PYTHON_VERSION=3.13.3 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 38197aa..919b4fd 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.2" + PYTHON_VERSION: "3.13.3" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 6001c51..afc865d 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.2" + PYTHON_VERSION: "3.13.3" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 63809b5..47454b9 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.2" + PYTHON_VERSION: "3.13.3" CUDA_VERSION: "12.8.1" CUDNN_VERSION_AMD64: "9.8.0.87" CUDNN_VERSION_ARM64: "9.8.0.87" From e38d3c55f5e7e93fd3b36c59dd49be4335e5376c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 28 Apr 2025 13:09:48 +0200 Subject: [PATCH 144/324] base: Update Neovim to v0.11.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 321796c..152464d 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.0 +ARG NEOVIM_VERSION=0.11.1 ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.4 From 0cedaf76efdb61e6b0c6898f153848f68fa4dbba Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 29 Apr 2025 06:06:22 +0200 Subject: [PATCH 145/324] scipy: Update Quarto to v1.7.29 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 1e7ef47..b0e8eb7 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.6.43 +ARG QUARTO_VERSION=1.7.29 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 1fc3dc55f0f3a1d4b9ef77757a4ce4d7aae21873 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 29 Apr 2025 07:38:27 +0200 Subject: [PATCH 146/324] base: Update Pandoc to v3.6.3 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 152464d..5f0f37a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -5,7 +5,7 @@ ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.1 ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 -ARG PANDOC_VERSION=3.4 +ARG PANDOC_VERSION=3.6.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From a8fc2d7383eaac205f020d934eed7d199dffbadd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 4 May 2025 11:08:20 +0200 Subject: [PATCH 147/324] CUDA images: Update cuDNN to v9.9.0.87 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 47454b9..a3c969e 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.3" CUDA_VERSION: "12.8.1" - CUDNN_VERSION_AMD64: "9.8.0.87" - CUDNN_VERSION_ARM64: "9.8.0.87" + CUDNN_VERSION_AMD64: "9.9.0.52" + CUDNN_VERSION_ARM64: "9.9.0.52" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From e0a12fba95f71919f809372dfed8b3f22c7b71d6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 4 May 2025 20:25:17 +0200 Subject: [PATCH 148/324] Update CUDA.md --- CUDA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index cb469ee..967a34e 100644 --- a/CUDA.md +++ b/CUDA.md @@ -74,7 +74,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.8.0.87 \ + --build-arg CUDNN_VERSION=9.9.0.52 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ From 50f7edcb680ee5af9918bfe93d398b0940fb03d4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 6 May 2025 08:52:15 +0200 Subject: [PATCH 149/324] scipy: Update Quarto to v1.7.30 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index b0e8eb7..4bed243 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.7.29 +ARG QUARTO_VERSION=1.7.30 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 5e2d977d2a6e4166f502bc1fe27f1425ba8dc8e1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 May 2025 20:42:47 +0200 Subject: [PATCH 150/324] CUDA images: Update CUDA to v12.9.0 - CUDA images: Update cuDNN to v9.10.0.56 --- CUDA.md | 4 ++-- ver/.gitlab-ci.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 967a34e..db308b9 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.8.1 \ + --build-arg CUDA_VERSION=12.9.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.13.3 \ -t cuda/python/ver \ @@ -74,7 +74,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.9.0.52 \ + --build-arg CUDNN_VERSION=9.10.0.56 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index a3c969e..69a2262 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,9 +1,9 @@ .env: variables: PYTHON_VERSION: "3.13.3" - CUDA_VERSION: "12.8.1" - CUDNN_VERSION_AMD64: "9.9.0.52" - CUDNN_VERSION_ARM64: "9.9.0.52" + CUDA_VERSION: "12.9.0" + CUDNN_VERSION_AMD64: "9.10.0.56" + CUDNN_VERSION_ARM64: "9.10.0.56" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From df1b93087ea137850bd3aad7b7d7ea48b74d8f9d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 13 May 2025 06:48:21 +0200 Subject: [PATCH 151/324] scipy: Update Quarto to v1.7.31 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 4bed243..e4a8919 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.7.30 +ARG QUARTO_VERSION=1.7.31 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 07796a4b1cdd981a999b5652a2285994a65bff2d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 22 May 2025 20:44:41 +0200 Subject: [PATCH 152/324] CUDA images: Update cuDNN to v9.10.1.4 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 69a2262..2ec3380 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.3" CUDA_VERSION: "12.9.0" - CUDNN_VERSION_AMD64: "9.10.0.56" - CUDNN_VERSION_ARM64: "9.10.0.56" + CUDNN_VERSION_AMD64: "9.10.1.4" + CUDNN_VERSION_ARM64: "9.10.1.4" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From baf121c29dc529189a3caf7e94933ef5e352cb34 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Jun 2025 09:39:43 +0200 Subject: [PATCH 153/324] Freeze Python v3.12.10 --- base/.gitlab-ci.yml | 2 +- base/3.12.10.Dockerfile | 4 ++-- cuda/3.12.10.Dockerfile | 8 ++++---- scipy/.gitlab-ci.yml | 2 +- scipy/3.12.10.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 14 +++++++++----- ver/3.12.10.Dockerfile | 2 +- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 919b4fd..b36c8bc 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.3" + PYTHON_VERSION: "3.12.10" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.12.10.Dockerfile b/base/3.12.10.Dockerfile index 596b394..bbfe5dc 100644 --- a/base/3.12.10.Dockerfile +++ b/base/3.12.10.Dockerfile @@ -2,10 +2,10 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.12.10 -ARG NEOVIM_VERSION=0.11.0 +ARG NEOVIM_VERSION=0.11.1 ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 -ARG PANDOC_VERSION=3.4 +ARG PANDOC_VERSION=3.6.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi diff --git a/cuda/3.12.10.Dockerfile b/cuda/3.12.10.Dockerfile index 6a1a608..88c1918 100644 --- a/cuda/3.12.10.Dockerfile +++ b/cuda/3.12.10.Dockerfile @@ -6,15 +6,15 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_AMD64=10.9.0.34 +ARG LIBNVINFER_VERSION_AMD64=10.11.0.33 ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN -ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.9 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 ## CUDA_IMAGE -## ├── nvidia/cuda:12.8.1-runtime-ubuntu22.04 -## └── nvidia/cuda:12.8.1-devel-ubuntu22.04 +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index afc865d..1ee469a 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.3" + PYTHON_VERSION: "3.12.10" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.12.10.Dockerfile b/scipy/3.12.10.Dockerfile index c0d6ee3..fd9870f 100644 --- a/scipy/3.12.10.Dockerfile +++ b/scipy/3.12.10.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.12.10 -ARG QUARTO_VERSION=1.6.43 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/06/03/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 2ec3380..df287e0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,15 @@ .env: variables: - PYTHON_VERSION: "3.13.3" + PYTHON_VERSION: "3.12.10" CUDA_VERSION: "12.9.0" - CUDNN_VERSION_AMD64: "9.10.1.4" - CUDNN_VERSION_ARM64: "9.10.1.4" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.11.0.33" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/3.12.10.Dockerfile b/ver/3.12.10.Dockerfile index 9bc8649..fe0e13e 100644 --- a/ver/3.12.10.Dockerfile +++ b/ver/3.12.10.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=12.8.1 +ARG CUDA_VERSION=12.9.0 ARG PYTHON_VERSION=3.12.10 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From 326c0c7d771ebab34b36717bf2d71e30c2d1e5e5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Jun 2025 10:09:14 +0200 Subject: [PATCH 154/324] Freeze Python v3.12.10 --- base/3.12.10.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/3.12.10.Dockerfile b/base/3.12.10.Dockerfile index bbfe5dc..2d2cf34 100644 --- a/base/3.12.10.Dockerfile +++ b/base/3.12.10.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.12.10 -ARG NEOVIM_VERSION=0.11.1 +ARG NEOVIM_VERSION=0.11.2 ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.6.3 From ce80c55a25a6b2e9055af48b7d4dbf03aa407f7b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Jun 2025 11:08:51 +0200 Subject: [PATCH 155/324] Release Python v3.12.11 --- base/.gitlab-ci.yml | 4 +- base/3.12.11.Dockerfile | 112 ++++++++++++++++++ cuda/3.12.11.Dockerfile | 243 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.12.11.Dockerfile | 138 ++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.12.11.Dockerfile | 89 ++++++++++++++ 7 files changed, 588 insertions(+), 6 deletions(-) create mode 100644 base/3.12.11.Dockerfile create mode 100644 cuda/3.12.11.Dockerfile create mode 100644 scipy/3.12.11.Dockerfile create mode 100644 ver/3.12.11.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index b36c8bc..ed3a4ce 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.10" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.12.11" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.12.11.Dockerfile b/base/3.12.11.Dockerfile new file mode 100644 index 0000000..95ee376 --- /dev/null +++ b/base/3.12.11.Dockerfile @@ -0,0 +1,112 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.12.11 +ARG NEOVIM_VERSION=0.11.2 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip, setuptools and wheel + pip install --upgrade --force-reinstall \ + pip \ + setuptools \ + wheel; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.12.11.Dockerfile b/cuda/3.12.11.Dockerfile new file mode 100644 index 0000000..88c1918 --- /dev/null +++ b/cuda/3.12.11.Dockerfile @@ -0,0 +1,243 @@ +ARG CUDNN_VERSION=8.9.7.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG LIBNVINFER_VERSION +ARG LIBNVINFER_VERSION_AMD64=10.11.0.33 +ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.9 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG LIBNVINFER_VERSION_AMD64 +ARG LIBNVINFER_VERSION_ARM64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 +ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Install TensorRT + && case "$dpkgArch" in \ + amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \ + arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \ + *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ + esac \ + ## Install development libraries and headers + ## if devel-flavor of CUDA image is used + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \ + dev="-dev"; \ + if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \ + headers="-headers"; \ + fi; \ + fi \ + && LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \ + && CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \ + && apt-get -y install --no-install-recommends \ + libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \ + ## Keep apt from auto upgrading the libnvinfer packages + && apt-mark hold \ + libnvinfer${LIBNVINFER_VERSION_MAJ} \ + libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \ + libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \ + ## Create symlink when only newer TensorRT libraries are available + && trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer.so.[0-9]\+$') \ + && trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \ + grep 'libnvinfer_plugin.so.[0-9]\+$') \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \ + ## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2 + if [ "$dpkgArch" = "amd64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \ + fi; \ + if [ "$dpkgArch" = "arm64" ]; then \ + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \ + fi; \ + ## TensorFlow versions < 2.15 expect TensorRT libraries version 8 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \ + fi \ + && if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \ + ## TensorFlow versions < 2.12 expect TensorRT libraries version 7 + ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \ + ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 1ee469a..0c4c8da 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.10" + PYTHON_VERSION: "3.12.11" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.11.Dockerfile b/scipy/3.12.11.Dockerfile new file mode 100644 index 0000000..070a512 --- /dev/null +++ b/scipy/3.12.11.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.12.11 +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index df287e0..4ca3ca3 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.12.10" + PYTHON_VERSION: "3.12.11" CUDA_VERSION: "12.9.0" CUDNN_VERSION_AMD64: "8.9.7.29" CUDNN_VERSION_ARM64: "8.9.7.29" @@ -10,7 +10,7 @@ LIBNVINFER_VERSION_ARM64: "10.3.0.26" LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.12.11.Dockerfile b/ver/3.12.11.Dockerfile new file mode 100644 index 0000000..eddba10 --- /dev/null +++ b/ver/3.12.11.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.0 +ARG PYTHON_VERSION=3.12.11 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 4fd39886c620228c203d4e545d9f1b1618f334ae Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Jun 2025 13:53:05 +0200 Subject: [PATCH 156/324] Freeze Python v3.13.3 --- base/.gitlab-ci.yml | 4 +- base/3.13.3.Dockerfile | 109 +++++++++++++++++++++++++ cuda/3.13.3.Dockerfile | 176 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.3.Dockerfile | 138 +++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 16 ++-- ver/3.13.3.Dockerfile | 89 ++++++++++++++++++++ 7 files changed, 522 insertions(+), 14 deletions(-) create mode 100644 base/3.13.3.Dockerfile create mode 100644 cuda/3.13.3.Dockerfile create mode 100644 scipy/3.13.3.Dockerfile create mode 100644 ver/3.13.3.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ed3a4ce..919b4fd 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.12.11" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.13.3" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/base/3.13.3.Dockerfile b/base/3.13.3.Dockerfile new file mode 100644 index 0000000..8a3a653 --- /dev/null +++ b/base/3.13.3.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.3 +ARG NEOVIM_VERSION=0.11.2 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.3.Dockerfile b/cuda/3.13.3.Dockerfile new file mode 100644 index 0000000..7303e61 --- /dev/null +++ b/cuda/3.13.3.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.10.1.4 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0c4c8da..afc865d 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.12.11" + PYTHON_VERSION: "3.13.3" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.3.Dockerfile b/scipy/3.13.3.Dockerfile new file mode 100644 index 0000000..92f3ee3 --- /dev/null +++ b/scipy/3.13.3.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.3 +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/06/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4ca3ca3..2ec3380 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,16 +1,12 @@ .env: variables: - PYTHON_VERSION: "3.12.11" + PYTHON_VERSION: "3.13.3" CUDA_VERSION: "12.9.0" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.11.0.33" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "true" + CUDNN_VERSION_AMD64: "9.10.1.4" + CUDNN_VERSION_ARM64: "9.10.1.4" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-all: &before-script-all diff --git a/ver/3.13.3.Dockerfile b/ver/3.13.3.Dockerfile new file mode 100644 index 0000000..d2fbb5d --- /dev/null +++ b/ver/3.13.3.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.0 +ARG PYTHON_VERSION=3.13.3 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 46dda0cb13d4e12d646458e2e7930ff1c1d3cceb Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Jun 2025 14:05:30 +0200 Subject: [PATCH 157/324] base: Update Neovim to v0.11.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 5f0f37a..59e5c77 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.1 +ARG NEOVIM_VERSION=0.11.2 ARG GIT_VERSION=2.49.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.6.3 From b4ba6e4883021d8b875335ac722b26886e705a7b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Jun 2025 14:30:43 +0200 Subject: [PATCH 158/324] Update Python to v3.13.4 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index db308b9..7d2e597 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.9.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.3 \ + --build-arg PYTHON_VERSION=3.13.4 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index afe2025..292f7d9 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.3 \ + --build-arg PYTHON_VERSION=3.13.4 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 919b4fd..bd6a69a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.3" + PYTHON_VERSION: "3.13.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index afc865d..24850e5 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.3" + PYTHON_VERSION: "3.13.4" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 2ec3380..0f7651a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.3" + PYTHON_VERSION: "3.13.4" CUDA_VERSION: "12.9.0" CUDNN_VERSION_AMD64: "9.10.1.4" CUDNN_VERSION_ARM64: "9.10.1.4" From b718c417c76edbf520d5e8365ac0f8f5c86a6ef4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 11 Jun 2025 06:27:32 +0200 Subject: [PATCH 159/324] CUDA images: Update cuDNN to v9.10.2.21 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0f7651a..244c7b4 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.4" CUDA_VERSION: "12.9.0" - CUDNN_VERSION_AMD64: "9.10.1.4" - CUDNN_VERSION_ARM64: "9.10.1.4" + CUDNN_VERSION_AMD64: "9.10.2.21" + CUDNN_VERSION_ARM64: "9.10.2.21" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From debd6d1df0d017b5a166e305b7add20fe9413c74 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 19 Jun 2025 21:07:14 +0200 Subject: [PATCH 160/324] base: Update Git to v2.50.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 59e5c77..8819b48 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.2 -ARG GIT_VERSION=2.49.0 +ARG GIT_VERSION=2.50.0 ARG GIT_LFS_VERSION=3.6.1 ARG PANDOC_VERSION=3.6.3 From 366042d6c689ed865c11ef48888e7a0a48fc9a7a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 19 Jun 2025 21:09:43 +0200 Subject: [PATCH 161/324] scipy: Update Quarto to v1.7.32 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index e4a8919..a8f6561 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.7.31 +ARG QUARTO_VERSION=1.7.32 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From c438ae1d09e765d968a5fe7ec5c4f16fad3d9a11 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 19 Jun 2025 21:17:24 +0200 Subject: [PATCH 162/324] CUDA images: Update CUDA to v12.9.1 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 7d2e597..e27eb49 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=22.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.9.0 \ + --build-arg CUDA_VERSION=12.9.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ --build-arg PYTHON_VERSION=3.13.4 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 244c7b4..d975526 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: PYTHON_VERSION: "3.13.4" - CUDA_VERSION: "12.9.0" + CUDA_VERSION: "12.9.1" CUDNN_VERSION_AMD64: "9.10.2.21" CUDNN_VERSION_ARM64: "9.10.2.21" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" From e0472bb12e0f715da635fcf8d9b58969b9b53a47 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 25 Jun 2025 07:15:07 +0200 Subject: [PATCH 163/324] Freeze Python v3.13.4 --- base/3.13.4.Dockerfile | 109 +++++++++++++++++++++++++ cuda/3.13.4.Dockerfile | 176 ++++++++++++++++++++++++++++++++++++++++ scipy/3.13.4.Dockerfile | 138 +++++++++++++++++++++++++++++++ ver/3.13.4.Dockerfile | 89 ++++++++++++++++++++ 4 files changed, 512 insertions(+) create mode 100644 base/3.13.4.Dockerfile create mode 100644 cuda/3.13.4.Dockerfile create mode 100644 scipy/3.13.4.Dockerfile create mode 100644 ver/3.13.4.Dockerfile diff --git a/base/3.13.4.Dockerfile b/base/3.13.4.Dockerfile new file mode 100644 index 0000000..2f3fb46 --- /dev/null +++ b/base/3.13.4.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.4 +ARG NEOVIM_VERSION=0.11.2 +ARG GIT_VERSION=2.49.0 +ARG GIT_LFS_VERSION=3.6.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.4.Dockerfile b/cuda/3.13.4.Dockerfile new file mode 100644 index 0000000..7303e61 --- /dev/null +++ b/cuda/3.13.4.Dockerfile @@ -0,0 +1,176 @@ +ARG CUDNN_VERSION=9.10.1.4 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.13.4.Dockerfile b/scipy/3.13.4.Dockerfile new file mode 100644 index 0000000..f375ef2 --- /dev/null +++ b/scipy/3.13.4.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.4 +ARG QUARTO_VERSION=1.7.31 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/06/11/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.13.4.Dockerfile b/ver/3.13.4.Dockerfile new file mode 100644 index 0000000..5c4945c --- /dev/null +++ b/ver/3.13.4.Dockerfile @@ -0,0 +1,89 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.0 +ARG PYTHON_VERSION=3.13.4 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From e1d2986b8d2223f380cbcccddd251f5b96a94d80 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 25 Jun 2025 07:47:54 +0200 Subject: [PATCH 164/324] Update Python to v3.13.5 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index e27eb49..4cab66f 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.9.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.4 \ + --build-arg PYTHON_VERSION=3.13.5 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 292f7d9..51538ef 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.4 \ + --build-arg PYTHON_VERSION=3.13.5 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index bd6a69a..3ec5f96 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.4" + PYTHON_VERSION: "3.13.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 24850e5..1af82f6 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.4" + PYTHON_VERSION: "3.13.5" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d975526..0e0ac6a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.4" + PYTHON_VERSION: "3.13.5" CUDA_VERSION: "12.9.1" CUDNN_VERSION_AMD64: "9.10.2.21" CUDNN_VERSION_ARM64: "9.10.2.21" From 6746b75a250135c6dfbe2a6a79f51461a0171017 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 25 Jun 2025 19:03:00 +0200 Subject: [PATCH 165/324] Freeze Python v3.13.4 --- ver/.gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d975526..0f7651a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,9 +1,9 @@ .env: variables: PYTHON_VERSION: "3.13.4" - CUDA_VERSION: "12.9.1" - CUDNN_VERSION_AMD64: "9.10.2.21" - CUDNN_VERSION_ARM64: "9.10.2.21" + CUDA_VERSION: "12.9.0" + CUDNN_VERSION_AMD64: "9.10.1.4" + CUDNN_VERSION_ARM64: "9.10.1.4" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From 4bdbae6d79265857b622a6bacc443536c9edd2e5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 26 Jun 2025 09:29:37 +0200 Subject: [PATCH 166/324] Freeze Python v3.13.4 - CUDA images: Fix 3.13.4.Dockerfile --- cuda/3.13.4.Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cuda/3.13.4.Dockerfile b/cuda/3.13.4.Dockerfile index 7303e61..ac9aa47 100644 --- a/cuda/3.13.4.Dockerfile +++ b/cuda/3.13.4.Dockerfile @@ -102,10 +102,13 @@ LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 @@ -117,10 +120,13 @@ LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} @@ -168,9 +174,11 @@ RUN cpuBlasLib="$(update-alternatives --query \ && apt-get -y install --no-install-recommends \ ${NV_CUDNN_PACKAGE} \ ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ ## Keep apt from auto upgrading the cuDNN packages && apt-mark hold \ ${NV_CUDNN_PACKAGE_NAME} \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ ## Clean up && rm -rf /var/lib/apt/lists/* From 994b5d9408d6c665f232422e2e2e9e6e3b8e8769 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 26 Jun 2025 15:48:38 +0200 Subject: [PATCH 167/324] Update Python to v3.13.5 - CUDA images: Update latest Dockerfile --- cuda/latest.Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 33fdad8..993f3c2 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -99,10 +99,13 @@ LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 @@ -114,10 +117,13 @@ LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} @@ -165,9 +171,11 @@ RUN cpuBlasLib="$(update-alternatives --query \ && apt-get -y install --no-install-recommends \ ${NV_CUDNN_PACKAGE} \ ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ ## Keep apt from auto upgrading the cuDNN packages && apt-mark hold \ ${NV_CUDNN_PACKAGE_NAME} \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ ## Clean up && rm -rf /var/lib/apt/lists/* From 7a81fbe866a136a854a4566fa73eec09dfd7805b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 30 Jun 2025 13:29:50 +0200 Subject: [PATCH 168/324] base: Update Git LFS to v3.7.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 8819b48..5978077 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.2 ARG GIT_VERSION=2.50.0 -ARG GIT_LFS_VERSION=3.6.1 +ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi From 8913c05650fc69bf09601c6f8d28cf12c47fbdd7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 10 Jul 2025 19:46:16 +0200 Subject: [PATCH 169/324] base: Update Git to v2.50.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 5978077..b662d32 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.2 -ARG GIT_VERSION=2.50.0 +ARG GIT_VERSION=2.50.1 ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 From 87a72cfe00d912a0b4837d0c1f7d3b1ca3260922 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 17 Jul 2025 17:36:59 +0200 Subject: [PATCH 170/324] base: Update Neovim to v0.11.3 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index b662d32..928136a 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.2 +ARG NEOVIM_VERSION=0.11.3 ARG GIT_VERSION=2.50.1 ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 From c267c8f3f58e7804055766ccc9e4c3bd23b682aa Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 17 Jul 2025 17:38:00 +0200 Subject: [PATCH 171/324] CUDA images: Update cuDNN to v9.11.0.98 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0e0ac6a..4db4a8c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.5" CUDA_VERSION: "12.9.1" - CUDNN_VERSION_AMD64: "9.10.2.21" - CUDNN_VERSION_ARM64: "9.10.2.21" + CUDNN_VERSION_AMD64: "9.11.0.98" + CUDNN_VERSION_ARM64: "9.11.0.98" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From 3abfc179d86b90a95252e17578839d645eff9dd2 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 21 Jul 2025 22:40:34 +0200 Subject: [PATCH 172/324] ver: Add libncurses-dev - Otherwise: warning: can't use pyrepl: No module named 'msvcrt' --- ver/latest.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 30113bf..0667036 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -51,6 +51,7 @@ RUN apt-get update \ libexpat1-dev \ libjs-sphinxdoc \ liblapack-dev \ + libncurses-dev \ ${BLAS} \ locales \ netbase \ From e9740fa5c8bcee3f9d526960b7f307731c4297d4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 7 Aug 2025 10:03:48 +0200 Subject: [PATCH 173/324] Freeze Python v3.13.5 --- base/3.13.5.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.13.5.Dockerfile | 184 ++++++++++++++++++++++++++++++++++++++++ scipy/3.13.5.Dockerfile | 138 ++++++++++++++++++++++++++++++ ver/3.13.5.Dockerfile | 90 ++++++++++++++++++++ 4 files changed, 521 insertions(+) create mode 100644 base/3.13.5.Dockerfile create mode 100644 cuda/3.13.5.Dockerfile create mode 100644 scipy/3.13.5.Dockerfile create mode 100644 ver/3.13.5.Dockerfile diff --git a/base/3.13.5.Dockerfile b/base/3.13.5.Dockerfile new file mode 100644 index 0000000..1f341a2 --- /dev/null +++ b/base/3.13.5.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.5 +ARG NEOVIM_VERSION=0.11.3 +ARG GIT_VERSION=2.50.1 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.5.Dockerfile b/cuda/3.13.5.Dockerfile new file mode 100644 index 0000000..437974a --- /dev/null +++ b/cuda/3.13.5.Dockerfile @@ -0,0 +1,184 @@ +ARG CUDNN_VERSION=9.11.0.98 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.13.5.Dockerfile b/scipy/3.13.5.Dockerfile new file mode 100644 index 0000000..bca10e6 --- /dev/null +++ b/scipy/3.13.5.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.5 +ARG QUARTO_VERSION=1.7.32 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/08/06/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.13.5.Dockerfile b/ver/3.13.5.Dockerfile new file mode 100644 index 0000000..aafb675 --- /dev/null +++ b/ver/3.13.5.Dockerfile @@ -0,0 +1,90 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.1 +ARG PYTHON_VERSION=3.13.5 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From b1e10df71d0f80dc405bffb8da879f8a7693b34f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 7 Aug 2025 10:29:35 +0200 Subject: [PATCH 174/324] Update Python to v3.13.6 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 4cab66f..721caca 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.9.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.5 \ + --build-arg PYTHON_VERSION=3.13.6 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 51538ef..4686fbf 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.5 \ + --build-arg PYTHON_VERSION=3.13.6 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 3ec5f96..7e5dbd1 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.5" + PYTHON_VERSION: "3.13.6" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 1af82f6..8723024 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.5" + PYTHON_VERSION: "3.13.6" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4db4a8c..dab00f3 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.5" + PYTHON_VERSION: "3.13.6" CUDA_VERSION: "12.9.1" CUDNN_VERSION_AMD64: "9.11.0.98" CUDNN_VERSION_ARM64: "9.11.0.98" From 475d1373410a6024f84a411de78b1429f841ca23 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 7 Aug 2025 18:27:26 +0200 Subject: [PATCH 175/324] scipy: Update Quarto to v1.7.33 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index a8f6561..dd9b5b4 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.7.32 +ARG QUARTO_VERSION=1.7.33 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 8f9d1207f0a6de216b213dd883ae3f18c126fd2f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 16 Aug 2025 06:11:38 +0200 Subject: [PATCH 176/324] Freeze Python v3.13.6 --- base/3.13.6.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.13.6.Dockerfile | 184 ++++++++++++++++++++++++++++++++++++++++ scipy/3.13.6.Dockerfile | 138 ++++++++++++++++++++++++++++++ ver/3.13.6.Dockerfile | 90 ++++++++++++++++++++ 4 files changed, 521 insertions(+) create mode 100644 base/3.13.6.Dockerfile create mode 100644 cuda/3.13.6.Dockerfile create mode 100644 scipy/3.13.6.Dockerfile create mode 100644 ver/3.13.6.Dockerfile diff --git a/base/3.13.6.Dockerfile b/base/3.13.6.Dockerfile new file mode 100644 index 0000000..2ce99b8 --- /dev/null +++ b/base/3.13.6.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.6 +ARG NEOVIM_VERSION=0.11.3 +ARG GIT_VERSION=2.50.1 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.6.Dockerfile b/cuda/3.13.6.Dockerfile new file mode 100644 index 0000000..437974a --- /dev/null +++ b/cuda/3.13.6.Dockerfile @@ -0,0 +1,184 @@ +ARG CUDNN_VERSION=9.11.0.98 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:12.9.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.1-devel-ubuntu22.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.13.6.Dockerfile b/scipy/3.13.6.Dockerfile new file mode 100644 index 0000000..f2bf8bf --- /dev/null +++ b/scipy/3.13.6.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.6 +ARG QUARTO_VERSION=1.7.33 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/08/14/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.13.6.Dockerfile b/ver/3.13.6.Dockerfile new file mode 100644 index 0000000..74afde9 --- /dev/null +++ b/ver/3.13.6.Dockerfile @@ -0,0 +1,90 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=12 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=12.9.1 +ARG PYTHON_VERSION=3.13.6 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 5ae25de36cf3394a35a474d1a2fdf3ccb4d3b88d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 16 Aug 2025 06:49:19 +0200 Subject: [PATCH 177/324] CUDA images: Update cuDNN to v9.11.1.4 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index dab00f3..de9afe9 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.6" CUDA_VERSION: "12.9.1" - CUDNN_VERSION_AMD64: "9.11.0.98" - CUDNN_VERSION_ARM64: "9.11.0.98" + CUDNN_VERSION_AMD64: "9.11.1.4" + CUDNN_VERSION_ARM64: "9.11.1.4" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" TAG_VERSION_MAJ_MIN: "false" From 0ba9aaaa86a426a81e59cb072a34b227c3b6f742 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 16 Aug 2025 06:51:03 +0200 Subject: [PATCH 178/324] Freeze Python v3.13.6 --- cuda/3.13.6.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cuda/3.13.6.Dockerfile b/cuda/3.13.6.Dockerfile index 437974a..6a50569 100644 --- a/cuda/3.13.6.Dockerfile +++ b/cuda/3.13.6.Dockerfile @@ -1,4 +1,4 @@ -ARG CUDNN_VERSION=9.11.0.98 +ARG CUDNN_VERSION=9.11.1.4 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.0 From 7ed2a264d0f549b1cbe5a50db4565abbbb774ed8 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 16 Aug 2025 07:25:20 +0200 Subject: [PATCH 179/324] Update Python to v3.13.7 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 721caca..d188113 100644 --- a/CUDA.md +++ b/CUDA.md @@ -64,7 +64,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.9.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ - --build-arg PYTHON_VERSION=3.13.6 \ + --build-arg PYTHON_VERSION=3.13.7 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 4686fbf..a38fd65 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.6 \ + --build-arg PYTHON_VERSION=3.13.7 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 7e5dbd1..388441b 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.6" + PYTHON_VERSION: "3.13.7" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 8723024..02c1c41 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.6" + PYTHON_VERSION: "3.13.7" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index de9afe9..b34d631 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - PYTHON_VERSION: "3.13.6" + PYTHON_VERSION: "3.13.7" CUDA_VERSION: "12.9.1" CUDNN_VERSION_AMD64: "9.11.1.4" CUDNN_VERSION_ARM64: "9.11.1.4" From b15f3c37cbc3fd720002012deb7e17c339149185 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 21 Aug 2025 19:43:35 +0200 Subject: [PATCH 180/324] base: Update Git to v2.51.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 928136a..c2c6874 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.3 -ARG GIT_VERSION=2.50.1 +ARG GIT_VERSION=2.51.0 ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 From 06b4402270cb0b750b1d8f63e3d8c8df8b9d8918 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 06:50:36 +0200 Subject: [PATCH 181/324] Update base image to debian:13 --- ver/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 0667036..6f6e8e0 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE=debian -ARG BASE_IMAGE_TAG=12 +ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev From 2b8d0a126faaddbacad13dea0070ab65ea190ef9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 06:55:39 +0200 Subject: [PATCH 182/324] CUDA images: Update base image to ubuntu:24.04 --- CUDA.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CUDA.md b/CUDA.md index d188113..668fb66 100644 --- a/CUDA.md +++ b/CUDA.md @@ -60,10 +60,10 @@ latest: ```bash docker build \ --build-arg BASE_IMAGE=ubuntu \ - --build-arg BASE_IMAGE_TAG=22.04 \ + --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=12.9.1 \ - --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu22.04 \ + --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.13.7 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . @@ -88,9 +88,9 @@ version: ```bash docker build \ --build-arg BASE_IMAGE=ubuntu \ - --build-arg BASE_IMAGE_TAG=22.04 \ + --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_IMAGE_SUBTAG=[cudnn8-]runtime-ubuntu22.04 \ + --build-arg CUDA_IMAGE_SUBTAG=[cudnn8-]runtime-ubuntu24.04 \ -t cuda/python/ver:MAJOR.MINOR.PATCH \ -f ver/MAJOR.MINOR.PATCH.Dockerfile . ``` From a946450d696e059f5cbd57030cccebaeaa98a415 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 06:56:31 +0200 Subject: [PATCH 183/324] Update .gitlab-ci.yml --- ver/.gitlab-ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b34d631..d6f14a2 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -9,6 +9,15 @@ TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" +workflow: + rules: + - if: $CI_COMMIT_BRANCH == "freeze-version" && $PYTHON_VERSION =~ /3.12/ + variables: + BASE_IMAGE_TAG: "12" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + variables: + BASE_IMAGE_TAG: "22.04" + .before-script-all: &before-script-all - | if [[ ! -z "$CUDA_IMAGE_SUBTAG" ]]; then From c0b7e9e597ee06e0fd489c4b80e4d30d41c48d81 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 06:58:38 +0200 Subject: [PATCH 184/324] CUDA images: Update CUDA to v13.0.0 --- CUDA.md | 6 +++--- cuda/latest.Dockerfile | 1 - ver/.gitlab-ci.yml | 10 +++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CUDA.md b/CUDA.md index 668fb66..1925cfd 100644 --- a/CUDA.md +++ b/CUDA.md @@ -62,7 +62,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=12.9.1 \ + --build-arg CUDA_VERSION=13.0.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.13.7 \ -t cuda/python/ver \ @@ -74,8 +74,8 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.10.0.56 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=12.0 \ + --build-arg CUDNN_VERSION=9.12.0.46 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 993f3c2..bc596db 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -138,7 +138,6 @@ ARG BUILD_START ENV CUDA_HOME=${CUDA_HOME} \ NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ - LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \ BUILD_DATE=${BUILD_START} RUN cpuBlasLib="$(update-alternatives --query \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d6f14a2..c43c767 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ .env: variables: PYTHON_VERSION: "3.13.7" - CUDA_VERSION: "12.9.1" - CUDNN_VERSION_AMD64: "9.11.1.4" - CUDNN_VERSION_ARM64: "9.11.1.4" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.0" + CUDA_VERSION: "13.0.0" + CUDNN_VERSION_AMD64: "9.12.0.46" + CUDNN_VERSION_ARM64: "9.12.0.46" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From a29783ffa4a22bab00a78258aa5987267f576cd1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 07:01:17 +0200 Subject: [PATCH 185/324] Update CUDA_NOTES.md --- CUDA_NOTES.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CUDA_NOTES.md b/CUDA_NOTES.md index 801fa15..3d9daa3 100644 --- a/CUDA_NOTES.md +++ b/CUDA_NOTES.md @@ -4,9 +4,6 @@ The CUDA and OS versions are selected as follows: * CUDA: The lastest version that has image flavour `devel` including cuDNN available. -* OS: The latest version that has TensortRT libraries for `amd64` available. - :information_source: It is taking quite a long time for these to be available - for `arm64`. ## Tweaks From 73c9ca0e0dc256b0aba8ef37c1965005a7c1e43d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 07:09:44 +0200 Subject: [PATCH 186/324] Fix .gitlab-ci.yml --- ver/.gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index c43c767..e51c0dc 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -17,6 +17,7 @@ workflow: - if: $CI_COMMIT_BRANCH == "freeze-version" && $BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "22.04" + - if: $CI_COMMIT_BRANCH .before-script-all: &before-script-all - | From 71b8cfbbe00ed12e675f5e374e12846bd28ae98c Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 12:43:41 +0200 Subject: [PATCH 187/324] Update CUDA.md --- CUDA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index 1925cfd..6e26d9b 100644 --- a/CUDA.md +++ b/CUDA.md @@ -90,7 +90,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_IMAGE_SUBTAG=[cudnn8-]runtime-ubuntu24.04 \ + --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ -t cuda/python/ver:MAJOR.MINOR.PATCH \ -f ver/MAJOR.MINOR.PATCH.Dockerfile . ``` From 8782e269c59b218b2b3b217797c440d503bf5044 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 12:45:28 +0200 Subject: [PATCH 188/324] ver: Update latest Dockerfile - Provide fully functional Python installation --- ver/latest.Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 6f6e8e0..4a3a0a5 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -49,10 +49,13 @@ RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ libjs-sphinxdoc \ liblapack-dev \ libncurses-dev \ ${BLAS} \ + libreadline-dev \ locales \ netbase \ pkg-config \ From 25df248d872fc9e6972cfe8bd6a27980d3152f0a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 23 Aug 2025 15:16:23 +0200 Subject: [PATCH 189/324] base: Update base image to debian:13 --- base/.gitlab-ci.yml | 10 ++++++++++ base/latest.Dockerfile | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 388441b..8a474e8 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -4,6 +4,16 @@ TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" +workflow: + rules: + - if: $CI_COMMIT_BRANCH == "freeze-version" && $PYTHON_VERSION =~ /3.12/ + variables: + BASE_IMAGE_TAG: "12" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + variables: + BASE_IMAGE_TAG: "22.04" + - if: $CI_COMMIT_BRANCH + .before-script-build: &before-script-build - | if [[ ! -z "$CI_BUILD_PLATFORMS" ]]; then diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index c2c6874..cd17e53 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -1,5 +1,5 @@ ARG BASE_IMAGE=debian -ARG BASE_IMAGE_TAG=12 +ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.3 From ea48f1eae3a94ff7853743c5cd1c35882a4db84e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 28 Aug 2025 19:19:51 +0200 Subject: [PATCH 190/324] Update .gitlab-ci.yml --- base/.gitlab-ci.yml | 9 +++++++-- ver/.gitlab-ci.yml | 15 +++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 8a474e8..ec1f464 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -6,11 +6,16 @@ workflow: rules: - - if: $CI_COMMIT_BRANCH == "freeze-version" && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "main" && $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" - - if: $CI_COMMIT_BRANCH == "freeze-version" && $BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" - if: $CI_COMMIT_BRANCH diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index e51c0dc..f6b67cb 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -11,12 +11,23 @@ workflow: rules: - - if: $CI_COMMIT_BRANCH == "freeze-version" && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "main" && $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" - - if: $CI_COMMIT_BRANCH == "freeze-version" && $BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" + CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH .before-script-all: &before-script-all From 5bc0df661b40be555ab9dcf5c92402d6dacc426a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 31 Aug 2025 15:45:01 +0200 Subject: [PATCH 191/324] scipy: Update Quarto to v1.7.34 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index dd9b5b4..587b180 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.7.33 +ARG QUARTO_VERSION=1.7.34 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 8c1e6e74ab5fcbeda6a0ad21e09e18b85c18b291 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 1 Sep 2025 09:22:39 +0200 Subject: [PATCH 192/324] base: Update Neovim to v0.11.4 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index cd17e53..216a4a2 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.3 +ARG NEOVIM_VERSION=0.11.4 ARG GIT_VERSION=2.51.0 ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 From eac882e81fdb47188b012d94c11a5805476502b6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 8 Sep 2025 16:00:07 +0200 Subject: [PATCH 193/324] Update CUDA.md --- CUDA.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index 6e26d9b..29dd5ed 100644 --- a/CUDA.md +++ b/CUDA.md @@ -23,7 +23,6 @@ Otherwise the same as the [Python docker stack](README.md#python-docker-stack) p [CUDA math libraries](https://developer.nvidia.com/gpu-accelerated-libraries), [NCCL](https://developer.nvidia.com/nccl) and [cuDNN](https://developer.nvidia.com/cudnn) -* TensortRT and TensorRT plugin libraries ## Table of Contents From 9f495f8125fc9ada435499fdbf86c602ce4bc389 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 8 Sep 2025 16:00:33 +0200 Subject: [PATCH 194/324] Update CUDA_NOTES.md --- CUDA_NOTES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUDA_NOTES.md b/CUDA_NOTES.md index 3d9daa3..f0fb39b 100644 --- a/CUDA_NOTES.md +++ b/CUDA_NOTES.md @@ -1,6 +1,6 @@ # Notes on CUDA -The CUDA and OS versions are selected as follows: +The CUDA version is selected as follows: * CUDA: The lastest version that has image flavour `devel` including cuDNN available. From d25c02cff42659814f0231fa3dd05509f68b9fd1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 11 Sep 2025 22:09:13 +0200 Subject: [PATCH 195/324] CUDA images: Update CUDA to v13.0.1 - CUDA images: Update cuDNN to v9.13.0.50 --- CUDA.md | 4 ++-- ver/.gitlab-ci.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 29dd5ed..9a64df9 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.0.0 \ + --build-arg CUDA_VERSION=13.0.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.13.7 \ -t cuda/python/ver \ @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.12.0.46 \ + --build-arg CUDNN_VERSION=9.13.0.50 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index f6b67cb..aea0a11 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,9 +1,9 @@ .env: variables: PYTHON_VERSION: "3.13.7" - CUDA_VERSION: "13.0.0" - CUDNN_VERSION_AMD64: "9.12.0.46" - CUDNN_VERSION_ARM64: "9.12.0.46" + CUDA_VERSION: "13.0.1" + CUDNN_VERSION_AMD64: "9.13.0.50" + CUDNN_VERSION_ARM64: "9.13.0.50" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From de7cf9b7d2d435416796a8daab0b67e00f1fa951 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 14 Sep 2025 10:32:45 +0200 Subject: [PATCH 196/324] scipy: Update Quarto to v1.8.24 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 587b180..9e5d2da 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.7.34 +ARG QUARTO_VERSION=1.8.24 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 32cb08d7039f6b4fe0be7ac15da353554ee77f74 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 2 Oct 2025 09:46:06 +0200 Subject: [PATCH 197/324] scipy: Update Quarto to v1.8.25 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 9e5d2da..b9e0ba2 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.8.24 +ARG QUARTO_VERSION=1.8.25 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 4d2fadc85e5332771f2de80cc873b4b6602f7efc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 2 Oct 2025 09:57:22 +0200 Subject: [PATCH 198/324] CUDA images: Update cuDNN to v9.13.1.26 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index aea0a11..0cca7be 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -2,8 +2,8 @@ variables: PYTHON_VERSION: "3.13.7" CUDA_VERSION: "13.0.1" - CUDNN_VERSION_AMD64: "9.13.0.50" - CUDNN_VERSION_ARM64: "9.13.0.50" + CUDNN_VERSION_AMD64: "9.13.1.26" + CUDNN_VERSION_ARM64: "9.13.1.26" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From 46edda2e6efbc9fd1cf45358b4ae724403d1d8d3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 8 Oct 2025 07:08:31 +0200 Subject: [PATCH 199/324] Freeze Python v3.13.7 --- base/3.13.7.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.13.7.Dockerfile | 183 ++++++++++++++++++++++++++++++++++++++++ scipy/3.13.7.Dockerfile | 138 ++++++++++++++++++++++++++++++ ver/3.13.7.Dockerfile | 93 ++++++++++++++++++++ 4 files changed, 523 insertions(+) create mode 100644 base/3.13.7.Dockerfile create mode 100644 cuda/3.13.7.Dockerfile create mode 100644 scipy/3.13.7.Dockerfile create mode 100644 ver/3.13.7.Dockerfile diff --git a/base/3.13.7.Dockerfile b/base/3.13.7.Dockerfile new file mode 100644 index 0000000..67b0bff --- /dev/null +++ b/base/3.13.7.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.7 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.7.Dockerfile b/cuda/3.13.7.Dockerfile new file mode 100644 index 0000000..f2b35b3 --- /dev/null +++ b/cuda/3.13.7.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.13.1.26 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.13.7.Dockerfile b/scipy/3.13.7.Dockerfile new file mode 100644 index 0000000..59d2fb8 --- /dev/null +++ b/scipy/3.13.7.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.7 +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/10/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.13.7.Dockerfile b/ver/3.13.7.Dockerfile new file mode 100644 index 0000000..b177af1 --- /dev/null +++ b/ver/3.13.7.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.1 +ARG PYTHON_VERSION=3.13.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 3ba90053b426d9a079135c533410b896e6d4e4f9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 8 Oct 2025 07:51:13 +0200 Subject: [PATCH 200/324] Freeze Python v3.13.7 --- base/.gitlab-ci.yml | 8 ++++---- ver/.gitlab-ci.yml | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ec1f464..416a4ea 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -6,10 +6,6 @@ workflow: rules: - - if: $CI_COMMIT_BRANCH == "main" && $CUDA_BASE_IMAGE == "ubuntu" - variables: - BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" @@ -17,6 +13,10 @@ workflow: variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0cca7be..cbd1261 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -11,13 +11,6 @@ workflow: rules: - - if: $CI_COMMIT_BRANCH == "main" && $CUDA_BASE_IMAGE == "ubuntu" - variables: - BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" - CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" - CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" @@ -28,6 +21,13 @@ workflow: CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH .before-script-all: &before-script-all From ca4e15ba1e9784324e8b24ab6023f5e336239b4b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 8 Oct 2025 08:27:08 +0200 Subject: [PATCH 201/324] Release Python v3.13.8 --- base/.gitlab-ci.yml | 4 +- base/3.13.8.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.13.8.Dockerfile | 183 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.8.Dockerfile | 138 ++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.8.Dockerfile | 93 ++++++++++++++++++++ 7 files changed, 529 insertions(+), 6 deletions(-) create mode 100644 base/3.13.8.Dockerfile create mode 100644 cuda/3.13.8.Dockerfile create mode 100644 scipy/3.13.8.Dockerfile create mode 100644 ver/3.13.8.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 416a4ea..278adb0 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.13.7" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.8" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.8.Dockerfile b/base/3.13.8.Dockerfile new file mode 100644 index 0000000..338bdf2 --- /dev/null +++ b/base/3.13.8.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.8 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.8.Dockerfile b/cuda/3.13.8.Dockerfile new file mode 100644 index 0000000..f2b35b3 --- /dev/null +++ b/cuda/3.13.8.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.13.1.26 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 02c1c41..3611793 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.13.7" + PYTHON_VERSION: "3.13.8" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.8.Dockerfile b/scipy/3.13.8.Dockerfile new file mode 100644 index 0000000..c1cc217 --- /dev/null +++ b/scipy/3.13.8.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.8 +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index cbd1261..da8b135 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,12 +1,12 @@ .env: variables: - PYTHON_VERSION: "3.13.7" + PYTHON_VERSION: "3.13.8" CUDA_VERSION: "13.0.1" CUDNN_VERSION_AMD64: "9.13.1.26" CUDNN_VERSION_ARM64: "9.13.1.26" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.8.Dockerfile b/ver/3.13.8.Dockerfile new file mode 100644 index 0000000..fc468ea --- /dev/null +++ b/ver/3.13.8.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.1 +ARG PYTHON_VERSION=3.13.8 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 747696f352ef2203350758120cd1759ad3556e98 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 8 Oct 2025 09:24:19 +0200 Subject: [PATCH 202/324] Update Python to v3.14.0 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 4 ++-- scipy/.gitlab-ci.yml | 4 ++-- ver/.gitlab-ci.yml | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CUDA.md b/CUDA.md index 9a64df9..31ea00a 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.0.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.13.7 \ + --build-arg PYTHON_VERSION=3.14.0 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index a38fd65..e5db0d0 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.13.7 \ + --build-arg PYTHON_VERSION=3.14.0 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 278adb0..6295956 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.13.8" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 3611793..281852f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.13.8" + PYTHON_VERSION: "3.14.0" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index da8b135..fe6545a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,12 +1,12 @@ .env: variables: - PYTHON_VERSION: "3.13.8" + PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.1" CUDNN_VERSION_AMD64: "9.13.1.26" CUDNN_VERSION_ARM64: "9.13.1.26" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: From cd28389b4531398ac25373db50e05065e2f8c18e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 8 Oct 2025 10:58:38 +0200 Subject: [PATCH 203/324] scipy: Temporarily remove numba --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index b9e0ba2..d929299 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -106,7 +106,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ #ipympl \ #ipywidgets \ matplotlib \ - numba \ + #numba \ numexpr \ numpy \ pandas \ From 9e29ce20afe43b11cd6e6ecdda2425418066e745 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 10 Oct 2025 09:46:06 +0200 Subject: [PATCH 204/324] Freeze Python v3.12.11 --- base/.gitlab-ci.yml | 4 ++-- base/3.12.11.Dockerfile | 6 +++--- cuda/3.12.11.Dockerfile | 6 +++--- scipy/.gitlab-ci.yml | 4 ++-- scipy/3.12.11.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 18 +++++++++++------- ver/3.12.11.Dockerfile | 2 +- 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 6295956..bd35fc9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,7 +1,7 @@ .env: variables: - PYTHON_VERSION: "3.14.0" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.12.11" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.12.11.Dockerfile b/base/3.12.11.Dockerfile index 95ee376..768f688 100644 --- a/base/3.12.11.Dockerfile +++ b/base/3.12.11.Dockerfile @@ -2,9 +2,9 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=12 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.12.11 -ARG NEOVIM_VERSION=0.11.2 -ARG GIT_VERSION=2.49.0 -ARG GIT_LFS_VERSION=3.6.1 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi diff --git a/cuda/3.12.11.Dockerfile b/cuda/3.12.11.Dockerfile index 88c1918..02444b7 100644 --- a/cuda/3.12.11.Dockerfile +++ b/cuda/3.12.11.Dockerfile @@ -6,15 +6,15 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG LIBNVINFER_VERSION -ARG LIBNVINFER_VERSION_AMD64=10.11.0.33 +ARG LIBNVINFER_VERSION_AMD64=10.13.3.9 ARG LIBNVINFER_VERSION_ARM64=10.3.0.26 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.9 ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5 ## CUDA_IMAGE -## ├── nvidia/cuda:12.9.0-runtime-ubuntu22.04 -## └── nvidia/cuda:12.9.0-devel-ubuntu22.04 +## ├── nvidia/cuda:12.9.1-runtime-ubuntu22.04 +## └── nvidia/cuda:12.9.1-devel-ubuntu22.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 281852f..0c4c8da 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,8 +1,8 @@ .env: variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.12.11" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.12.11.Dockerfile b/scipy/3.12.11.Dockerfile index 070a512..343ebc3 100644 --- a/scipy/3.12.11.Dockerfile +++ b/scipy/3.12.11.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.12.11 -ARG QUARTO_VERSION=1.7.31 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/10/09/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index fe6545a..f92a5ee 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,12 +1,16 @@ .env: variables: - PYTHON_VERSION: "3.14.0" - CUDA_VERSION: "13.0.1" - CUDNN_VERSION_AMD64: "9.13.1.26" - CUDNN_VERSION_ARM64: "9.13.1.26" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.12.11" + CUDA_VERSION: "12.9.1" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.13.3.9" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.12.11.Dockerfile b/ver/3.12.11.Dockerfile index eddba10..b747549 100644 --- a/ver/3.12.11.Dockerfile +++ b/ver/3.12.11.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=12 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=12.9.0 +ARG CUDA_VERSION=12.9.1 ARG PYTHON_VERSION=3.12.11 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From b1eb85883366ba6f0ce1a9d077646431a5b10789 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 10 Oct 2025 09:53:33 +0200 Subject: [PATCH 205/324] Freeze Python v3.12.11 --- base/.gitlab-ci.yml | 8 ++++---- ver/.gitlab-ci.yml | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index bd35fc9..33309a8 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -6,6 +6,10 @@ workflow: rules: + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" @@ -13,10 +17,6 @@ workflow: variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" - - if: $CUDA_BASE_IMAGE == "ubuntu" - variables: - BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index f92a5ee..fcee599 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -15,20 +15,20 @@ workflow: rules: - - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ - variables: - BASE_IMAGE_TAG: "12" - - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + - if: $CUDA_BASE_IMAGE == "ubuntu" variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "22.04" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - - if: $CUDA_BASE_IMAGE == "ubuntu" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ + variables: + BASE_IMAGE_TAG: "12" + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + BASE_IMAGE_TAG: "22.04" CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" From ea8faac763d3628de1203b12348e0c17207160d3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 10 Oct 2025 10:04:26 +0200 Subject: [PATCH 206/324] Revert "Freeze Python v3.12.11" This reverts commit b1eb85883366ba6f0ce1a9d077646431a5b10789. --- base/.gitlab-ci.yml | 8 ++++---- ver/.gitlab-ci.yml | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 33309a8..bd35fc9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -6,10 +6,6 @@ workflow: rules: - - if: $CUDA_BASE_IMAGE == "ubuntu" - variables: - BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" @@ -17,6 +13,10 @@ workflow: variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index fcee599..f92a5ee 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -15,13 +15,6 @@ workflow: rules: - - if: $CUDA_BASE_IMAGE == "ubuntu" - variables: - BASE_IMAGE: "$CUDA_BASE_IMAGE" - BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" - CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" - CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" - CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ variables: BASE_IMAGE_TAG: "12" @@ -32,6 +25,13 @@ workflow: CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" + - if: $CUDA_BASE_IMAGE == "ubuntu" + variables: + BASE_IMAGE: "$CUDA_BASE_IMAGE" + BASE_IMAGE_TAG: "$CUDA_BASE_IMAGE_TAG" + CUDA_IMAGE_BASE_SUBTAG: "base-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_DEVEL_SUBTAG: "devel-$BASE_IMAGE$BASE_IMAGE_TAG" + CUDA_IMAGE_SUBTAG: "runtime-$BASE_IMAGE$BASE_IMAGE_TAG" - if: $CI_COMMIT_BRANCH .before-script-all: &before-script-all From 84d69efd290a6ba4d97f4a79c322f85c7a257539 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 10 Oct 2025 10:32:53 +0200 Subject: [PATCH 207/324] Freeze Python v3.12.11 --- base/.gitlab-ci.yml | 11 ++++------- scipy/.gitlab-ci.yml | 13 +++++-------- ver/.gitlab-ci.yml | 29 +++++++++++++---------------- 3 files changed, 22 insertions(+), 31 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index bd35fc9..5996fb7 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,8 +1,7 @@ -.env: - variables: - PYTHON_VERSION: "3.12.11" - TAG_VERSION_MAJ_MIN: "true" - TAG_VERSION_MAJ: "false" +variables: + PYTHON_VERSION: "3.12.11" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" workflow: rules: @@ -45,7 +44,6 @@ workflow: .build: image: glcr.b-data.ch/docker/docker:dind stage: build - extends: .env services: - name: glcr.b-data.ch/docker/docker:dind alias: docker @@ -60,7 +58,6 @@ workflow: .post: image: glcr.b-data.ch/docker/docker:dind stage: .post - extends: .env build:latest-linux-amd64: extends: .build diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0c4c8da..5be9b92 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,9 +1,8 @@ -.env: - variables: - PYTHON_VERSION: "3.12.11" - CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" - TAG_VERSION_MAJ: "false" +variables: + PYTHON_VERSION: "3.12.11" + CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build - | @@ -31,7 +30,6 @@ .build: image: glcr.b-data.ch/docker/docker:dind stage: build - extends: .env services: - name: glcr.b-data.ch/docker/docker:dind alias: docker @@ -46,7 +44,6 @@ .post: image: glcr.b-data.ch/docker/docker:dind stage: .post - extends: .env build:latest-linux-amd64: extends: .build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index f92a5ee..bec744f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,17 +1,16 @@ -.env: - variables: - PYTHON_VERSION: "3.12.11" - CUDA_VERSION: "12.9.1" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.13.3.9" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "true" - TAG_VERSION_MAJ: "false" +variables: + PYTHON_VERSION: "3.12.11" + CUDA_VERSION: "12.9.1" + CUDNN_VERSION_AMD64: "8.9.7.29" + CUDNN_VERSION_ARM64: "8.9.7.29" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" + LIBNVINFER_VERSION_AMD64: "10.13.3.9" + LIBNVINFER_VERSION_ARM64: "10.3.0.26" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" + LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" + TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ: "false" workflow: rules: @@ -69,7 +68,6 @@ workflow: .build: image: glcr.b-data.ch/docker/docker:dind stage: build - extends: .env services: - name: glcr.b-data.ch/docker/docker:dind alias: docker @@ -85,7 +83,6 @@ workflow: .post: image: glcr.b-data.ch/docker/docker:dind stage: .post - extends: .env before_script: - *before-script-all From 4d457dc952c22384ed8c7cb5c9dcc25a9b3fc029 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 10 Oct 2025 16:49:34 +0200 Subject: [PATCH 208/324] Update .gitlab-ci.yml --- base/.gitlab-ci.yml | 4 ++-- scipy/.gitlab-ci.yml | 4 ++-- ver/.gitlab-ci.yml | 18 +++++++----------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 5996fb7..2e399d0 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.12.11" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 5be9b92..aaebd82 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.12.11" + PYTHON_VERSION: "3.14.0" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index bec744f..4a9130e 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,15 +1,11 @@ variables: - PYTHON_VERSION: "3.12.11" - CUDA_VERSION: "12.9.1" - CUDNN_VERSION_AMD64: "8.9.7.29" - CUDNN_VERSION_ARM64: "8.9.7.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "12.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "12.2" - LIBNVINFER_VERSION_AMD64: "10.13.3.9" - LIBNVINFER_VERSION_ARM64: "10.3.0.26" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.9" - LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.0" + CUDA_VERSION: "13.0.1" + CUDNN_VERSION_AMD64: "9.13.1.26" + CUDNN_VERSION_ARM64: "9.13.1.26" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: From cfc0ddd4078f9f07a3ed3d26e4ed6672285eb366 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 15 Oct 2025 18:56:54 +0200 Subject: [PATCH 209/324] CUDA images: Update cuDNN to v9.14.0.64 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4a9130e..1bca6fc 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.1" - CUDNN_VERSION_AMD64: "9.13.1.26" - CUDNN_VERSION_ARM64: "9.13.1.26" + CUDNN_VERSION_AMD64: "9.14.0.64" + CUDNN_VERSION_ARM64: "9.14.0.64" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From 7e66016232f524c88e6aa61b98fdb57e02d974b6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 15 Oct 2025 19:14:03 +0200 Subject: [PATCH 210/324] Freeze Python v3.13.8 --- base/.gitlab-ci.yml | 2 +- cuda/3.13.8.Dockerfile | 2 +- scipy/.gitlab-ci.yml | 2 +- scipy/3.13.8.Dockerfile | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2e399d0..ee7a091 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.13.8" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/cuda/3.13.8.Dockerfile b/cuda/3.13.8.Dockerfile index f2b35b3..e55571e 100644 --- a/cuda/3.13.8.Dockerfile +++ b/cuda/3.13.8.Dockerfile @@ -1,4 +1,4 @@ -ARG CUDNN_VERSION=9.13.1.26 +ARG CUDNN_VERSION=9.14.0.64 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index aaebd82..de254fe 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.13.8" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.8.Dockerfile b/scipy/3.13.8.Dockerfile index c1cc217..f2cd331 100644 --- a/scipy/3.13.8.Dockerfile +++ b/scipy/3.13.8.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.8 ARG QUARTO_VERSION=1.8.25 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/10/14/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1bca6fc..495bb37 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.13.8" CUDA_VERSION: "13.0.1" CUDNN_VERSION_AMD64: "9.14.0.64" CUDNN_VERSION_ARM64: "9.14.0.64" From 990ed66020a91637e696d99224f09f2eddd8df70 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 15 Oct 2025 20:34:50 +0200 Subject: [PATCH 211/324] Release Python v3.13.9 --- base/.gitlab-ci.yml | 4 +- base/3.13.9.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.13.9.Dockerfile | 183 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.9.Dockerfile | 138 ++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.9.Dockerfile | 93 ++++++++++++++++++++ 7 files changed, 529 insertions(+), 6 deletions(-) create mode 100644 base/3.13.9.Dockerfile create mode 100644 cuda/3.13.9.Dockerfile create mode 100644 scipy/3.13.9.Dockerfile create mode 100644 ver/3.13.9.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ee7a091..3f94e6d 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.8" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.9" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.9.Dockerfile b/base/3.13.9.Dockerfile new file mode 100644 index 0000000..f64094c --- /dev/null +++ b/base/3.13.9.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.9 +ARG NEOVIM_VERSION=0.11.4 +ARG GIT_VERSION=2.51.0 +ARG GIT_LFS_VERSION=3.7.0 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.9.Dockerfile b/cuda/3.13.9.Dockerfile new file mode 100644 index 0000000..e55571e --- /dev/null +++ b/cuda/3.13.9.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.14.0.64 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index de254fe..cc4e157 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.8" + PYTHON_VERSION: "3.13.9" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.9.Dockerfile b/scipy/3.13.9.Dockerfile new file mode 100644 index 0000000..5fafb29 --- /dev/null +++ b/scipy/3.13.9.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.9 +ARG QUARTO_VERSION=1.8.25 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 495bb37..ff8a453 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ variables: - PYTHON_VERSION: "3.13.8" + PYTHON_VERSION: "3.13.9" CUDA_VERSION: "13.0.1" CUDNN_VERSION_AMD64: "9.14.0.64" CUDNN_VERSION_ARM64: "9.14.0.64" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.9.Dockerfile b/ver/3.13.9.Dockerfile new file mode 100644 index 0000000..085a6f7 --- /dev/null +++ b/ver/3.13.9.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.1 +ARG PYTHON_VERSION=3.13.9 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 19dd6e0b6144e814e855fcaf3d4527e45c81337a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 16 Oct 2025 06:45:05 +0200 Subject: [PATCH 212/324] Update .gitlab-ci.yml --- base/.gitlab-ci.yml | 4 ++-- scipy/.gitlab-ci.yml | 4 ++-- ver/.gitlab-ci.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 3f94e6d..2e399d0 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.9" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index cc4e157..aaebd82 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.9" + PYTHON_VERSION: "3.14.0" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index ff8a453..1bca6fc 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ variables: - PYTHON_VERSION: "3.13.9" + PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.1" CUDNN_VERSION_AMD64: "9.14.0.64" CUDNN_VERSION_ARM64: "9.14.0.64" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: From fb6cfb6ee62cc1bb64f64d7ba84ea7549cfa99b4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 16 Oct 2025 14:52:56 +0200 Subject: [PATCH 213/324] base: Update Git to v2.51.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 216a4a2..842a69d 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.4 -ARG GIT_VERSION=2.51.0 +ARG GIT_VERSION=2.51.1 ARG GIT_LFS_VERSION=3.7.0 ARG PANDOC_VERSION=3.6.3 From 377b6d03f8eb8b7f85637dec12752003b15ddfff Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 19 Oct 2025 11:01:09 +0200 Subject: [PATCH 214/324] scipy: Temporarily switch CTAN repo --- scipy/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index aaebd82..2cfdae5 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: PYTHON_VERSION: "3.14.0" - CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" + CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From dab947304b4c2a1937b5f07f2f99e287cb0ff75b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 19 Oct 2025 12:24:31 +0200 Subject: [PATCH 215/324] base: Update Git LFS to v3.7.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 842a69d..cd70afb 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.4 ARG GIT_VERSION=2.51.1 -ARG GIT_LFS_VERSION=3.7.0 +ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi From 84833ae90ea691de62d6f7c0befbfc2710e4ec3f Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 28 Oct 2025 19:40:51 +0100 Subject: [PATCH 216/324] base: Update Git to v2.51.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index cd70afb..43e9553 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.4 -ARG GIT_VERSION=2.51.1 +ARG GIT_VERSION=2.51.2 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From ec729f0e71f82120a70fc11ffbc2bf084ef2dd4d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 29 Oct 2025 07:35:15 +0100 Subject: [PATCH 217/324] Revert "base: Update Git to v2.51.2" This reverts commit 84833ae90ea691de62d6f7c0befbfc2710e4ec3f. --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 43e9553..cd70afb 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.4 -ARG GIT_VERSION=2.51.2 +ARG GIT_VERSION=2.51.1 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From 92a575621427fe65331781d45ab544a062d7ee83 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 29 Oct 2025 08:18:11 +0100 Subject: [PATCH 218/324] Reapply "base: Update Git to v2.51.2" This reverts commit ec729f0e71f82120a70fc11ffbc2bf084ef2dd4d. --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index cd70afb..43e9553 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.4 -ARG GIT_VERSION=2.51.1 +ARG GIT_VERSION=2.51.2 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From 2cb6e309c8128722c30072867c99709327dc96a3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 29 Oct 2025 13:42:30 +0100 Subject: [PATCH 219/324] scipy: Pin Python package tables to v3.10.1 - Add package libblosc2-dev - https://github.com/PyTables/PyTables/issues/1262 --- scipy/latest.Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index d929299..ab04c92 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -29,6 +29,8 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ librsvg2-bin \ qpdf \ texinfo \ + ## Python: For tables wheels + libblosc2-dev \ ## Python: For h5py wheels (arm64) libhdf5-dev \ ## Install quarto @@ -119,7 +121,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ sqlalchemy \ statsmodels \ sympy \ - tables \ + tables==3.10.1 \ #widgetsnbextension \ xlrd \ ## Install facets From 3b4bcef453c4cb2b0f0eb3cba6ae91aa367ccdd6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 3 Nov 2025 09:11:09 +0100 Subject: [PATCH 220/324] base: Update Neovim to v0.11.5 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 43e9553..49b707b 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.4 +ARG NEOVIM_VERSION=0.11.5 ARG GIT_VERSION=2.51.2 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From 8e3747056aaa80d4e81e50e5296cbe6e7806418d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 5 Nov 2025 09:41:28 +0100 Subject: [PATCH 221/324] CUDA images: Update cuDNN to v9.15.0.58 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1bca6fc..b634154 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.1" - CUDNN_VERSION_AMD64: "9.14.0.64" - CUDNN_VERSION_ARM64: "9.14.0.64" + CUDNN_VERSION_AMD64: "9.15.0.58" + CUDNN_VERSION_ARM64: "9.15.0.58" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From edb232759b6e412a96f0e55969b515547a051065 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 6 Nov 2025 05:56:18 +0100 Subject: [PATCH 222/324] scipy: Update latest Dockerfile - https://github.com/jupyter/docker-stacks/issues/2346 --- scipy/latest.Dockerfile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index ab04c92..1ac0403 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -124,11 +124,6 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ tables==3.10.1 \ #widgetsnbextension \ xlrd \ - ## Install facets - #&& cd /tmp \ - #&& git clone https://github.com/PAIR-code/facets.git \ - #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ - #&& cd / \ ## Clean up && rm -rf /tmp/* \ && rm -rf /var/lib/apt/lists/* \ From 59f7bd7eaf30642873abcf3adfc119f74cb14b53 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 6 Nov 2025 07:00:19 +0100 Subject: [PATCH 223/324] CUDA images: Update CUDA to v13.0.2 --- CUDA.md | 4 ++-- ver/.gitlab-ci.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 31ea00a..29fcecf 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.0.1 \ + --build-arg CUDA_VERSION=13.0.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.0 \ -t cuda/python/ver \ @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.13.0.50 \ + --build-arg CUDNN_VERSION=9.15.0.58 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b634154..1314553 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: PYTHON_VERSION: "3.14.0" - CUDA_VERSION: "13.0.1" + CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.15.0.58" CUDNN_VERSION_ARM64: "9.15.0.58" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" From 89f7a402602f091d70045a48f3af4109f84e4db7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 13 Nov 2025 21:06:14 +0100 Subject: [PATCH 224/324] CUDA images: Update cuDNN to v9.15.1.9 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 29fcecf..44a8147 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.15.0.58 \ + --build-arg CUDNN_VERSION=9.15.1.9 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1314553..930b135 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.2" - CUDNN_VERSION_AMD64: "9.15.0.58" - CUDNN_VERSION_ARM64: "9.15.0.58" + CUDNN_VERSION_AMD64: "9.15.1.9" + CUDNN_VERSION_ARM64: "9.15.1.9" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From b9835d0f26b956c2f2f3b1852c98df509cabfc87 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 13 Nov 2025 21:06:48 +0100 Subject: [PATCH 225/324] scipy: Update Quarto to v1.8.26 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 1ac0403..8102fd5 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.8.25 +ARG QUARTO_VERSION=1.8.26 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From efee3ab1638555b843d69ab0ae50772e1d6bf795 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 19 Nov 2025 20:56:07 +0100 Subject: [PATCH 226/324] base: Update Git to v2.52.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 49b707b..bd3847d 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.5 -ARG GIT_VERSION=2.51.2 +ARG GIT_VERSION=2.52.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From cc401e0a07bab9a78063bdf066cfbc17b6526174 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 19 Nov 2025 21:03:07 +0100 Subject: [PATCH 227/324] CUDA images: Update cuDNN to v9.16.0.29 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 44a8147..dea62d5 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.15.1.9 \ + --build-arg CUDNN_VERSION=9.16.0.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 930b135..763e470 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.2" - CUDNN_VERSION_AMD64: "9.15.1.9" - CUDNN_VERSION_ARM64: "9.15.1.9" + CUDNN_VERSION_AMD64: "9.16.0.29" + CUDNN_VERSION_ARM64: "9.16.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From 91ef8b4cb28f6bfc24a3dd026a42378000a02932 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 3 Dec 2025 06:24:36 +0100 Subject: [PATCH 228/324] Freeze Python v3.13.9 --- base/.gitlab-ci.yml | 2 +- base/3.13.9.Dockerfile | 6 +++--- cuda/3.13.9.Dockerfile | 6 +++--- scipy/.gitlab-ci.yml | 2 +- scipy/3.13.9.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 2 +- ver/3.13.9.Dockerfile | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2e399d0..2c3e90b 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.13.9" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.13.9.Dockerfile b/base/3.13.9.Dockerfile index f64094c..0b27002 100644 --- a/base/3.13.9.Dockerfile +++ b/base/3.13.9.Dockerfile @@ -2,9 +2,9 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.13.9 -ARG NEOVIM_VERSION=0.11.4 -ARG GIT_VERSION=2.51.0 -ARG GIT_LFS_VERSION=3.7.0 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi diff --git a/cuda/3.13.9.Dockerfile b/cuda/3.13.9.Dockerfile index e55571e..e4ad35b 100644 --- a/cuda/3.13.9.Dockerfile +++ b/cuda/3.13.9.Dockerfile @@ -1,4 +1,4 @@ -ARG CUDNN_VERSION=9.14.0.64 +ARG CUDNN_VERSION=9.16.0.29 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 @@ -6,8 +6,8 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} ## CUDA_IMAGE -## ├── nvidia/cuda:13.0.1-runtime-ubuntu24.04 -## └── nvidia/cuda:13.0.1-devel-ubuntu24.04 +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 2cfdae5..a5d1f58 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.13.9" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.9.Dockerfile b/scipy/3.13.9.Dockerfile index 5fafb29..a4817a8 100644 --- a/scipy/3.13.9.Dockerfile +++ b/scipy/3.13.9.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.9 -ARG QUARTO_VERSION=1.8.25 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/02/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 763e470..3fe4a20 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.13.9" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.16.0.29" CUDNN_VERSION_ARM64: "9.16.0.29" diff --git a/ver/3.13.9.Dockerfile b/ver/3.13.9.Dockerfile index 085a6f7..5b51091 100644 --- a/ver/3.13.9.Dockerfile +++ b/ver/3.13.9.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=13.0.1 +ARG CUDA_VERSION=13.0.2 ARG PYTHON_VERSION=3.13.9 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From dee4c3410af311a10b125827d212a73c772e4118 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 3 Dec 2025 06:54:48 +0100 Subject: [PATCH 229/324] Release Python v3.13.10 --- base/.gitlab-ci.yml | 4 +- base/3.13.10.Dockerfile | 109 +++++++++++++++++++++++ cuda/3.13.10.Dockerfile | 183 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.10.Dockerfile | 138 +++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.10.Dockerfile | 93 ++++++++++++++++++++ 7 files changed, 529 insertions(+), 6 deletions(-) create mode 100644 base/3.13.10.Dockerfile create mode 100644 cuda/3.13.10.Dockerfile create mode 100644 scipy/3.13.10.Dockerfile create mode 100644 ver/3.13.10.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2c3e90b..49c9805 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.9" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.10" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.10.Dockerfile b/base/3.13.10.Dockerfile new file mode 100644 index 0000000..a7cfc5d --- /dev/null +++ b/base/3.13.10.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.10 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.10.Dockerfile b/cuda/3.13.10.Dockerfile new file mode 100644 index 0000000..e4ad35b --- /dev/null +++ b/cuda/3.13.10.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.16.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index a5d1f58..6b8a462 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.9" + PYTHON_VERSION: "3.13.10" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.10.Dockerfile b/scipy/3.13.10.Dockerfile new file mode 100644 index 0000000..75e9775 --- /dev/null +++ b/scipy/3.13.10.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.10 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 3fe4a20..7d5976c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ variables: - PYTHON_VERSION: "3.13.9" + PYTHON_VERSION: "3.13.10" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.16.0.29" CUDNN_VERSION_ARM64: "9.16.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.10.Dockerfile b/ver/3.13.10.Dockerfile new file mode 100644 index 0000000..0ccb55e --- /dev/null +++ b/ver/3.13.10.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.13.10 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 7ec847206513cbb622ba6d8c5f5f23a55712e4d0 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 3 Dec 2025 08:26:02 +0100 Subject: [PATCH 230/324] Freeze Python v3.14.0 --- base/.gitlab-ci.yml | 4 +- base/3.14.0.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.14.0.Dockerfile | 183 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.0.Dockerfile | 135 +++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.0.Dockerfile | 93 ++++++++++++++++++++ 7 files changed, 526 insertions(+), 6 deletions(-) create mode 100644 base/3.14.0.Dockerfile create mode 100644 cuda/3.14.0.Dockerfile create mode 100644 scipy/3.14.0.Dockerfile create mode 100644 ver/3.14.0.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 49c9805..2e399d0 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.10" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.0" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.0.Dockerfile b/base/3.14.0.Dockerfile new file mode 100644 index 0000000..e89c281 --- /dev/null +++ b/base/3.14.0.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.0 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.0.Dockerfile b/cuda/3.14.0.Dockerfile new file mode 100644 index 0000000..e4ad35b --- /dev/null +++ b/cuda/3.14.0.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.16.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 6b8a462..2cfdae5 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.10" + PYTHON_VERSION: "3.14.0" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.0.Dockerfile b/scipy/3.14.0.Dockerfile new file mode 100644 index 0000000..27832de --- /dev/null +++ b/scipy/3.14.0.Dockerfile @@ -0,0 +1,135 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.0 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/02/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For tables wheels + libblosc2-dev \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables==3.10.1 \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 7d5976c..763e470 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ variables: - PYTHON_VERSION: "3.13.10" + PYTHON_VERSION: "3.14.0" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.16.0.29" CUDNN_VERSION_ARM64: "9.16.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.0.Dockerfile b/ver/3.14.0.Dockerfile new file mode 100644 index 0000000..a3642a3 --- /dev/null +++ b/ver/3.14.0.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.14.0 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 7ae4f0d6fcdc6f899b11ef4f3c3ae1ab17a01635 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 3 Dec 2025 08:57:52 +0100 Subject: [PATCH 231/324] Update Python to v3.14.1 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index dea62d5..fbefd6e 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.0.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.0 \ + --build-arg PYTHON_VERSION=3.14.1 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index e5db0d0..acb5f1b 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.0 \ + --build-arg PYTHON_VERSION=3.14.1 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2e399d0..8194ec5 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.14.1" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 2cfdae5..637b752 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.14.1" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 763e470..d21708c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.0" + PYTHON_VERSION: "3.14.1" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.16.0.29" CUDNN_VERSION_ARM64: "9.16.0.29" From 4e5cb28e98e22652ada2112a6feb2d668d7b7e29 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 6 Dec 2025 07:47:07 +0100 Subject: [PATCH 232/324] CUDA images: Update cuDNN to v9.17.0.29 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index fbefd6e..fc730e1 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.16.0.29 \ + --build-arg CUDNN_VERSION=9.17.0.29 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d21708c..392618d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.1" CUDA_VERSION: "13.0.2" - CUDNN_VERSION_AMD64: "9.16.0.29" - CUDNN_VERSION_ARM64: "9.16.0.29" + CUDNN_VERSION_AMD64: "9.17.0.29" + CUDNN_VERSION_ARM64: "9.17.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" From 73acfd3151c79fb554b8499a61c9fb90303cdad9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 6 Dec 2025 07:52:18 +0100 Subject: [PATCH 233/324] Freeze Python v3.13.10 --- base/.gitlab-ci.yml | 2 +- cuda/3.13.10.Dockerfile | 2 +- scipy/.gitlab-ci.yml | 2 +- scipy/3.13.10.Dockerfile | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 8194ec5..2d62a49 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.1" + PYTHON_VERSION: "3.13.10" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/cuda/3.13.10.Dockerfile b/cuda/3.13.10.Dockerfile index e4ad35b..103f7df 100644 --- a/cuda/3.13.10.Dockerfile +++ b/cuda/3.13.10.Dockerfile @@ -1,4 +1,4 @@ -ARG CUDNN_VERSION=9.16.0.29 +ARG CUDNN_VERSION=9.17.0.29 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 637b752..e7b22a5 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.1" + PYTHON_VERSION: "3.13.10" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.10.Dockerfile b/scipy/3.13.10.Dockerfile index 75e9775..40a0d97 100644 --- a/scipy/3.13.10.Dockerfile +++ b/scipy/3.13.10.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.10 ARG QUARTO_VERSION=1.8.26 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/05/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 392618d..198217d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.1" + PYTHON_VERSION: "3.13.10" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.17.0.29" CUDNN_VERSION_ARM64: "9.17.0.29" From 025dc3186c0e9d8c7b85b38e1e690d8523879792 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 6 Dec 2025 08:55:36 +0100 Subject: [PATCH 234/324] Release Python v3.13.11 --- base/.gitlab-ci.yml | 4 +- base/3.13.11.Dockerfile | 109 +++++++++++++++++++++++ cuda/3.13.11.Dockerfile | 183 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.11.Dockerfile | 138 +++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.11.Dockerfile | 93 ++++++++++++++++++++ 7 files changed, 529 insertions(+), 6 deletions(-) create mode 100644 base/3.13.11.Dockerfile create mode 100644 cuda/3.13.11.Dockerfile create mode 100644 scipy/3.13.11.Dockerfile create mode 100644 ver/3.13.11.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2d62a49..678bc30 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.10" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.11" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.11.Dockerfile b/base/3.13.11.Dockerfile new file mode 100644 index 0000000..a4dfd4d --- /dev/null +++ b/base/3.13.11.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.11 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.11.Dockerfile b/cuda/3.13.11.Dockerfile new file mode 100644 index 0000000..103f7df --- /dev/null +++ b/cuda/3.13.11.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.17.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e7b22a5..3a52831 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.10" + PYTHON_VERSION: "3.13.11" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.11.Dockerfile b/scipy/3.13.11.Dockerfile new file mode 100644 index 0000000..b70baf3 --- /dev/null +++ b/scipy/3.13.11.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.11 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 198217d..57ab613 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ variables: - PYTHON_VERSION: "3.13.10" + PYTHON_VERSION: "3.13.11" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.17.0.29" CUDNN_VERSION_ARM64: "9.17.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.11.Dockerfile b/ver/3.13.11.Dockerfile new file mode 100644 index 0000000..72bf5a8 --- /dev/null +++ b/ver/3.13.11.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.13.11 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 212df70c73fc7310e22de9e25114d3ac1a2ca5b2 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 6 Dec 2025 10:22:47 +0100 Subject: [PATCH 235/324] Freeze Python v3.14.1 --- base/.gitlab-ci.yml | 4 +- base/3.14.1.Dockerfile | 109 ++++++++++++++++++++++++ cuda/3.14.1.Dockerfile | 183 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.1.Dockerfile | 135 +++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.1.Dockerfile | 93 ++++++++++++++++++++ 7 files changed, 526 insertions(+), 6 deletions(-) create mode 100644 base/3.14.1.Dockerfile create mode 100644 cuda/3.14.1.Dockerfile create mode 100644 scipy/3.14.1.Dockerfile create mode 100644 ver/3.14.1.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 678bc30..8194ec5 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.11" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.1" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.1.Dockerfile b/base/3.14.1.Dockerfile new file mode 100644 index 0000000..0cb09d1 --- /dev/null +++ b/base/3.14.1.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.1 +ARG NEOVIM_VERSION=0.11.5 +ARG GIT_VERSION=2.52.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.1.Dockerfile b/cuda/3.14.1.Dockerfile new file mode 100644 index 0000000..103f7df --- /dev/null +++ b/cuda/3.14.1.Dockerfile @@ -0,0 +1,183 @@ +ARG CUDNN_VERSION=9.17.0.29 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 3a52831..637b752 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.11" + PYTHON_VERSION: "3.14.1" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.1.Dockerfile b/scipy/3.14.1.Dockerfile new file mode 100644 index 0000000..de5b3eb --- /dev/null +++ b/scipy/3.14.1.Dockerfile @@ -0,0 +1,135 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.1 +ARG QUARTO_VERSION=1.8.26 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2025/12/05/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For tables wheels + libblosc2-dev \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + #numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables==3.10.1 \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 57ab613..392618d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,11 +1,11 @@ variables: - PYTHON_VERSION: "3.13.11" + PYTHON_VERSION: "3.14.1" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.17.0.29" CUDNN_VERSION_ARM64: "9.17.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.1.Dockerfile b/ver/3.14.1.Dockerfile new file mode 100644 index 0000000..1555ec3 --- /dev/null +++ b/ver/3.14.1.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.0.2 +ARG PYTHON_VERSION=3.14.1 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 74f383660c498acd89c33679bb7264df2efbc1bb Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 6 Dec 2025 11:14:31 +0100 Subject: [PATCH 236/324] Update Python to v3.14.2 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index fc730e1..f7ffa25 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.0.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.1 \ + --build-arg PYTHON_VERSION=3.14.2 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index acb5f1b..529e73a 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.1 \ + --build-arg PYTHON_VERSION=3.14.2 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 8194ec5..f4d0a91 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.1" + PYTHON_VERSION: "3.14.2" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 637b752..fa3ef9b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.1" + PYTHON_VERSION: "3.14.2" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 392618d..1dce3cb 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.1" + PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.0.2" CUDNN_VERSION_AMD64: "9.17.0.29" CUDNN_VERSION_ARM64: "9.17.0.29" From f5888a6697d878d4233098902450d9d2ccc5dd33 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 9 Dec 2025 07:54:09 +0100 Subject: [PATCH 237/324] scipy: Add back numba --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 8102fd5..b1c04fb 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -108,7 +108,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ #ipympl \ #ipywidgets \ matplotlib \ - #numba \ + numba \ numexpr \ numpy \ pandas \ From e44bdbaf10cb5a66846d7c544588657ac6099de8 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 18 Dec 2025 11:57:19 +0100 Subject: [PATCH 238/324] CUDA images: Update CUDA to v13.1.0 - CUDA images: Update latest Dockerfile --- CUDA.md | 3 +- cuda/latest.Dockerfile | 71 ++++++++++++++++++++++++++++++++++++++++++ ver/.gitlab-ci.yml | 10 +++++- 3 files changed, 82 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index f7ffa25..fd71b5b 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.0.2 \ + --build-arg CUDA_VERSION=13.1.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.2 \ -t cuda/python/ver \ @@ -74,6 +74,7 @@ docker build \ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.17.0.29 \ + --build-arg NCCL_VERSION=2.28.9 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index bc596db..fa030ce 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -5,6 +5,13 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG NCCL_VERSION +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} @@ -16,6 +23,9 @@ FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -23,11 +33,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -35,11 +52,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -50,11 +74,18 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -65,11 +96,18 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -77,11 +115,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -89,11 +134,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -107,11 +159,18 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -125,6 +184,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} ARG DEBIAN_FRONTEND=noninteractive @@ -176,5 +239,13 @@ RUN cpuBlasLib="$(update-alternatives --query \ ${NV_CUDNN_PACKAGE_NAME} \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ ## Clean up && rm -rf /var/lib/apt/lists/* diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1dce3cb..b00b09d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,14 @@ variables: PYTHON_VERSION: "3.14.2" - CUDA_VERSION: "13.0.2" + CUDA_VERSION: "13.1.0" CUDNN_VERSION_AMD64: "9.17.0.29" CUDNN_VERSION_ARM64: "9.17.0.29" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" + NCCL_VERSION_AMD64: "2.28.9" + NCCL_VERSION_ARM64: "2.28.9" + NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" + NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" @@ -106,6 +110,8 @@ build:latest-linux-amd64: docker build \ --build-arg CUDNN_VERSION_AMD64 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 \ + --build-arg NCCL_VERSION_AMD64 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN_AMD64 \ --build-arg LIBNVINFER_VERSION_AMD64 \ --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-amd64 \ @@ -147,6 +153,8 @@ build:latest-linux-arm64v8: docker build \ --build-arg CUDNN_VERSION_ARM64 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 \ + --build-arg NCCL_VERSION_ARM64 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN_ARM64 \ --build-arg LIBNVINFER_VERSION_ARM64 \ --build-arg LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 \ --build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG${CUDA_IMAGE_FLAVOR:+-}$CUDA_IMAGE_FLAVOR-linux-arm64v8 \ From a330f8c6708742cd24c522dba13df340479c15db Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 5 Jan 2026 13:31:39 +0100 Subject: [PATCH 239/324] Remove funding --- .github/FUNDING.yml | 2 -- README.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 83a1492..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: benz0li -liberapay: benz0li diff --git a/README.md b/README.md index 529e73a..84dd05d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![minimal-readme compliant](https://img.shields.io/badge/readme%20style-minimal-brightgreen.svg)](https://github.com/RichardLitt/standard-readme/blob/master/example-readmes/minimal-readme.md) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) Donate using Liberapay +[![minimal-readme compliant](https://img.shields.io/badge/readme%20style-minimal-brightgreen.svg)](https://github.com/RichardLitt/standard-readme/blob/master/example-readmes/minimal-readme.md) [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) | See the [CUDA-based Python docker stack](CUDA.md) for GPU accelerated docker images. | |--------------------------------------------------------------------------------------| From 8239dfb2438420f9e2ab9e2c712024c0f8860823 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 Jan 2026 19:00:09 +0100 Subject: [PATCH 240/324] CUDA images: Update cuDNN to v9.17.1.4 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index fd71b5b..15da8a7 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.17.0.29 \ + --build-arg CUDNN_VERSION=9.17.1.4 \ --build-arg NCCL_VERSION=2.28.9 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index b00b09d..f682c6c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,10 +1,10 @@ variables: PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.1.0" - CUDNN_VERSION_AMD64: "9.17.0.29" - CUDNN_VERSION_ARM64: "9.17.0.29" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" + CUDNN_VERSION_AMD64: "9.17.1.4" + CUDNN_VERSION_ARM64: "9.17.1.4" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" NCCL_VERSION_AMD64: "2.28.9" NCCL_VERSION_ARM64: "2.28.9" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" From a06ece23028155fac69409f164c8da6d7c1fe3d2 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 Jan 2026 19:01:46 +0100 Subject: [PATCH 241/324] CUDA images: Update NCCL to v2.29.2 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 15da8a7..84e208e 100644 --- a/CUDA.md +++ b/CUDA.md @@ -74,7 +74,7 @@ docker build \ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.17.1.4 \ - --build-arg NCCL_VERSION=2.28.9 \ + --build-arg NCCL_VERSION=2.29.2 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index f682c6c..ec09f06 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,10 +5,10 @@ variables: CUDNN_VERSION_ARM64: "9.17.1.4" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - NCCL_VERSION_AMD64: "2.28.9" - NCCL_VERSION_ARM64: "2.28.9" - NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.0" - NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.0" + NCCL_VERSION_AMD64: "2.29.2" + NCCL_VERSION_ARM64: "2.29.2" + NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" + NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From 87ed18ee2c35e8d3ae357fc7fd216ee3701f2109 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 Jan 2026 19:04:52 +0100 Subject: [PATCH 242/324] Update CUDA.md --- CUDA.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index 84e208e..d4e626f 100644 --- a/CUDA.md +++ b/CUDA.md @@ -74,8 +74,9 @@ docker build \ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.17.1.4 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.1 \ --build-arg NCCL_VERSION=2.29.2 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.0 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.1 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . From 4ccf55b977c8f26ba3536cd2ed178cd0f57f05f3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 22 Jan 2026 15:57:51 +0100 Subject: [PATCH 243/324] scipy: Update Quarto to v1.8.27 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index b1c04fb..5ba3ab8 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.8.26 +ARG QUARTO_VERSION=1.8.27 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 0c0f76f6ed818c35ed57e1f2d64030814f5f0599 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 22 Jan 2026 16:06:42 +0100 Subject: [PATCH 244/324] CUDA images: Update cuDNN to v9.18.0.77 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index d4e626f..131d5f6 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.17.1.4 \ + --build-arg CUDNN_VERSION=9.18.0.77 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.1 \ --build-arg NCCL_VERSION=2.29.2 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.1 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index ec09f06..cd6735d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.1.0" - CUDNN_VERSION_AMD64: "9.17.1.4" - CUDNN_VERSION_ARM64: "9.17.1.4" + CUDNN_VERSION_AMD64: "9.18.0.77" + CUDNN_VERSION_ARM64: "9.18.0.77" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" NCCL_VERSION_AMD64: "2.29.2" From 746af2a345e62b9980b638176bca9b420f7977e3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 22 Jan 2026 22:41:37 +0100 Subject: [PATCH 245/324] CUDA images: Update CUDA to v13.1.1 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 131d5f6..c52dbdc 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.1.0 \ + --build-arg CUDA_VERSION=13.1.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.2 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index cd6735d..d17e2f2 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: PYTHON_VERSION: "3.14.2" - CUDA_VERSION: "13.1.0" + CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.18.0.77" CUDNN_VERSION_ARM64: "9.18.0.77" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" From 48bd103bfccf0744c6976d1d9309ea1eb0ad4b83 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 27 Jan 2026 08:16:46 +0100 Subject: [PATCH 246/324] CUDA images: Update cuDNN to v9.18.1.3 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index c52dbdc..ef7e965 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.18.0.77 \ + --build-arg CUDNN_VERSION=9.18.1.3 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.1 \ --build-arg NCCL_VERSION=2.29.2 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.1 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d17e2f2..65bbe7f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.1.1" - CUDNN_VERSION_AMD64: "9.18.0.77" - CUDNN_VERSION_ARM64: "9.18.0.77" + CUDNN_VERSION_AMD64: "9.18.1.3" + CUDNN_VERSION_ARM64: "9.18.1.3" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" NCCL_VERSION_AMD64: "2.29.2" From db3aad2f2ed8da703725920bcef141cd5367c068 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 27 Jan 2026 08:17:08 +0100 Subject: [PATCH 247/324] base: Update Neovim to v0.11.6 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index bd3847d..1f0d70e 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.5 +ARG NEOVIM_VERSION=0.11.6 ARG GIT_VERSION=2.52.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From 46b3d9d891d55eba04bde0280c2e4986fb075870 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 30 Jan 2026 10:38:44 +0100 Subject: [PATCH 248/324] scipy: Install Python package tables from GitHub - Due to Python package blosc2-4.0.0 - Remove package libblosc2-dev - https://github.com/PyTables/PyTables/issues/1262 --- scipy/latest.Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 5ba3ab8..d36142b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -29,8 +29,6 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ librsvg2-bin \ qpdf \ texinfo \ - ## Python: For tables wheels - libblosc2-dev \ ## Python: For h5py wheels (arm64) libhdf5-dev \ ## Install quarto @@ -121,9 +119,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ sqlalchemy \ statsmodels \ sympy \ - tables==3.10.1 \ #widgetsnbextension \ xlrd \ + && pip install git+https://github.com/PyTables/PyTables.git \ ## Clean up && rm -rf /tmp/* \ && rm -rf /var/lib/apt/lists/* \ From bedc2088ccdc32dc102a7f61c29a45c82892ebf3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 3 Feb 2026 09:23:19 +0100 Subject: [PATCH 249/324] base: Update Git to v2.53.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 1f0d70e..6ecc971 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.6 -ARG GIT_VERSION=2.52.0 +ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 From bc8cc511c9842b961bfa7e23f5a0cd7be6d83470 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Feb 2026 06:05:12 +0100 Subject: [PATCH 250/324] CUDA images: Update NCCL to v2.29.3 --- ver/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 65bbe7f..516e1c8 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ variables: CUDNN_VERSION_ARM64: "9.18.1.3" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - NCCL_VERSION_AMD64: "2.29.2" - NCCL_VERSION_ARM64: "2.29.2" + NCCL_VERSION_AMD64: "2.29.3" + NCCL_VERSION_ARM64: "2.29.3" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" TAG_VERSION_MAJ_MIN: "false" From 2663735402af53eb422fb50966f5631226c6bf27 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Feb 2026 06:07:58 +0100 Subject: [PATCH 251/324] CUDA images: Update cuDNN to v9.19.0.56 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index ef7e965..4b65d87 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.18.1.3 \ + --build-arg CUDNN_VERSION=9.19.0.56 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.1 \ --build-arg NCCL_VERSION=2.29.2 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.1 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 516e1c8..0b14474 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.1.1" - CUDNN_VERSION_AMD64: "9.18.1.3" - CUDNN_VERSION_ARM64: "9.18.1.3" + CUDNN_VERSION_AMD64: "9.19.0.56" + CUDNN_VERSION_ARM64: "9.19.0.56" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" NCCL_VERSION_AMD64: "2.29.3" From 712c10c618af7a97e24e6f5991f48545963fc9fa Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Feb 2026 06:24:02 +0100 Subject: [PATCH 252/324] Freeze Python v3.13.11 --- base/.gitlab-ci.yml | 2 +- base/3.13.11.Dockerfile | 4 +- cuda/3.13.11.Dockerfile | 79 ++++++++++++++++++++++++++++++++++++++-- scipy/.gitlab-ci.yml | 2 +- scipy/3.13.11.Dockerfile | 4 +- ver/.gitlab-ci.yml | 2 +- ver/3.13.11.Dockerfile | 2 +- 7 files changed, 83 insertions(+), 12 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f4d0a91..f32174a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.13.11" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.13.11.Dockerfile b/base/3.13.11.Dockerfile index a4dfd4d..d7e577e 100644 --- a/base/3.13.11.Dockerfile +++ b/base/3.13.11.Dockerfile @@ -2,8 +2,8 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.13.11 -ARG NEOVIM_VERSION=0.11.5 -ARG GIT_VERSION=2.52.0 +ARG NEOVIM_VERSION=0.11.6 +ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 diff --git a/cuda/3.13.11.Dockerfile b/cuda/3.13.11.Dockerfile index 103f7df..eec0c8e 100644 --- a/cuda/3.13.11.Dockerfile +++ b/cuda/3.13.11.Dockerfile @@ -1,13 +1,20 @@ -ARG CUDNN_VERSION=9.17.0.29 +ARG CUDNN_VERSION=9.19.0.56 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} -ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.0 +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.1 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG NCCL_VERSION=2.29.3 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.1 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + ## CUDA_IMAGE -## ├── nvidia/cuda:13.0.2-runtime-ubuntu24.04 -## └── nvidia/cuda:13.0.2-devel-ubuntu24.04 +## ├── nvidia/cuda:13.1.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.1.1-devel-ubuntu24.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} @@ -19,6 +26,9 @@ FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -26,11 +36,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -38,11 +55,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -53,11 +77,18 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -68,11 +99,18 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -80,11 +118,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -92,11 +137,18 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -110,11 +162,18 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -128,6 +187,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} ARG DEBIAN_FRONTEND=noninteractive @@ -179,5 +242,13 @@ RUN cpuBlasLib="$(update-alternatives --query \ ${NV_CUDNN_PACKAGE_NAME} \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ ## Clean up && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index fa3ef9b..30d3b7d 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.13.11" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.11.Dockerfile b/scipy/3.13.11.Dockerfile index b70baf3..935b03f 100644 --- a/scipy/3.13.11.Dockerfile +++ b/scipy/3.13.11.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.11 -ARG QUARTO_VERSION=1.8.26 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.8.27 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/02/03/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0b14474..db3db18 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.13.11" CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.19.0.56" CUDNN_VERSION_ARM64: "9.19.0.56" diff --git a/ver/3.13.11.Dockerfile b/ver/3.13.11.Dockerfile index 72bf5a8..3f3fc3f 100644 --- a/ver/3.13.11.Dockerfile +++ b/ver/3.13.11.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=13.0.2 +ARG CUDA_VERSION=13.1.1 ARG PYTHON_VERSION=3.13.11 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From 173b0d03996a1628b80445d8c3b8709b35bffa8b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Feb 2026 07:13:15 +0100 Subject: [PATCH 253/324] Release Python v3.13.12 --- base/.gitlab-ci.yml | 4 +- base/3.13.12.Dockerfile | 109 +++++++++++++++++ cuda/3.13.12.Dockerfile | 254 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.12.Dockerfile | 138 +++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.12.Dockerfile | 93 ++++++++++++++ 7 files changed, 600 insertions(+), 6 deletions(-) create mode 100644 base/3.13.12.Dockerfile create mode 100644 cuda/3.13.12.Dockerfile create mode 100644 scipy/3.13.12.Dockerfile create mode 100644 ver/3.13.12.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f32174a..314e2d4 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.11" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.12" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.12.Dockerfile b/base/3.13.12.Dockerfile new file mode 100644 index 0000000..907e0ee --- /dev/null +++ b/base/3.13.12.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.12 +ARG NEOVIM_VERSION=0.11.6 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.12.Dockerfile b/cuda/3.13.12.Dockerfile new file mode 100644 index 0000000..eec0c8e --- /dev/null +++ b/cuda/3.13.12.Dockerfile @@ -0,0 +1,254 @@ +ARG CUDNN_VERSION=9.19.0.56 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.1 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.3 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.1 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.1.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.1.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 30d3b7d..67f93f3 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.11" + PYTHON_VERSION: "3.13.12" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.12.Dockerfile b/scipy/3.13.12.Dockerfile new file mode 100644 index 0000000..331ee0c --- /dev/null +++ b/scipy/3.13.12.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.12 +ARG QUARTO_VERSION=1.8.27 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index db3db18..4197c56 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.11" + PYTHON_VERSION: "3.13.12" CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.19.0.56" CUDNN_VERSION_ARM64: "9.19.0.56" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.29.3" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.12.Dockerfile b/ver/3.13.12.Dockerfile new file mode 100644 index 0000000..f527b1f --- /dev/null +++ b/ver/3.13.12.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.1.1 +ARG PYTHON_VERSION=3.13.12 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 3b27d25afd1ed09ef5e3ebaf6005e7b1db9061ec Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Feb 2026 09:10:19 +0100 Subject: [PATCH 254/324] Freeze Python v3.14.2 --- base/.gitlab-ci.yml | 4 +- base/3.14.2.Dockerfile | 109 +++++++++++++++++ cuda/3.14.2.Dockerfile | 254 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.2.Dockerfile | 133 +++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.2.Dockerfile | 93 +++++++++++++++ 7 files changed, 595 insertions(+), 6 deletions(-) create mode 100644 base/3.14.2.Dockerfile create mode 100644 cuda/3.14.2.Dockerfile create mode 100644 scipy/3.14.2.Dockerfile create mode 100644 ver/3.14.2.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 314e2d4..f4d0a91 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.12" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.2" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.2.Dockerfile b/base/3.14.2.Dockerfile new file mode 100644 index 0000000..68302eb --- /dev/null +++ b/base/3.14.2.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.2 +ARG NEOVIM_VERSION=0.11.6 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.6.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.2.Dockerfile b/cuda/3.14.2.Dockerfile new file mode 100644 index 0000000..eec0c8e --- /dev/null +++ b/cuda/3.14.2.Dockerfile @@ -0,0 +1,254 @@ +ARG CUDNN_VERSION=9.19.0.56 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.1 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.3 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.1 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.1.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.1.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 67f93f3..fa3ef9b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.12" + PYTHON_VERSION: "3.14.2" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.2.Dockerfile b/scipy/3.14.2.Dockerfile new file mode 100644 index 0000000..7b2dbaf --- /dev/null +++ b/scipy/3.14.2.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.2 +ARG QUARTO_VERSION=1.8.27 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/02/03/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + #widgetsnbextension \ + xlrd \ + && pip install git+https://github.com/PyTables/PyTables.git \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4197c56..0b14474 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.12" + PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.19.0.56" CUDNN_VERSION_ARM64: "9.19.0.56" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.29.3" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.2.Dockerfile b/ver/3.14.2.Dockerfile new file mode 100644 index 0000000..8b80488 --- /dev/null +++ b/ver/3.14.2.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.1.1 +ARG PYTHON_VERSION=3.14.2 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From add1b5ae5d77a6b43f575dad7a2dc0793e492db4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 4 Feb 2026 09:42:07 +0100 Subject: [PATCH 255/324] Update Python to v3.14.3 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 4b65d87..4dc4aa8 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.1.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.2 \ + --build-arg PYTHON_VERSION=3.14.3 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 84dd05d..3947ae4 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.2 \ + --build-arg PYTHON_VERSION=3.14.3 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f4d0a91..3d704ef 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.14.3" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index fa3ef9b..925ac51 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.14.3" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0b14474..209cb76 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.14.3" CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.19.0.56" CUDNN_VERSION_ARM64: "9.19.0.56" From cdf9ea262d1f168c1f75e1e04000ce774b138a31 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 6 Feb 2026 05:22:58 +0100 Subject: [PATCH 256/324] Release Python v3.13.12 --- base/.gitlab-ci.yml | 8 ++++---- scipy/.gitlab-ci.yml | 4 ++-- ver/.gitlab-ci.yml | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index f4d0a91..6a0b837 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,14 +1,14 @@ variables: - PYTHON_VERSION: "3.14.2" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.12" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: rules: - - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /^3.12/ variables: BASE_IMAGE_TAG: "12" - - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /^3.12/ variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index fa3ef9b..67f93f3 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.13.12" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0b14474..bbb02a9 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.2" + PYTHON_VERSION: "3.13.12" CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.19.0.56" CUDNN_VERSION_ARM64: "9.19.0.56" @@ -9,15 +9,15 @@ variables: NCCL_VERSION_ARM64: "2.29.3" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: rules: - - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == null && $PYTHON_VERSION =~ /^3.12/ variables: BASE_IMAGE_TAG: "12" - - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /3.12/ + - if: $CI_COMMIT_BRANCH == "freeze-version" && $CUDA_BASE_IMAGE == "ubuntu" && $PYTHON_VERSION =~ /^3.12/ variables: BASE_IMAGE: "$CUDA_BASE_IMAGE" BASE_IMAGE_TAG: "22.04" From c220cea5b5c12a28f9b8112e3c725baf6cfc8eaa Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 6 Feb 2026 09:31:33 +0100 Subject: [PATCH 257/324] Freeze Python v3.14.2 --- base/.gitlab-ci.yml | 4 ++-- scipy/.gitlab-ci.yml | 4 ++-- ver/.gitlab-ci.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 6a0b837..c0b9d82 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.12" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.2" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 67f93f3..fa3ef9b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.12" + PYTHON_VERSION: "3.14.2" CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index bbb02a9..a91e720 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.12" + PYTHON_VERSION: "3.14.2" CUDA_VERSION: "13.1.1" CUDNN_VERSION_AMD64: "9.19.0.56" CUDNN_VERSION_ARM64: "9.19.0.56" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.29.3" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: From 6ab39a853c9b823f068a3c85430cc88ed89b11dc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 26 Feb 2026 09:50:09 +0100 Subject: [PATCH 258/324] scipy: Install Python package tables the regular way --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index d36142b..4b84935 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -119,9 +119,9 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ sqlalchemy \ statsmodels \ sympy \ + tables \ #widgetsnbextension \ xlrd \ - && pip install git+https://github.com/PyTables/PyTables.git \ ## Clean up && rm -rf /tmp/* \ && rm -rf /var/lib/apt/lists/* \ From 18a2bd3349d5489aae314552d9ae2fa8eca934a8 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 26 Feb 2026 09:59:11 +0100 Subject: [PATCH 259/324] CUDA images: Update cuDNN to v9.19.1.2 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 4dc4aa8..77dbea4 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.19.0.56 \ + --build-arg CUDNN_VERSION=9.19.1.2 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.1 \ --build-arg NCCL_VERSION=2.29.2 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.1 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 209cb76..2429fda 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.3" CUDA_VERSION: "13.1.1" - CUDNN_VERSION_AMD64: "9.19.0.56" - CUDNN_VERSION_ARM64: "9.19.0.56" + CUDNN_VERSION_AMD64: "9.19.1.2" + CUDNN_VERSION_ARM64: "9.19.1.2" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" NCCL_VERSION_AMD64: "2.29.3" From 6954f4a77e866a9430497c7a2fcdbc9d3c1d5582 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 10 Mar 2026 12:26:22 +0100 Subject: [PATCH 260/324] CUDA images: Fix Dockerfiles --- cuda/3.13.11.Dockerfile | 16 ++++++++++++++++ cuda/3.13.12.Dockerfile | 16 ++++++++++++++++ cuda/3.14.2.Dockerfile | 16 ++++++++++++++++ cuda/latest.Dockerfile | 16 ++++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/cuda/3.13.11.Dockerfile b/cuda/3.13.11.Dockerfile index eec0c8e..638cb01 100644 --- a/cuda/3.13.11.Dockerfile +++ b/cuda/3.13.11.Dockerfile @@ -77,6 +77,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -99,6 +103,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" @@ -162,6 +170,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -187,6 +199,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" diff --git a/cuda/3.13.12.Dockerfile b/cuda/3.13.12.Dockerfile index eec0c8e..638cb01 100644 --- a/cuda/3.13.12.Dockerfile +++ b/cuda/3.13.12.Dockerfile @@ -77,6 +77,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -99,6 +103,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" @@ -162,6 +170,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -187,6 +199,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" diff --git a/cuda/3.14.2.Dockerfile b/cuda/3.14.2.Dockerfile index eec0c8e..638cb01 100644 --- a/cuda/3.14.2.Dockerfile +++ b/cuda/3.14.2.Dockerfile @@ -77,6 +77,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -99,6 +103,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" @@ -162,6 +170,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -187,6 +199,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index fa030ce..6fcf809 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -74,6 +74,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -96,6 +100,10 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" @@ -159,6 +167,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" @@ -184,6 +196,10 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" From 245097486e914b4cc4ea656114f6b58dd1c81988 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 15 Mar 2026 14:34:50 +0100 Subject: [PATCH 261/324] Revert "scipy: Temporarily switch CTAN repo" This reverts commit 377b6d03f8eb8b7f85637dec12752003b15ddfff. --- scipy/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 925ac51..7a2d0a0 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: PYTHON_VERSION: "3.14.3" - CTAN_REPO_BUILD_LATEST: "https://www.texlive.info/CTAN/systems/texlive/tlnet" + CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From b62bb252e897d0bf1e7a31f428761638efe23fb3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 19 Mar 2026 19:25:25 +0100 Subject: [PATCH 262/324] CUDA images: Update CUDA to v13.2.0 - Update cuDNN to v9.20.0.48 - Update NCCL to v2.29.7 --- CUDA.md | 10 +++++----- ver/.gitlab-ci.yml | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CUDA.md b/CUDA.md index 77dbea4..614da0c 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.1.1 \ + --build-arg CUDA_VERSION=13.2.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.3 \ -t cuda/python/ver \ @@ -73,10 +73,10 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.19.1.2 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.1 \ - --build-arg NCCL_VERSION=2.29.2 \ - --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.1 \ + --build-arg CUDNN_VERSION=9.20.0.48 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ + --build-arg NCCL_VERSION=2.29.7 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 2429fda..689c96c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,14 +1,14 @@ variables: PYTHON_VERSION: "3.14.3" - CUDA_VERSION: "13.1.1" - CUDNN_VERSION_AMD64: "9.19.1.2" - CUDNN_VERSION_ARM64: "9.19.1.2" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" - NCCL_VERSION_AMD64: "2.29.3" - NCCL_VERSION_ARM64: "2.29.3" - NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.1" - NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.1" + CUDA_VERSION: "13.2.0" + CUDNN_VERSION_AMD64: "9.20.0.48" + CUDNN_VERSION_ARM64: "9.20.0.48" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" + NCCL_VERSION_AMD64: "2.29.7" + NCCL_VERSION_ARM64: "2.29.7" + NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" + NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From e13738fa71e4c73847117945683a815b3bcac639 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 20 Mar 2026 19:03:19 +0100 Subject: [PATCH 263/324] scipy: Update Quarto to v1.9.36 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 4b84935..c3f7b7c 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.8.27 +ARG QUARTO_VERSION=1.9.36 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From de8d20d00179ba9520e13db4204c747b5252bd0a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 20 Mar 2026 19:04:38 +0100 Subject: [PATCH 264/324] base: Update Pandoc to v3.8.3 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 6ecc971..c4da09d 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -5,7 +5,7 @@ ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.11.6 ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 -ARG PANDOC_VERSION=3.6.3 +ARG PANDOC_VERSION=3.8.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From 354f368b42066065f73af7fba474b875771e4071 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 29 Mar 2026 13:11:11 +0200 Subject: [PATCH 265/324] base: Update Neovim to v0.11.7 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index c4da09d..097ace5 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.6 +ARG NEOVIM_VERSION=0.11.7 ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From 95d82d6d71ae55596302404d1cdf40cf1c5dc185 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 30 Mar 2026 09:16:28 +0200 Subject: [PATCH 266/324] base: Update Neovim to v0.12.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 097ace5..02793fd 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.11.7 +ARG NEOVIM_VERSION=0.12.0 ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From 09a9191858e6f433dc3afbc76b547ca9285c3cbd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 05:57:14 +0200 Subject: [PATCH 267/324] base: Update Neovim to v0.12.1 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 02793fd..3e8d9ce 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.12.0 +ARG NEOVIM_VERSION=0.12.1 ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From 30fa69f0307fc38acb428e87267d0d629c6654fd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 06:32:05 +0200 Subject: [PATCH 268/324] Freeze Python v3.13.12 --- base/.gitlab-ci.yml | 2 +- base/3.13.12.Dockerfile | 2 +- cuda/3.13.12.Dockerfile | 12 ++++++------ scipy/.gitlab-ci.yml | 2 +- scipy/3.13.12.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 2 +- ver/3.13.12.Dockerfile | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2ef3f9b..3f7d5eb 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.3" + PYTHON_VERSION: "3.13.12" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.13.12.Dockerfile b/base/3.13.12.Dockerfile index 907e0ee..6c6a70c 100644 --- a/base/3.13.12.Dockerfile +++ b/base/3.13.12.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.13.12 -ARG NEOVIM_VERSION=0.11.6 +ARG NEOVIM_VERSION=0.12.1 ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.6.3 diff --git a/cuda/3.13.12.Dockerfile b/cuda/3.13.12.Dockerfile index 638cb01..3ccb3b5 100644 --- a/cuda/3.13.12.Dockerfile +++ b/cuda/3.13.12.Dockerfile @@ -1,20 +1,20 @@ -ARG CUDNN_VERSION=9.19.0.56 +ARG CUDNN_VERSION=9.20.0.48 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} -ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.1 +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} -ARG NCCL_VERSION=2.29.3 +ARG NCCL_VERSION=2.29.7 ARG NCCL_VERSION_AMD64=${NCCL_VERSION} ARG NCCL_VERSION_ARM64=${NCCL_VERSION} -ARG NCCL_CUDA_VERSION_MAJ_MIN=13.1 +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} ## CUDA_IMAGE -## ├── nvidia/cuda:13.1.1-runtime-ubuntu24.04 -## └── nvidia/cuda:13.1.1-devel-ubuntu24.04 +## ├── nvidia/cuda:13.2.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.0-devel-ubuntu24.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 7a2d0a0..846da0b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.3" + PYTHON_VERSION: "3.13.12" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.12.Dockerfile b/scipy/3.13.12.Dockerfile index 331ee0c..8711c1d 100644 --- a/scipy/3.13.12.Dockerfile +++ b/scipy/3.13.12.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.12 -ARG QUARTO_VERSION=1.8.27 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.9.36 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/04/07/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 00301fc..f114f8b 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.3" + PYTHON_VERSION: "3.13.12" CUDA_VERSION: "13.2.0" CUDNN_VERSION_AMD64: "9.20.0.48" CUDNN_VERSION_ARM64: "9.20.0.48" diff --git a/ver/3.13.12.Dockerfile b/ver/3.13.12.Dockerfile index f527b1f..8df82df 100644 --- a/ver/3.13.12.Dockerfile +++ b/ver/3.13.12.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=13.1.1 +ARG CUDA_VERSION=13.2.0 ARG PYTHON_VERSION=3.13.12 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From 4a6bb597ee124c3337908a3006971da146771bd1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 06:56:51 +0200 Subject: [PATCH 269/324] Freeze Python v3.13.12 --- base/3.13.12.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/3.13.12.Dockerfile b/base/3.13.12.Dockerfile index 6c6a70c..a0216bb 100644 --- a/base/3.13.12.Dockerfile +++ b/base/3.13.12.Dockerfile @@ -5,7 +5,7 @@ ARG PYTHON_VERSION=3.13.12 ARG NEOVIM_VERSION=0.12.1 ARG GIT_VERSION=2.53.0 ARG GIT_LFS_VERSION=3.7.1 -ARG PANDOC_VERSION=3.6.3 +ARG PANDOC_VERSION=3.8.3 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From bdbddb1f8407488219e6d90f0082d35b18d4ffdf Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 07:41:31 +0200 Subject: [PATCH 270/324] Release Python v3.13.13 --- base/.gitlab-ci.yml | 4 +- base/3.13.13.Dockerfile | 109 ++++++++++++++++ cuda/3.13.13.Dockerfile | 270 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.13.Dockerfile | 138 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.13.Dockerfile | 93 ++++++++++++++ 7 files changed, 616 insertions(+), 6 deletions(-) create mode 100644 base/3.13.13.Dockerfile create mode 100644 cuda/3.13.13.Dockerfile create mode 100644 scipy/3.13.13.Dockerfile create mode 100644 ver/3.13.13.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 3f7d5eb..4b60871 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.12" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.13" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.13.Dockerfile b/base/3.13.13.Dockerfile new file mode 100644 index 0000000..5915028 --- /dev/null +++ b/base/3.13.13.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.13 +ARG NEOVIM_VERSION=0.12.1 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.13.Dockerfile b/cuda/3.13.13.Dockerfile new file mode 100644 index 0000000..3ccb3b5 --- /dev/null +++ b/cuda/3.13.13.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.20.0.48 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.2.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 846da0b..b380908 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.12" + PYTHON_VERSION: "3.13.13" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.13.Dockerfile b/scipy/3.13.13.Dockerfile new file mode 100644 index 0000000..93c27d0 --- /dev/null +++ b/scipy/3.13.13.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.13 +ARG QUARTO_VERSION=1.9.36 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index f114f8b..28566ac 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.12" + PYTHON_VERSION: "3.13.13" CUDA_VERSION: "13.2.0" CUDNN_VERSION_AMD64: "9.20.0.48" CUDNN_VERSION_ARM64: "9.20.0.48" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.29.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.13.Dockerfile b/ver/3.13.13.Dockerfile new file mode 100644 index 0000000..e421264 --- /dev/null +++ b/ver/3.13.13.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.2.0 +ARG PYTHON_VERSION=3.13.13 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From bf8a1daaf5a3cea1efa503e74898f208f40c78bc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 09:01:22 +0200 Subject: [PATCH 271/324] Freeze Python v3.14.3 --- base/.gitlab-ci.yml | 4 +- base/3.14.3.Dockerfile | 109 ++++++++++++++++ cuda/3.14.3.Dockerfile | 270 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.3.Dockerfile | 133 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.3.Dockerfile | 93 ++++++++++++++ 7 files changed, 611 insertions(+), 6 deletions(-) create mode 100644 base/3.14.3.Dockerfile create mode 100644 cuda/3.14.3.Dockerfile create mode 100644 scipy/3.14.3.Dockerfile create mode 100644 ver/3.14.3.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 4b60871..2ef3f9b 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.13" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.3" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.3.Dockerfile b/base/3.14.3.Dockerfile new file mode 100644 index 0000000..cbd9ac6 --- /dev/null +++ b/base/3.14.3.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.3 +ARG NEOVIM_VERSION=0.12.1 +ARG GIT_VERSION=2.53.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.3.Dockerfile b/cuda/3.14.3.Dockerfile new file mode 100644 index 0000000..3ccb3b5 --- /dev/null +++ b/cuda/3.14.3.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.20.0.48 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.29.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.2.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index b380908..7a2d0a0 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.13" + PYTHON_VERSION: "3.14.3" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.3.Dockerfile b/scipy/3.14.3.Dockerfile new file mode 100644 index 0000000..9c09f6b --- /dev/null +++ b/scipy/3.14.3.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.3 +ARG QUARTO_VERSION=1.9.36 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/04/07/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 28566ac..00301fc 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.13" + PYTHON_VERSION: "3.14.3" CUDA_VERSION: "13.2.0" CUDNN_VERSION_AMD64: "9.20.0.48" CUDNN_VERSION_ARM64: "9.20.0.48" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.29.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.3.Dockerfile b/ver/3.14.3.Dockerfile new file mode 100644 index 0000000..b0adf12 --- /dev/null +++ b/ver/3.14.3.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.2.0 +ARG PYTHON_VERSION=3.14.3 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 37a1f9bf97b67d936ae444b3fe76c2ff6be290c5 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 09:56:42 +0200 Subject: [PATCH 272/324] Update Python to v3.14.4 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 614da0c..b2352c7 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.2.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.3 \ + --build-arg PYTHON_VERSION=3.14.4 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 3947ae4..fa5b4cb 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.3 \ + --build-arg PYTHON_VERSION=3.14.4 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 2ef3f9b..c92cef0 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.3" + PYTHON_VERSION: "3.14.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 7a2d0a0..b20726b 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.3" + PYTHON_VERSION: "3.14.4" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 00301fc..59333d6 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.3" + PYTHON_VERSION: "3.14.4" CUDA_VERSION: "13.2.0" CUDNN_VERSION_AMD64: "9.20.0.48" CUDNN_VERSION_ARM64: "9.20.0.48" From afdda836712eb71a4bd9e8603090c3fc5c67da3e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Apr 2026 14:43:32 +0200 Subject: [PATCH 273/324] scipy: Update Quarto to v1.9.37 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index c3f7b7c..ed88751 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.9.36 +ARG QUARTO_VERSION=1.9.37 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 83e1b82049792ef0ccb37c38e677c46b5bf1cbdd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 19 Apr 2026 10:10:12 +0200 Subject: [PATCH 274/324] CUDA images: Update CUDA to v13.2.1 - Update cuDNN to v9.21.0.82 --- ver/.gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 59333d6..88f365e 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.4" - CUDA_VERSION: "13.2.0" - CUDNN_VERSION_AMD64: "9.20.0.48" - CUDNN_VERSION_ARM64: "9.20.0.48" + CUDA_VERSION: "13.2.1" + CUDNN_VERSION_AMD64: "9.21.0.82" + CUDNN_VERSION_ARM64: "9.21.0.82" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" NCCL_VERSION_AMD64: "2.29.7" From 9de3111598c54cba759bc9fa546bf09bfb67ff3d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 19 Apr 2026 10:11:09 +0200 Subject: [PATCH 275/324] pubtools: Temporarily fix latest Dockerfile - https://github.com/rstudio/tinytex/issues/502 --- scipy/latest.Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index ed88751..5e13d87 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -68,6 +68,7 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tlmgr update --self \ ## TeX packages as requested by the community && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && sed -i "s/pdfmanagement-testphase/pdfmanagement/g" pkgs-yihui.txt \ && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ && rm -f pkgs-yihui.txt \ ## TeX packages as in rocker/verse From 42da9bda6fe363671293edc02617d7efcc5c4d09 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 19 Apr 2026 19:45:09 +0200 Subject: [PATCH 276/324] Revert "pubtools: Temporarily fix latest Dockerfile" This reverts commit 9de3111598c54cba759bc9fa546bf09bfb67ff3d. --- scipy/latest.Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index 5e13d87..ed88751 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -68,7 +68,6 @@ RUN dpkgArch="$(dpkg --print-architecture)" \ && tlmgr update --self \ ## TeX packages as requested by the community && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ - && sed -i "s/pdfmanagement-testphase/pdfmanagement/g" pkgs-yihui.txt \ && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ && rm -f pkgs-yihui.txt \ ## TeX packages as in rocker/verse From bea4da6d00628464f6264d253fac7e7f81209d54 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Apr 2026 20:14:30 +0200 Subject: [PATCH 277/324] CUDA images: Update NCCL to v2.30.3 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index b2352c7..d68eb60 100644 --- a/CUDA.md +++ b/CUDA.md @@ -75,7 +75,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.20.0.48 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ - --build-arg NCCL_VERSION=2.29.7 \ + --build-arg NCCL_VERSION=2.30.3 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 88f365e..72f33b6 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ variables: CUDNN_VERSION_ARM64: "9.21.0.82" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" - NCCL_VERSION_AMD64: "2.29.7" - NCCL_VERSION_ARM64: "2.29.7" + NCCL_VERSION_AMD64: "2.30.3" + NCCL_VERSION_ARM64: "2.30.3" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" TAG_VERSION_MAJ_MIN: "false" From 109254fc50734cc1472c162bbc720e8ce30a80cd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Apr 2026 20:14:59 +0200 Subject: [PATCH 278/324] base: Update Git to v2.54.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 3e8d9ce..5567bbe 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.12.1 -ARG GIT_VERSION=2.53.0 +ARG GIT_VERSION=2.54.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From 5b7cde3df2e009b3bdb558a3e72e6573dde03d94 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Apr 2026 20:15:59 +0200 Subject: [PATCH 279/324] CUDA images: Update cuDNN to v9.21.1.3 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index d68eb60..c02c647 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.20.0.48 \ + --build-arg CUDNN_VERSION=9.21.1.3 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ --build-arg NCCL_VERSION=2.30.3 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 72f33b6..d2de97c 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.4" CUDA_VERSION: "13.2.1" - CUDNN_VERSION_AMD64: "9.21.0.82" - CUDNN_VERSION_ARM64: "9.21.0.82" + CUDNN_VERSION_AMD64: "9.21.1.3" + CUDNN_VERSION_ARM64: "9.21.1.3" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" NCCL_VERSION_AMD64: "2.30.3" From a338dff756ec64542ddc76c8065c0c54e2a0cb32 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Apr 2026 20:16:22 +0200 Subject: [PATCH 280/324] base: Update Neovim to v0.12.2 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 5567bbe..01d4fcb 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.12.1 +ARG NEOVIM_VERSION=0.12.2 ARG GIT_VERSION=2.54.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From 4c35cc2f38176d71003d322e784364db00e7c127 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Apr 2026 20:17:08 +0200 Subject: [PATCH 281/324] Update CUDA.md --- CUDA.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CUDA.md b/CUDA.md index c02c647..cc5b174 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.2.0 \ + --build-arg CUDA_VERSION=13.2.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.4 \ -t cuda/python/ver \ From 782d0f713efed16ddd037c3218dfdb3c672c5c57 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 15 May 2026 06:05:00 +0200 Subject: [PATCH 282/324] CUDA images: Update NCCL to v2.30.4 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index cc5b174..d59a9bd 100644 --- a/CUDA.md +++ b/CUDA.md @@ -75,7 +75,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.21.1.3 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ - --build-arg NCCL_VERSION=2.30.3 \ + --build-arg NCCL_VERSION=2.30.4 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index d2de97c..4f66197 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ variables: CUDNN_VERSION_ARM64: "9.21.1.3" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" - NCCL_VERSION_AMD64: "2.30.3" - NCCL_VERSION_ARM64: "2.30.3" + NCCL_VERSION_AMD64: "2.30.4" + NCCL_VERSION_ARM64: "2.30.4" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" TAG_VERSION_MAJ_MIN: "false" From f727b59105d6f5ca4a510396572b3bc0b83d0ea6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 15 May 2026 06:07:03 +0200 Subject: [PATCH 283/324] CUDA images: Update cuDNN to v9.22.0.52 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index d59a9bd..e8ad00a 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.21.1.3 \ + --build-arg CUDNN_VERSION=9.22.0.52 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ --build-arg NCCL_VERSION=2.30.4 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 4f66197..a72dcb0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.4" CUDA_VERSION: "13.2.1" - CUDNN_VERSION_AMD64: "9.21.1.3" - CUDNN_VERSION_ARM64: "9.21.1.3" + CUDNN_VERSION_AMD64: "9.22.0.52" + CUDNN_VERSION_ARM64: "9.22.0.52" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" NCCL_VERSION_AMD64: "2.30.4" From bbf05c956e98d5dfe8c63408831040878c2afc52 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 15 May 2026 06:28:15 +0200 Subject: [PATCH 284/324] Freeze Python v3.14.4 --- base/3.14.4.Dockerfile | 109 ++++++++++++++++ cuda/3.14.4.Dockerfile | 270 ++++++++++++++++++++++++++++++++++++++++ scipy/3.14.4.Dockerfile | 133 ++++++++++++++++++++ ver/3.14.4.Dockerfile | 93 ++++++++++++++ 4 files changed, 605 insertions(+) create mode 100644 base/3.14.4.Dockerfile create mode 100644 cuda/3.14.4.Dockerfile create mode 100644 scipy/3.14.4.Dockerfile create mode 100644 ver/3.14.4.Dockerfile diff --git a/base/3.14.4.Dockerfile b/base/3.14.4.Dockerfile new file mode 100644 index 0000000..556c468 --- /dev/null +++ b/base/3.14.4.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.4 +ARG NEOVIM_VERSION=0.12.2 +ARG GIT_VERSION=2.54.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.4.Dockerfile b/cuda/3.14.4.Dockerfile new file mode 100644 index 0000000..d9e7d3d --- /dev/null +++ b/cuda/3.14.4.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.22.0.52 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.4 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.2.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.2.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/3.14.4.Dockerfile b/scipy/3.14.4.Dockerfile new file mode 100644 index 0000000..31a7ab8 --- /dev/null +++ b/scipy/3.14.4.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.4 +ARG QUARTO_VERSION=1.9.37 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/05/10/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/3.14.4.Dockerfile b/ver/3.14.4.Dockerfile new file mode 100644 index 0000000..4d2bbb3 --- /dev/null +++ b/ver/3.14.4.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.2.1 +ARG PYTHON_VERSION=3.14.4 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From fb940d9ae2193fd4431a99cad1fc82b36fdca1dc Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 15 May 2026 06:52:39 +0200 Subject: [PATCH 285/324] Update Python to v3.14.5 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index e8ad00a..6f2a526 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.2.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.4 \ + --build-arg PYTHON_VERSION=3.14.5 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index fa5b4cb..5fa161d 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.4 \ + --build-arg PYTHON_VERSION=3.14.5 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index c92cef0..ca80581 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.4" + PYTHON_VERSION: "3.14.5" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index b20726b..14b1c8e 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.4" + PYTHON_VERSION: "3.14.5" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index a72dcb0..c76a562 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.4" + PYTHON_VERSION: "3.14.5" CUDA_VERSION: "13.2.1" CUDNN_VERSION_AMD64: "9.22.0.52" CUDNN_VERSION_ARM64: "9.22.0.52" From 9e2bbaf38be1bee05c82fa6c598bd7461e5b27cf Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 2 Jun 2026 12:21:48 +0200 Subject: [PATCH 286/324] scipy: Update Quarto to v1.9.38 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index ed88751..fa6720b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.9.37 +ARG QUARTO_VERSION=1.9.38 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 005cf48996a0abffe7b502b01d93514b1a36b013 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 4 Jun 2026 05:52:06 +0200 Subject: [PATCH 287/324] CUDA images: Update cuDNN to v9.23.0.39 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 6f2a526..0b40308 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.22.0.52 \ + --build-arg CUDNN_VERSION=9.23.0.39 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ --build-arg NCCL_VERSION=2.30.4 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index c76a562..c2faef0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.5" CUDA_VERSION: "13.2.1" - CUDNN_VERSION_AMD64: "9.22.0.52" - CUDNN_VERSION_ARM64: "9.22.0.52" + CUDNN_VERSION_AMD64: "9.23.0.39" + CUDNN_VERSION_ARM64: "9.23.0.39" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" NCCL_VERSION_AMD64: "2.30.4" From 822777989f997d69c60c57b4aa049687ee72f588 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 11 Jun 2026 19:47:16 +0200 Subject: [PATCH 288/324] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 5fa161d..ec28c7e 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,11 @@ Multi-arch (`linux/amd64`, `linux/arm64/v8`) docker images: Images considered stable for Python versions ≥ 3.10.5. +Due to ongoing DDoS attacks, access to b-data's IT infrastructure has been +blocked for all Chinese servers. +:information_source: For any requests to unblock individual Chinese IPs or CIDR +blocks, please contact . + **Build chain** ver → base → scipy From d242777b34c4a2ba8e2f7d5be63fa4dc0f658fa4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 17 Jun 2026 11:33:40 +0200 Subject: [PATCH 289/324] CUDA images: Update CUDA to v13.3.0 - Update cuDNN to v9.23.2.1 - Update NCCL to v2.30.7 --- CUDA.md | 10 +++++----- ver/.gitlab-ci.yml | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CUDA.md b/CUDA.md index 0b40308..969cb88 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.2.1 \ + --build-arg CUDA_VERSION=13.3.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.5 \ -t cuda/python/ver \ @@ -73,10 +73,10 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.23.0.39 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.2 \ - --build-arg NCCL_VERSION=2.30.4 \ - --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.2 \ + --build-arg CUDNN_VERSION=9.23.2.1 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.3 \ + --build-arg NCCL_VERSION=2.30.7 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.3 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index c2faef0..a023012 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,14 +1,14 @@ variables: PYTHON_VERSION: "3.14.5" - CUDA_VERSION: "13.2.1" - CUDNN_VERSION_AMD64: "9.23.0.39" - CUDNN_VERSION_ARM64: "9.23.0.39" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" - NCCL_VERSION_AMD64: "2.30.4" - NCCL_VERSION_ARM64: "2.30.4" - NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.2" - NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.2" + CUDA_VERSION: "13.3.0" + CUDNN_VERSION_AMD64: "9.23.2.1" + CUDNN_VERSION_ARM64: "9.23.2.1" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" + NCCL_VERSION_AMD64: "2.30.7" + NCCL_VERSION_ARM64: "2.30.7" + NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" + NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From b3ac24829e273101dd14f10e2edb2bd759660a68 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 17 Jun 2026 18:37:30 +0200 Subject: [PATCH 290/324] Freeze Python v3.13.13 --- base/.gitlab-ci.yml | 2 +- base/3.13.13.Dockerfile | 4 ++-- cuda/3.13.13.Dockerfile | 12 ++++++------ scipy/.gitlab-ci.yml | 2 +- scipy/3.13.13.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 2 +- ver/3.13.13.Dockerfile | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ca80581..e4daf15 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.5" + PYTHON_VERSION: "3.13.13" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.13.13.Dockerfile b/base/3.13.13.Dockerfile index 5915028..2ab4fa1 100644 --- a/base/3.13.13.Dockerfile +++ b/base/3.13.13.Dockerfile @@ -2,8 +2,8 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.13.13 -ARG NEOVIM_VERSION=0.12.1 -ARG GIT_VERSION=2.53.0 +ARG NEOVIM_VERSION=0.12.2 +ARG GIT_VERSION=2.54.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 diff --git a/cuda/3.13.13.Dockerfile b/cuda/3.13.13.Dockerfile index 3ccb3b5..4580ed6 100644 --- a/cuda/3.13.13.Dockerfile +++ b/cuda/3.13.13.Dockerfile @@ -1,20 +1,20 @@ -ARG CUDNN_VERSION=9.20.0.48 +ARG CUDNN_VERSION=9.23.2.1 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} -ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.2 +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} -ARG NCCL_VERSION=2.29.7 +ARG NCCL_VERSION=2.30.7 ARG NCCL_VERSION_AMD64=${NCCL_VERSION} ARG NCCL_VERSION_ARM64=${NCCL_VERSION} -ARG NCCL_CUDA_VERSION_MAJ_MIN=13.2 +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} ## CUDA_IMAGE -## ├── nvidia/cuda:13.2.0-runtime-ubuntu24.04 -## └── nvidia/cuda:13.2.0-devel-ubuntu24.04 +## ├── nvidia/cuda:13.3.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.0-devel-ubuntu24.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 14b1c8e..c30f74f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.5" + PYTHON_VERSION: "3.13.13" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.13.Dockerfile b/scipy/3.13.13.Dockerfile index 93c27d0..c12b8c5 100644 --- a/scipy/3.13.13.Dockerfile +++ b/scipy/3.13.13.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.13 -ARG QUARTO_VERSION=1.9.36 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.9.38 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/06/10/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index a023012..1474e54 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.5" + PYTHON_VERSION: "3.13.13" CUDA_VERSION: "13.3.0" CUDNN_VERSION_AMD64: "9.23.2.1" CUDNN_VERSION_ARM64: "9.23.2.1" diff --git a/ver/3.13.13.Dockerfile b/ver/3.13.13.Dockerfile index e421264..5ed32e8 100644 --- a/ver/3.13.13.Dockerfile +++ b/ver/3.13.13.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=13.2.0 +ARG CUDA_VERSION=13.3.0 ARG PYTHON_VERSION=3.13.13 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From d59239538c6145ec809d4824f33a168ba49444a9 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 17 Jun 2026 19:09:06 +0200 Subject: [PATCH 291/324] Release Python v3.13.14 --- base/.gitlab-ci.yml | 4 +- base/3.13.14.Dockerfile | 109 ++++++++++++++++ cuda/3.13.14.Dockerfile | 270 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.14.Dockerfile | 138 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.14.Dockerfile | 93 ++++++++++++++ 7 files changed, 616 insertions(+), 6 deletions(-) create mode 100644 base/3.13.14.Dockerfile create mode 100644 cuda/3.13.14.Dockerfile create mode 100644 scipy/3.13.14.Dockerfile create mode 100644 ver/3.13.14.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index e4daf15..88910c0 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.13" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.14" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.14.Dockerfile b/base/3.13.14.Dockerfile new file mode 100644 index 0000000..9db84f5 --- /dev/null +++ b/base/3.13.14.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.14 +ARG NEOVIM_VERSION=0.12.3 +ARG GIT_VERSION=2.54.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.14.Dockerfile b/cuda/3.13.14.Dockerfile new file mode 100644 index 0000000..4580ed6 --- /dev/null +++ b/cuda/3.13.14.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.23.2.1 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index c30f74f..6c8cf1a 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.13" + PYTHON_VERSION: "3.13.14" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.14.Dockerfile b/scipy/3.13.14.Dockerfile new file mode 100644 index 0000000..447c811 --- /dev/null +++ b/scipy/3.13.14.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.14 +ARG QUARTO_VERSION=1.9.38 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 1474e54..6706ede 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.13" + PYTHON_VERSION: "3.13.14" CUDA_VERSION: "13.3.0" CUDNN_VERSION_AMD64: "9.23.2.1" CUDNN_VERSION_ARM64: "9.23.2.1" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.30.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.14.Dockerfile b/ver/3.13.14.Dockerfile new file mode 100644 index 0000000..aee36d9 --- /dev/null +++ b/ver/3.13.14.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.0 +ARG PYTHON_VERSION=3.13.14 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 43de91dbfc2f49a4099251bd65b1d7302777264d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 17 Jun 2026 19:44:55 +0200 Subject: [PATCH 292/324] Freeze Python v3.14.5 --- base/.gitlab-ci.yml | 4 +- base/3.14.5.Dockerfile | 109 ++++++++++++++++ cuda/3.14.5.Dockerfile | 270 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.5.Dockerfile | 133 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.5.Dockerfile | 93 ++++++++++++++ 7 files changed, 611 insertions(+), 6 deletions(-) create mode 100644 base/3.14.5.Dockerfile create mode 100644 cuda/3.14.5.Dockerfile create mode 100644 scipy/3.14.5.Dockerfile create mode 100644 ver/3.14.5.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 88910c0..ca80581 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.14" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.5" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.5.Dockerfile b/base/3.14.5.Dockerfile new file mode 100644 index 0000000..d0ae619 --- /dev/null +++ b/base/3.14.5.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.5 +ARG NEOVIM_VERSION=0.12.2 +ARG GIT_VERSION=2.54.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.8.3 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.5.Dockerfile b/cuda/3.14.5.Dockerfile new file mode 100644 index 0000000..4580ed6 --- /dev/null +++ b/cuda/3.14.5.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.23.2.1 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.0-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.0-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 6c8cf1a..14b1c8e 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.14" + PYTHON_VERSION: "3.14.5" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.5.Dockerfile b/scipy/3.14.5.Dockerfile new file mode 100644 index 0000000..ef433cf --- /dev/null +++ b/scipy/3.14.5.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.5 +ARG QUARTO_VERSION=1.9.38 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/06/10/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 6706ede..a023012 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.14" + PYTHON_VERSION: "3.14.5" CUDA_VERSION: "13.3.0" CUDNN_VERSION_AMD64: "9.23.2.1" CUDNN_VERSION_ARM64: "9.23.2.1" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.30.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.5.Dockerfile b/ver/3.14.5.Dockerfile new file mode 100644 index 0000000..b965786 --- /dev/null +++ b/ver/3.14.5.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.0 +ARG PYTHON_VERSION=3.14.5 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 6f63b9738c6a5ba56ae7d198ca97b84b69cc91a1 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 17 Jun 2026 20:06:58 +0200 Subject: [PATCH 293/324] Update Python to v3.14.6 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 969cb88..ff99994 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.3.0 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.5 \ + --build-arg PYTHON_VERSION=3.14.6 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index ec28c7e..be8a95b 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.5 \ + --build-arg PYTHON_VERSION=3.14.6 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index ca80581..0416024 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.5" + PYTHON_VERSION: "3.14.6" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 14b1c8e..72f948f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.5" + PYTHON_VERSION: "3.14.6" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index a023012..cd6c618 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.5" + PYTHON_VERSION: "3.14.6" CUDA_VERSION: "13.3.0" CUDNN_VERSION_AMD64: "9.23.2.1" CUDNN_VERSION_ARM64: "9.23.2.1" From f625ec79f6e7ec78034880c3b0ebb3d0e64ca013 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 17 Jun 2026 20:36:46 +0200 Subject: [PATCH 294/324] base: Update Neovim to v0.12.3 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 01d4fcb..6595a17 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.12.2 +ARG NEOVIM_VERSION=0.12.3 ARG GIT_VERSION=2.54.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From d92f1b51a6bd4f532852b79836ed79b506fd7647 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Tue, 30 Jun 2026 09:46:47 +0200 Subject: [PATCH 295/324] base: Update Git to v2.55.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 6595a17..d18895f 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.12.3 -ARG GIT_VERSION=2.54.0 +ARG GIT_VERSION=2.55.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From e88ffd6fb70d7a3b867421c11dbcf16855fdf7af Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 6 Jul 2026 06:55:16 +0200 Subject: [PATCH 296/324] base: Update Neovim to v0.12.4 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index d18895f..48de7be 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.12.3 +ARG NEOVIM_VERSION=0.12.4 ARG GIT_VERSION=2.55.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.8.3 From f2cabf3b1b35ffe514771c397ee1144aeeef43b2 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 9 Jul 2026 23:17:42 +0200 Subject: [PATCH 297/324] CUDA images: Update cuDNN to v9.24.0.43 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index ff99994..6f910c1 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.23.2.1 \ + --build-arg CUDNN_VERSION=9.24.0.43 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.3 \ --build-arg NCCL_VERSION=2.30.7 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.3 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index cd6c618..47f7b46 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.6" CUDA_VERSION: "13.3.0" - CUDNN_VERSION_AMD64: "9.23.2.1" - CUDNN_VERSION_ARM64: "9.23.2.1" + CUDNN_VERSION_AMD64: "9.24.0.43" + CUDNN_VERSION_ARM64: "9.24.0.43" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" NCCL_VERSION_AMD64: "2.30.7" From 82a24e28b9420e0844366b386bc61518477efe56 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 23 Jul 2026 05:27:41 +0200 Subject: [PATCH 298/324] CUDA images: Update cuDNN to v9.25.0.15 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 6f910c1..9143173 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.24.0.43 \ + --build-arg CUDNN_VERSION=9.25.0.15 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.3 \ --build-arg NCCL_VERSION=2.30.7 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.3 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 47f7b46..58c09f3 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.6" CUDA_VERSION: "13.3.0" - CUDNN_VERSION_AMD64: "9.24.0.43" - CUDNN_VERSION_ARM64: "9.24.0.43" + CUDNN_VERSION_AMD64: "9.25.0.15" + CUDNN_VERSION_ARM64: "9.25.0.15" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" NCCL_VERSION_AMD64: "2.30.7" From 5b4886c9cb2501a6d911ea511ca8100d9c574e9b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 25 Jul 2026 08:14:42 +0200 Subject: [PATCH 299/324] scipy: Update Quarto to v1.10.18 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index fa6720b..f928cc4 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.9.38 +ARG QUARTO_VERSION=1.10.18 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 9238d804f545591518ff35891a5ad3d74740349e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 25 Jul 2026 08:15:43 +0200 Subject: [PATCH 300/324] base: Update Pandoc to v3.10 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 48de7be..9a139e3 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -5,7 +5,7 @@ ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.12.4 ARG GIT_VERSION=2.55.0 ARG GIT_LFS_VERSION=3.7.1 -ARG PANDOC_VERSION=3.8.3 +ARG PANDOC_VERSION=3.10 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi From b32250a21009003ebbe058204c840bbf8ef665f4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 30 Jul 2026 08:34:47 +0200 Subject: [PATCH 301/324] CUDA images: Update CUDA to v13.3.1 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index 9143173..4daa35f 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.3.0 \ + --build-arg CUDA_VERSION=13.3.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.6 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 58c09f3..54e996a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: PYTHON_VERSION: "3.14.6" - CUDA_VERSION: "13.3.0" + CUDA_VERSION: "13.3.1" CUDNN_VERSION_AMD64: "9.25.0.15" CUDNN_VERSION_ARM64: "9.25.0.15" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" From 01752b5ac5d35aebbf97033d0d9d5f37910754d3 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 12 Aug 2026 16:36:07 +0200 Subject: [PATCH 302/324] Freeze Python v3.13.14 --- base/.gitlab-ci.yml | 2 +- base/3.13.14.Dockerfile | 6 +++--- cuda/3.13.14.Dockerfile | 6 +++--- scipy/.gitlab-ci.yml | 2 +- scipy/3.13.14.Dockerfile | 4 ++-- ver/.gitlab-ci.yml | 2 +- ver/3.13.14.Dockerfile | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 0416024..edefec6 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.6" + PYTHON_VERSION: "3.13.14" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.13.14.Dockerfile b/base/3.13.14.Dockerfile index 9db84f5..66b1046 100644 --- a/base/3.13.14.Dockerfile +++ b/base/3.13.14.Dockerfile @@ -2,10 +2,10 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.13.14 -ARG NEOVIM_VERSION=0.12.3 -ARG GIT_VERSION=2.54.0 +ARG NEOVIM_VERSION=0.12.4 +ARG GIT_VERSION=2.55.0 ARG GIT_LFS_VERSION=3.7.1 -ARG PANDOC_VERSION=3.8.3 +ARG PANDOC_VERSION=3.10 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi diff --git a/cuda/3.13.14.Dockerfile b/cuda/3.13.14.Dockerfile index 4580ed6..6ec10e3 100644 --- a/cuda/3.13.14.Dockerfile +++ b/cuda/3.13.14.Dockerfile @@ -1,4 +1,4 @@ -ARG CUDNN_VERSION=9.23.2.1 +ARG CUDNN_VERSION=9.25.0.15 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 @@ -13,8 +13,8 @@ ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} ## CUDA_IMAGE -## ├── nvidia/cuda:13.3.0-runtime-ubuntu24.04 -## └── nvidia/cuda:13.3.0-devel-ubuntu24.04 +## ├── nvidia/cuda:13.3.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.1-devel-ubuntu24.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 72f948f..6f73f00 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.6" + PYTHON_VERSION: "3.13.14" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.14.Dockerfile b/scipy/3.13.14.Dockerfile index 447c811..773c3ef 100644 --- a/scipy/3.13.14.Dockerfile +++ b/scipy/3.13.14.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.14 -ARG QUARTO_VERSION=1.9.38 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/08/05/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 54e996a..986e9c4 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.6" + PYTHON_VERSION: "3.13.14" CUDA_VERSION: "13.3.1" CUDNN_VERSION_AMD64: "9.25.0.15" CUDNN_VERSION_ARM64: "9.25.0.15" diff --git a/ver/3.13.14.Dockerfile b/ver/3.13.14.Dockerfile index aee36d9..85a0f2c 100644 --- a/ver/3.13.14.Dockerfile +++ b/ver/3.13.14.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=13.3.0 +ARG CUDA_VERSION=13.3.1 ARG PYTHON_VERSION=3.13.14 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From fada1c0ae1b256e4ec378cf2b289f6fffa9e35c7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 12 Aug 2026 17:04:26 +0200 Subject: [PATCH 303/324] Release Python v3.13.15 --- base/.gitlab-ci.yml | 4 +- base/3.13.15.Dockerfile | 109 ++++++++++++++++ cuda/3.13.15.Dockerfile | 270 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.15.Dockerfile | 138 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.15.Dockerfile | 93 ++++++++++++++ 7 files changed, 616 insertions(+), 6 deletions(-) create mode 100644 base/3.13.15.Dockerfile create mode 100644 cuda/3.13.15.Dockerfile create mode 100644 scipy/3.13.15.Dockerfile create mode 100644 ver/3.13.15.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index edefec6..dc9a7b9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.14" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.15" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.15.Dockerfile b/base/3.13.15.Dockerfile new file mode 100644 index 0000000..0abab5b --- /dev/null +++ b/base/3.13.15.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.15 +ARG NEOVIM_VERSION=0.12.4 +ARG GIT_VERSION=2.55.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.15.Dockerfile b/cuda/3.13.15.Dockerfile new file mode 100644 index 0000000..6ec10e3 --- /dev/null +++ b/cuda/3.13.15.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.25.0.15 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 6f73f00..9953dc0 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.14" + PYTHON_VERSION: "3.13.15" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.15.Dockerfile b/scipy/3.13.15.Dockerfile new file mode 100644 index 0000000..c157458 --- /dev/null +++ b/scipy/3.13.15.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.15 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 986e9c4..17f14cf 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.14" + PYTHON_VERSION: "3.13.15" CUDA_VERSION: "13.3.1" CUDNN_VERSION_AMD64: "9.25.0.15" CUDNN_VERSION_ARM64: "9.25.0.15" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.30.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.15.Dockerfile b/ver/3.13.15.Dockerfile new file mode 100644 index 0000000..0e1cb0a --- /dev/null +++ b/ver/3.13.15.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.1 +ARG PYTHON_VERSION=3.13.15 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 21094db23a05d9954e1a0daf41d437c554133b7a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 12 Aug 2026 20:14:32 +0200 Subject: [PATCH 304/324] Freeze Python v3.14.6 --- base/.gitlab-ci.yml | 4 +- base/3.14.6.Dockerfile | 109 ++++++++++++++++ cuda/3.14.6.Dockerfile | 270 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.6.Dockerfile | 133 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.6.Dockerfile | 93 ++++++++++++++ 7 files changed, 611 insertions(+), 6 deletions(-) create mode 100644 base/3.14.6.Dockerfile create mode 100644 cuda/3.14.6.Dockerfile create mode 100644 scipy/3.14.6.Dockerfile create mode 100644 ver/3.14.6.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index dc9a7b9..0416024 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.15" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.6" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.6.Dockerfile b/base/3.14.6.Dockerfile new file mode 100644 index 0000000..7d4cee1 --- /dev/null +++ b/base/3.14.6.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.6 +ARG NEOVIM_VERSION=0.12.4 +ARG GIT_VERSION=2.55.0 +ARG GIT_LFS_VERSION=3.7.1 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.6.Dockerfile b/cuda/3.14.6.Dockerfile new file mode 100644 index 0000000..6ec10e3 --- /dev/null +++ b/cuda/3.14.6.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.25.0.15 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.3.1-runtime-ubuntu24.04 +## └── nvidia/cuda:13.3.1-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 9953dc0..72f948f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.15" + PYTHON_VERSION: "3.14.6" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.6.Dockerfile b/scipy/3.14.6.Dockerfile new file mode 100644 index 0000000..4a77969 --- /dev/null +++ b/scipy/3.14.6.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.6 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/08/05/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 17f14cf..54e996a 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.15" + PYTHON_VERSION: "3.14.6" CUDA_VERSION: "13.3.1" CUDNN_VERSION_AMD64: "9.25.0.15" CUDNN_VERSION_ARM64: "9.25.0.15" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.30.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.6.Dockerfile b/ver/3.14.6.Dockerfile new file mode 100644 index 0000000..ddccfdd --- /dev/null +++ b/ver/3.14.6.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.3.1 +ARG PYTHON_VERSION=3.14.6 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From c41eb56960ae3060251028da6af81b179d2eb432 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 12 Aug 2026 20:48:46 +0200 Subject: [PATCH 305/324] Update Python to v3.14.7 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index 4daa35f..1dea9ea 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.3.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.6 \ + --build-arg PYTHON_VERSION=3.14.7 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index be8a95b..9fe80df 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.6 \ + --build-arg PYTHON_VERSION=3.14.7 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 0416024..a2b814a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.6" + PYTHON_VERSION: "3.14.7" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 72f948f..e266fc4 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.6" + PYTHON_VERSION: "3.14.7" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 54e996a..fcc441d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.6" + PYTHON_VERSION: "3.14.7" CUDA_VERSION: "13.3.1" CUDNN_VERSION_AMD64: "9.25.0.15" CUDNN_VERSION_ARM64: "9.25.0.15" From b74d10be94ceda78e2b1af92263d048c5ef5f4a4 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 13 Aug 2026 13:02:17 +0200 Subject: [PATCH 306/324] CUDA images: Update NCCL to v2.31.2 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 1dea9ea..a72618b 100644 --- a/CUDA.md +++ b/CUDA.md @@ -75,7 +75,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.25.0.15 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.3 \ - --build-arg NCCL_VERSION=2.30.7 \ + --build-arg NCCL_VERSION=2.31.2 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.3 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index fcc441d..3576699 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ variables: CUDNN_VERSION_ARM64: "9.25.0.15" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - NCCL_VERSION_AMD64: "2.30.7" - NCCL_VERSION_ARM64: "2.30.7" + NCCL_VERSION_AMD64: "2.31.2" + NCCL_VERSION_ARM64: "2.31.2" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" TAG_VERSION_MAJ_MIN: "false" From 33f8237ddf24f1781919c21ce8e9136db6884336 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 14 Aug 2026 06:09:47 +0200 Subject: [PATCH 307/324] Revert "CUDA images: Update NCCL to v2.31.2" This reverts commit b74d10be94ceda78e2b1af92263d048c5ef5f4a4. --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index a72618b..1dea9ea 100644 --- a/CUDA.md +++ b/CUDA.md @@ -75,7 +75,7 @@ docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ --build-arg CUDNN_VERSION=9.25.0.15 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.3 \ - --build-arg NCCL_VERSION=2.31.2 \ + --build-arg NCCL_VERSION=2.30.7 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.3 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 3576699..fcc441d 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,8 +5,8 @@ variables: CUDNN_VERSION_ARM64: "9.25.0.15" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - NCCL_VERSION_AMD64: "2.31.2" - NCCL_VERSION_ARM64: "2.31.2" + NCCL_VERSION_AMD64: "2.30.7" + NCCL_VERSION_ARM64: "2.30.7" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" TAG_VERSION_MAJ_MIN: "false" From be8ed5219a3748490ca4bd883b8d774717afd978 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 24 Aug 2026 12:14:05 +0200 Subject: [PATCH 308/324] base: Update Neovim to v0.12.5 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 9a139e3..2e44245 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.12.4 +ARG NEOVIM_VERSION=0.12.5 ARG GIT_VERSION=2.55.0 ARG GIT_LFS_VERSION=3.7.1 ARG PANDOC_VERSION=3.10 From 8ca134618710bfb8e4800e7d6de3992b61378219 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 28 Aug 2026 12:24:00 +0200 Subject: [PATCH 309/324] Revert "Update README.md" This reverts commit 822777989f997d69c60c57b4aa049687ee72f588. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 9fe80df..8f5c3d7 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,6 @@ Multi-arch (`linux/amd64`, `linux/arm64/v8`) docker images: Images considered stable for Python versions ≥ 3.10.5. -Due to ongoing DDoS attacks, access to b-data's IT infrastructure has been -blocked for all Chinese servers. -:information_source: For any requests to unblock individual Chinese IPs or CIDR -blocks, please contact . - **Build chain** ver → base → scipy From 06745cfb1f2cdccf3de684764959a2b3fb2e735d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 14 Sep 2026 18:05:05 +0200 Subject: [PATCH 310/324] base: Update Git LFS to v3.8.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index 2e44245..ec51ab6 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -4,7 +4,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.12.5 ARG GIT_VERSION=2.55.0 -ARG GIT_LFS_VERSION=3.7.1 +ARG GIT_LFS_VERSION=3.8.0 ARG PANDOC_VERSION=3.10 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi From 2d2d55268836a3c44a50693aa092efb0cef95572 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 21 Sep 2026 06:43:37 +0200 Subject: [PATCH 311/324] CUDA images: Update CUDA to v13.4.1 - Update cuDNN to v9.26.0.51 - Update NCCL to v2.31.2 --- CUDA.md | 10 +++++----- ver/.gitlab-ci.yml | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CUDA.md b/CUDA.md index 1dea9ea..c7787fd 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.3.1 \ + --build-arg CUDA_VERSION=13.4.1 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.7 \ -t cuda/python/ver \ @@ -73,10 +73,10 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.25.0.15 \ - --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.3 \ - --build-arg NCCL_VERSION=2.30.7 \ - --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.3 \ + --build-arg CUDNN_VERSION=9.26.0.51 \ + --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.4 \ + --build-arg NCCL_VERSION=2.31.2 \ + --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.4 \ --build-arg CUDA_IMAGE_FLAVOR=runtime \ -t cuda/python/ver \ -f cuda/latest.Dockerfile . diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index fcc441d..eb9ea9f 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,14 +1,14 @@ variables: PYTHON_VERSION: "3.14.7" - CUDA_VERSION: "13.3.1" - CUDNN_VERSION_AMD64: "9.25.0.15" - CUDNN_VERSION_ARM64: "9.25.0.15" - CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" - CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" - NCCL_VERSION_AMD64: "2.30.7" - NCCL_VERSION_ARM64: "2.30.7" - NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.3" - NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.3" + CUDA_VERSION: "13.4.1" + CUDNN_VERSION_AMD64: "9.26.0.51" + CUDNN_VERSION_ARM64: "9.26.0.51" + CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" + CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" + NCCL_VERSION_AMD64: "2.31.2" + NCCL_VERSION_ARM64: "2.31.2" + NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" + NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From 21438ef6a0337cb91c899fd5627ea15a7b50c516 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 1 Oct 2026 18:10:42 +0200 Subject: [PATCH 312/324] CUDA images: Update CUDA to v13.4.2 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUDA.md b/CUDA.md index c7787fd..608b29c 100644 --- a/CUDA.md +++ b/CUDA.md @@ -61,7 +61,7 @@ docker build \ --build-arg BASE_IMAGE=ubuntu \ --build-arg BASE_IMAGE_TAG=24.04 \ --build-arg CUDA_IMAGE=nvidia/cuda \ - --build-arg CUDA_VERSION=13.4.1 \ + --build-arg CUDA_VERSION=13.4.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ --build-arg PYTHON_VERSION=3.14.7 \ -t cuda/python/ver \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index eb9ea9f..ed103f1 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: PYTHON_VERSION: "3.14.7" - CUDA_VERSION: "13.4.1" + CUDA_VERSION: "13.4.2" CUDNN_VERSION_AMD64: "9.26.0.51" CUDNN_VERSION_ARM64: "9.26.0.51" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" From f32df1cc8c07e57b955344f9efb86bcef54827bd Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 1 Oct 2026 18:11:06 +0200 Subject: [PATCH 313/324] base: Update Git to v2.56.0 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index ec51ab6..bcb7e3d 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION ARG NEOVIM_VERSION=0.12.5 -ARG GIT_VERSION=2.55.0 +ARG GIT_VERSION=2.56.0 ARG GIT_LFS_VERSION=3.8.0 ARG PANDOC_VERSION=3.10 From 5329a17e9ee206ef4cb5b01ee8bbe4b52253afab Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 2 Oct 2026 10:16:06 +0200 Subject: [PATCH 314/324] CUDA images: Update cuDNN to v9.27.0.42 --- CUDA.md | 2 +- ver/.gitlab-ci.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CUDA.md b/CUDA.md index 608b29c..edb9afc 100644 --- a/CUDA.md +++ b/CUDA.md @@ -73,7 +73,7 @@ docker build \ ```bash docker build \ --build-arg BUILD_ON_IMAGE=cuda/python/ver \ - --build-arg CUDNN_VERSION=9.26.0.51 \ + --build-arg CUDNN_VERSION=9.27.0.42 \ --build-arg CUDNN_CUDA_VERSION_MAJ_MIN=13.4 \ --build-arg NCCL_VERSION=2.31.2 \ --build-arg NCCL_CUDA_VERSION_MAJ_MIN=13.4 \ diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index ed103f1..69cf6c0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,8 +1,8 @@ variables: PYTHON_VERSION: "3.14.7" CUDA_VERSION: "13.4.2" - CUDNN_VERSION_AMD64: "9.26.0.51" - CUDNN_VERSION_ARM64: "9.26.0.51" + CUDNN_VERSION_AMD64: "9.27.0.42" + CUDNN_VERSION_ARM64: "9.27.0.42" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" NCCL_VERSION_AMD64: "2.31.2" From 44890eb21232dc22e803dd212a39301b6cc8cd63 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 2 Oct 2026 10:25:43 +0200 Subject: [PATCH 315/324] Freeze Python v3.13.15 --- base/.gitlab-ci.yml | 2 +- base/3.13.15.Dockerfile | 6 +++--- cuda/3.13.15.Dockerfile | 12 ++++++------ scipy/.gitlab-ci.yml | 2 +- scipy/3.13.15.Dockerfile | 2 +- ver/.gitlab-ci.yml | 2 +- ver/3.13.15.Dockerfile | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index a2b814a..5e99063 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.7" + PYTHON_VERSION: "3.13.15" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/base/3.13.15.Dockerfile b/base/3.13.15.Dockerfile index 0abab5b..711bc6d 100644 --- a/base/3.13.15.Dockerfile +++ b/base/3.13.15.Dockerfile @@ -2,9 +2,9 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION=3.13.15 -ARG NEOVIM_VERSION=0.12.4 -ARG GIT_VERSION=2.55.0 -ARG GIT_LFS_VERSION=3.7.1 +ARG NEOVIM_VERSION=0.12.5 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 ARG PANDOC_VERSION=3.10 FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi diff --git a/cuda/3.13.15.Dockerfile b/cuda/3.13.15.Dockerfile index 6ec10e3..8977502 100644 --- a/cuda/3.13.15.Dockerfile +++ b/cuda/3.13.15.Dockerfile @@ -1,20 +1,20 @@ -ARG CUDNN_VERSION=9.25.0.15 +ARG CUDNN_VERSION=9.27.0.42 ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} -ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.3 +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.4 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} -ARG NCCL_VERSION=2.30.7 +ARG NCCL_VERSION=2.31.2 ARG NCCL_VERSION_AMD64=${NCCL_VERSION} ARG NCCL_VERSION_ARM64=${NCCL_VERSION} -ARG NCCL_CUDA_VERSION_MAJ_MIN=13.3 +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.4 ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} ## CUDA_IMAGE -## ├── nvidia/cuda:13.3.1-runtime-ubuntu24.04 -## └── nvidia/cuda:13.3.1-devel-ubuntu24.04 +## ├── nvidia/cuda:13.4.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.4.2-devel-ubuntu24.04 ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e266fc4..0ae59b6 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.7" + PYTHON_VERSION: "3.13.15" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/3.13.15.Dockerfile b/scipy/3.13.15.Dockerfile index c157458..3171cff 100644 --- a/scipy/3.13.15.Dockerfile +++ b/scipy/3.13.15.Dockerfile @@ -1,7 +1,7 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION=3.13.15 ARG QUARTO_VERSION=1.10.18 -ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/09/30/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 69cf6c0..6d9a401 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.7" + PYTHON_VERSION: "3.13.15" CUDA_VERSION: "13.4.2" CUDNN_VERSION_AMD64: "9.27.0.42" CUDNN_VERSION_ARM64: "9.27.0.42" diff --git a/ver/3.13.15.Dockerfile b/ver/3.13.15.Dockerfile index 0e1cb0a..ca92d99 100644 --- a/ver/3.13.15.Dockerfile +++ b/ver/3.13.15.Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE_TAG=13 ARG CUDA_IMAGE ARG CUDA_IMAGE_SUBTAG ARG BLAS=libopenblas-dev -ARG CUDA_VERSION=13.3.1 +ARG CUDA_VERSION=13.4.2 ARG PYTHON_VERSION=3.13.15 FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi From bf17f24f62f12ea744bed9c509cabf1c9564874e Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 2 Oct 2026 10:56:17 +0200 Subject: [PATCH 316/324] Release Python v3.13.16 --- base/.gitlab-ci.yml | 4 +- base/3.13.16.Dockerfile | 109 ++++++++++++++++ cuda/3.13.16.Dockerfile | 270 +++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.13.16.Dockerfile | 138 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.13.16.Dockerfile | 93 ++++++++++++++ 7 files changed, 616 insertions(+), 6 deletions(-) create mode 100644 base/3.13.16.Dockerfile create mode 100644 cuda/3.13.16.Dockerfile create mode 100644 scipy/3.13.16.Dockerfile create mode 100644 ver/3.13.16.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 5e99063..89dcb03 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.15" - TAG_VERSION_MAJ_MIN: "false" + PYTHON_VERSION: "3.13.16" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.13.16.Dockerfile b/base/3.13.16.Dockerfile new file mode 100644 index 0000000..fa9f1a1 --- /dev/null +++ b/base/3.13.16.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.13.16 +ARG NEOVIM_VERSION=0.12.5 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.13.16.Dockerfile b/cuda/3.13.16.Dockerfile new file mode 100644 index 0000000..8977502 --- /dev/null +++ b/cuda/3.13.16.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.27.0.42 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.4 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.31.2 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.4 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.4.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.4.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index 0ae59b6..d2eabc9 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.15" + PYTHON_VERSION: "3.13.16" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.13.16.Dockerfile b/scipy/3.13.16.Dockerfile new file mode 100644 index 0000000..14b1405 --- /dev/null +++ b/scipy/3.13.16.Dockerfile @@ -0,0 +1,138 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.13.16 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Install facets + #&& cd /tmp \ + #&& git clone https://github.com/PAIR-code/facets.git \ + #&& jupyter nbextension install facets/facets-dist/ --sys-prefix \ + #&& cd / \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 6d9a401..50e9688 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.15" + PYTHON_VERSION: "3.13.16" CUDA_VERSION: "13.4.2" CUDNN_VERSION_AMD64: "9.27.0.42" CUDNN_VERSION_ARM64: "9.27.0.42" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.31.2" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" - TAG_VERSION_MAJ_MIN: "false" + TAG_VERSION_MAJ_MIN: "true" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.13.16.Dockerfile b/ver/3.13.16.Dockerfile new file mode 100644 index 0000000..856a66b --- /dev/null +++ b/ver/3.13.16.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.4.2 +ARG PYTHON_VERSION=3.13.16 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 5181eea5f77b942b6195a93e1c85f7e5827afae7 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 2 Oct 2026 11:39:03 +0200 Subject: [PATCH 317/324] Freeze Python v3.14.7 --- base/.gitlab-ci.yml | 4 +- base/3.14.7.Dockerfile | 109 ++++++++++++++++ cuda/3.14.7.Dockerfile | 270 ++++++++++++++++++++++++++++++++++++++++ scipy/.gitlab-ci.yml | 4 +- scipy/3.14.7.Dockerfile | 133 ++++++++++++++++++++ ver/.gitlab-ci.yml | 4 +- ver/3.14.7.Dockerfile | 93 ++++++++++++++ 7 files changed, 611 insertions(+), 6 deletions(-) create mode 100644 base/3.14.7.Dockerfile create mode 100644 cuda/3.14.7.Dockerfile create mode 100644 scipy/3.14.7.Dockerfile create mode 100644 ver/3.14.7.Dockerfile diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 89dcb03..a2b814a 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: - PYTHON_VERSION: "3.13.16" - TAG_VERSION_MAJ_MIN: "true" + PYTHON_VERSION: "3.14.7" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/base/3.14.7.Dockerfile b/base/3.14.7.Dockerfile new file mode 100644 index 0000000..121c2fc --- /dev/null +++ b/base/3.14.7.Dockerfile @@ -0,0 +1,109 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver +ARG PYTHON_VERSION=3.14.7 +ARG NEOVIM_VERSION=0.12.5 +ARG GIT_VERSION=2.56.0 +ARG GIT_LFS_VERSION=3.8.0 +ARG PANDOC_VERSION=3.10 + +FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi +FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi +FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BUILD_ON_IMAGE +ARG NEOVIM_VERSION +ARG GIT_VERSION +ARG GIT_LFS_VERSION +ARG PANDOC_VERSION +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + NEOVIM_VERSION=${NEOVIM_VERSION} \ + GIT_VERSION=${GIT_VERSION} \ + GIT_LFS_VERSION=${GIT_LFS_VERSION} \ + PANDOC_VERSION=${PANDOC_VERSION} \ + BUILD_DATE=${BUILD_START} + +## Install Neovim +COPY --from=nvsi /usr/local /usr/local +## Install Git +COPY --from=gsi /usr/local /usr/local +## Install Git LFS +COPY --from=glfsi /usr/local /usr/local + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get -y install --no-install-recommends \ + bash-completion \ + build-essential \ + curl \ + file \ + fontconfig \ + g++ \ + gcc \ + gfortran \ + gnupg \ + htop \ + info \ + jq \ + libclang-dev \ + man-db \ + nano \ + ncdu \ + procps \ + psmisc \ + screen \ + sudo \ + swig \ + tmux \ + vim-tiny \ + wget \ + zsh \ + ## Neovim: Additional runtime recommendations + ripgrep \ + ## Git: Additional runtime dependencies + libcurl3-gnutls \ + liberror-perl \ + ## Git: Additional runtime recommendations + less \ + ssh-client \ + ## Python: Additional dev dependencies + && if [ -z "$PYTHON_VERSION" ]; then \ + apt-get -y install --no-install-recommends \ + python3-dev \ + ## Install Python package installer + ## (dep: python3-distutils, python3-setuptools and python3-wheel) + python3-pip \ + ## Install venv module for python3 + python3-venv; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + else \ + ## Force update pip + pip install --upgrade --force-reinstall pip; \ + fi \ + ## Git: Set default branch name to main + && git config --system init.defaultBranch main \ + ## Git: Store passwords for one hour in memory + && git config --system credential.helper "cache --timeout=3600" \ + ## Git: Merge the default branch from the default remote when "git pull" is run + && git config --system pull.rebase false \ + ## Install pandoc + && curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + && rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache diff --git a/cuda/3.14.7.Dockerfile b/cuda/3.14.7.Dockerfile new file mode 100644 index 0000000..8977502 --- /dev/null +++ b/cuda/3.14.7.Dockerfile @@ -0,0 +1,270 @@ +ARG CUDNN_VERSION=9.27.0.42 +ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION} +ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION} +ARG CUDNN_CUDA_VERSION_MAJ_MIN=13.4 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} + +ARG NCCL_VERSION=2.31.2 +ARG NCCL_VERSION_AMD64=${NCCL_VERSION} +ARG NCCL_VERSION_ARM64=${NCCL_VERSION} +ARG NCCL_CUDA_VERSION_MAJ_MIN=13.4 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} + +## CUDA_IMAGE +## ├── nvidia/cuda:13.4.2-runtime-ubuntu24.04 +## └── nvidia/cuda:13.4.2-devel-ubuntu24.04 +ARG BUILD_ON_IMAGE +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} +ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}} +ARG CUDA_IMAGE_FLAVOR + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 + +ARG CUDNN_VERSION_AMD64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 + +ARG NCCL_VERSION_AMD64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" + +FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 + +ARG CUDNN_VERSION_ARM64 +ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 + +ARG NCCL_VERSION_ARM64 +ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 + +LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" + +ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_HEADERS_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} +ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_HEADERS_PACKAGE_NAME=libcudnn${NV_CUDNN_HEADERS_PACKAGE_VERSION%%.*}-headers-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} +ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" +ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" +ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" + +ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 +ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev +ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} +ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" + +FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG CUDA_HOME=/usr/local/cuda +ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf + +ARG CUDA_IMAGE_FLAVOR +ARG CUPTI_AVAILABLE +ARG BUILD_START + +ENV CUDA_HOME=${CUDA_HOME} \ + NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \ + BUILD_DATE=${BUILD_START} + +RUN cpuBlasLib="$(update-alternatives --query \ + libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \ + && dpkgArch="$(dpkg --print-architecture)" \ + && CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \ + ## Install the CUDA Runtime native dev links, headers + && apt-get update \ + && apt-get -y install --no-install-recommends \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \ + ## Keep apt from auto upgrading the CUDA Runtime packages + && apt-mark hold \ + cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \ + cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \ + ## Unminimise if the system has been minimised + && if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \ + sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \ + yes | unminimize; \ + sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \ + fi \ + ## NVBLAS log configuration + && touch /var/log/nvblas.log \ + && chown :users /var/log/nvblas.log \ + && chmod g+rw /var/log/nvblas.log \ + ## NVBLAS configuration using all compute-capable GPUs + && echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \ + && echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \ + ## Install cuDNN + && apt-get -y install --no-install-recommends \ + ${NV_CUDNN_PACKAGE} \ + ${NV_CUDNN_DEV_PACKAGE} \ + ${NV_CUDNN_HEADERS_PACKAGE} \ + ## Keep apt from auto upgrading the cuDNN packages + && apt-mark hold \ + ${NV_CUDNN_PACKAGE_NAME} \ + ${NV_CUDNN_DEV_PACKAGE_NAME} \ + ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ + ## Install NCCL + && apt-get -y install --no-install-recommends \ + ${NV_LIBNCCL_PACKAGE} \ + ${NV_LIBNCCL_DEV_PACKAGE} \ + ## Keep apt from auto upgrading the NCCL package + && apt-mark hold \ + ${NV_LIBNCCL_PACKAGE_NAME} \ + ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ + ## Clean up + && rm -rf /var/lib/apt/lists/* diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index d2eabc9..e266fc4 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,7 +1,7 @@ variables: - PYTHON_VERSION: "3.13.16" + PYTHON_VERSION: "3.14.7" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" .before-script-build: &before-script-build diff --git a/scipy/3.14.7.Dockerfile b/scipy/3.14.7.Dockerfile new file mode 100644 index 0000000..82d9273 --- /dev/null +++ b/scipy/3.14.7.Dockerfile @@ -0,0 +1,133 @@ +ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base +ARG PYTHON_VERSION=3.14.7 +ARG QUARTO_VERSION=1.10.18 +ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2026/09/30/tlnet + +FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG NB_GID=100 + +ARG BUILD_ON_IMAGE +ARG QUARTO_VERSION +ARG CTAN_REPO +ARG CTAN_REPO_BUILD_LATEST +ARG BUILD_START + +ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \ + QUARTO_VERSION=${QUARTO_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH + +RUN dpkgArch="$(dpkg --print-architecture)" \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + fonts-roboto \ + ghostscript \ + librsvg2-bin \ + qpdf \ + texinfo \ + ## Python: For h5py wheels (arm64) + libhdf5-dev \ + ## Install quarto + && curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + && mkdir -p /opt/quarto \ + && tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \ + && rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \ + ## Exempt quarto from address space limit + && sed -i 's/"${QUARTO_DENO}"/prlimit --as=unlimited: "${QUARTO_DENO}"/g' \ + /opt/quarto/bin/quarto \ + ## Remove quarto pandoc + && rm /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Link to system pandoc + && ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \ + ## Tell APT about the TeX Live installation + ## by building a dummy package using equivs + && apt-get install -y --no-install-recommends equivs \ + && cd /tmp \ + && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ + && equivs-build debian-* \ + && mv texlive-local*.deb texlive-local.deb \ + && dpkg -i texlive-local.deb \ + && apt-get -y purge equivs \ + && apt-get -y autoremove \ + ## Admin-based install of TinyTeX + && CTAN_REPO_ORIG=${CTAN_REPO} \ + && CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \ + && export CTAN_REPO \ + && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ + | sh -s - --admin --no-path \ + && mv ${HOME}/.TinyTeX /opt/TinyTeX \ + && sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \ + /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ + /opt/TinyTeX/bin/linux \ + && /opt/TinyTeX/bin/linux/tlmgr path add \ + && tlmgr update --self \ + ## TeX packages as requested by the community + && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ + && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ + && rm -f pkgs-yihui.txt \ + ## TeX packages as in rocker/verse + && tlmgr install \ + context \ + pdfcrop \ + ## TeX packages as in jupyter/scipy-notebook + && tlmgr install \ + cm-super \ + dvipng \ + ## TeX packages specific for nbconvert + && tlmgr install \ + oberdiek \ + titling \ + && tlmgr path add \ + && tlmgr option repository ${CTAN_REPO_ORIG} \ + && chown -R root:${NB_GID} /opt/TinyTeX \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \ + ## Make the TeX Live fonts available as system fonts + && cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \ + /etc/fonts/conf.d/09-texlive.conf \ + && fc-cache -fsv \ + ## Install Python packages + && export PIP_BREAK_SYSTEM_PACKAGES=1 \ + && pip install \ + altair \ + beautifulsoup4 \ + bokeh \ + bottleneck \ + cloudpickle \ + cython \ + dask \ + dill \ + h5py \ + #ipympl \ + #ipywidgets \ + matplotlib \ + numba \ + numexpr \ + numpy \ + pandas \ + patsy \ + protobuf \ + scikit-image \ + scikit-learn \ + scipy \ + seaborn \ + sqlalchemy \ + statsmodels \ + sympy \ + tables \ + #widgetsnbextension \ + xlrd \ + ## Clean up + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* \ + ${HOME}/.cache \ + ${HOME}/.config \ + ${HOME}/.local \ + ${HOME}/.wget-hsts + +ENV CTAN_REPO=${CTAN_REPO} diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 50e9688..69cf6c0 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.13.16" + PYTHON_VERSION: "3.14.7" CUDA_VERSION: "13.4.2" CUDNN_VERSION_AMD64: "9.27.0.42" CUDNN_VERSION_ARM64: "9.27.0.42" @@ -9,7 +9,7 @@ variables: NCCL_VERSION_ARM64: "2.31.2" NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" - TAG_VERSION_MAJ_MIN: "true" + TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" workflow: diff --git a/ver/3.14.7.Dockerfile b/ver/3.14.7.Dockerfile new file mode 100644 index 0000000..05e26f2 --- /dev/null +++ b/ver/3.14.7.Dockerfile @@ -0,0 +1,93 @@ +ARG BASE_IMAGE=debian +ARG BASE_IMAGE_TAG=13 +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS=libopenblas-dev +ARG CUDA_VERSION=13.4.2 +ARG PYTHON_VERSION=3.14.7 + +FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi + +FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +ARG BASE_IMAGE +ARG BASE_IMAGE_TAG +ARG CUDA_IMAGE +ARG CUDA_IMAGE_SUBTAG +ARG BLAS +ARG CUDA_VERSION +ARG PYTHON_VERSION +ARG BUILD_START + +ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"} +ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"} +ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack +ARG IMAGE_VENDOR="b-data GmbH" +ARG IMAGE_AUTHORS="Olivier Benz " + +LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \ + org.opencontainers.image.source="$IMAGE_SOURCE" \ + org.opencontainers.image.vendor="$IMAGE_VENDOR" \ + org.opencontainers.image.authors="$IMAGE_AUTHORS" + +ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \ + CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \ + PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \ + PYTHON_VERSION=${PYTHON_VERSION} \ + BUILD_DATE=${BUILD_START} + +ENV LANG=en_US.UTF-8 \ + TERM=xterm \ + TZ=Etc/UTC + +## Install Python +COPY --from=psi /usr/local /usr/local + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libexpat1-dev \ + libffi-dev \ + libgdbm-dev \ + libjs-sphinxdoc \ + liblapack-dev \ + libncurses-dev \ + ${BLAS} \ + libreadline-dev \ + locales \ + netbase \ + pkg-config \ + tzdata \ + unzip \ + zip \ + zlib1g-dev \ + && if [ -z "$PYTHON_VERSION" ]; then \ + ## Install system Python + apt-get -y install --no-install-recommends \ + python3; \ + ## make some useful symlinks that are expected to exist + ## ("/usr/bin/python" and friends) + for src in pydoc3 python3 python3-config; do \ + dst="$(echo "$src" | tr -d 3)"; \ + if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ + ln -svT "$src" "/usr/bin/$dst"; \ + fi \ + done; \ + fi \ + ## Update locale + && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \ + && locale-gen \ + && update-locale LANG=$LANG \ + ## Switch BLAS/LAPACK (manual mode) + && if [ ${BLAS} = "libopenblas-dev" ]; then \ + update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \ + update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \ + /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \ + fi \ + ## Clean up + && rm -rf /var/lib/apt/lists/* + +CMD ["python3"] From 0f03bba913a51f8b388b35b0f8c6af203566593b Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Fri, 2 Oct 2026 12:27:28 +0200 Subject: [PATCH 318/324] Update Python to v3.14.8 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index edb9afc..ceb6a0e 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.4.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.7 \ + --build-arg PYTHON_VERSION=3.14.8 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index 8f5c3d7..b66787c 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.7 \ + --build-arg PYTHON_VERSION=3.14.8 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index a2b814a..12d572b 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.7" + PYTHON_VERSION: "3.14.8" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index e266fc4..a0c9a09 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.7" + PYTHON_VERSION: "3.14.8" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 69cf6c0..582af76 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.7" + PYTHON_VERSION: "3.14.8" CUDA_VERSION: "13.4.2" CUDNN_VERSION_AMD64: "9.27.0.42" CUDNN_VERSION_ARM64: "9.27.0.42" From d783f6052d0b9b43b8a65ea2a7b775bcd85ddc41 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Wed, 7 Oct 2026 05:22:37 +0200 Subject: [PATCH 319/324] scipy: Update Quarto to v1.10.19 --- scipy/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scipy/latest.Dockerfile b/scipy/latest.Dockerfile index f928cc4..82b7f0b 100644 --- a/scipy/latest.Dockerfile +++ b/scipy/latest.Dockerfile @@ -1,6 +1,6 @@ ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base ARG PYTHON_VERSION -ARG QUARTO_VERSION=1.10.18 +ARG QUARTO_VERSION=1.10.19 ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} From 1ecbb42f125753027866320ca42f2b1b7ed28b24 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 8 Oct 2026 05:32:54 +0200 Subject: [PATCH 320/324] CUDA images: Remove installation of NCCL - NCCL is part of the NVIDIA CUDA runtime image since version 13.3.1 --- cuda/latest.Dockerfile | 87 ------------------------------------------ ver/.gitlab-ci.yml | 4 -- 2 files changed, 91 deletions(-) diff --git a/cuda/latest.Dockerfile b/cuda/latest.Dockerfile index 6fcf809..bc596db 100644 --- a/cuda/latest.Dockerfile +++ b/cuda/latest.Dockerfile @@ -5,13 +5,6 @@ ARG CUDNN_CUDA_VERSION_MAJ_MIN ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN} ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN} -ARG NCCL_VERSION -ARG NCCL_VERSION_AMD64=${NCCL_VERSION} -ARG NCCL_VERSION_ARM64=${NCCL_VERSION} -ARG NCCL_CUDA_VERSION_MAJ_MIN -ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64=${NCCL_CUDA_VERSION_MAJ_MIN} -ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64=${NCCL_CUDA_VERSION_MAJ_MIN} - ARG BUILD_ON_IMAGE ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*} ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}} @@ -23,9 +16,6 @@ FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 -ARG NCCL_VERSION_AMD64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -33,18 +23,11 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" - FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 -ARG NCCL_VERSION_ARM64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -52,18 +35,11 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" - FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 -ARG NCCL_VERSION_AMD64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -74,22 +50,11 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" - -ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev -ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} -ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" - FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 -ARG NCCL_VERSION_ARM64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -100,22 +65,11 @@ ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" - -ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev -ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} -ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" - FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 -ARG NCCL_VERSION_AMD64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -123,18 +77,11 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" - FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 -ARG NCCL_VERSION_ARM64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -142,18 +89,11 @@ ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64} ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*} ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" - FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64 ARG CUDNN_VERSION_AMD64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64 -ARG NCCL_VERSION_AMD64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_AMD64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}" ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64} @@ -167,22 +107,11 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_AMD64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" - -ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev -ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_AMD64} -ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_AMD64}" - FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64 ARG CUDNN_VERSION_ARM64 ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64 -ARG NCCL_VERSION_ARM64 -ARG NCCL_CUDA_VERSION_MAJ_MIN_ARM64 - LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}" ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64} @@ -196,14 +125,6 @@ ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1" ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1" ENV NV_CUDNN_HEADERS_PACKAGE="${NV_CUDNN_HEADERS_PACKAGE_NAME}=${NV_CUDNN_HEADERS_PACKAGE_VERSION}-1" -ENV NV_LIBNCCL_PACKAGE_NAME=libnccl2 -ENV NV_LIBNCCL_PACKAGE_VERSION=${NCCL_VERSION_ARM64} -ENV NV_LIBNCCL_PACKAGE="${NV_LIBNCCL_PACKAGE_NAME}=${NV_LIBNCCL_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" - -ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev -ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=${NCCL_VERSION_ARM64} -ENV NV_LIBNCCL_DEV_PACKAGE="${NV_LIBNCCL_DEV_PACKAGE_NAME}=${NV_LIBNCCL_DEV_PACKAGE_VERSION}-1+cuda${NCCL_CUDA_VERSION_MAJ_MIN_ARM64}" - FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH} ARG DEBIAN_FRONTEND=noninteractive @@ -255,13 +176,5 @@ RUN cpuBlasLib="$(update-alternatives --query \ ${NV_CUDNN_PACKAGE_NAME} \ ${NV_CUDNN_DEV_PACKAGE_NAME} \ ${NV_CUDNN_HEADERS_PACKAGE_NAME} \ - ## Install NCCL - && apt-get -y install --no-install-recommends \ - ${NV_LIBNCCL_PACKAGE} \ - ${NV_LIBNCCL_DEV_PACKAGE} \ - ## Keep apt from auto upgrading the NCCL package - && apt-mark hold \ - ${NV_LIBNCCL_PACKAGE_NAME} \ - ${NV_LIBNCCL_DEV_PACKAGE_NAME} \ ## Clean up && rm -rf /var/lib/apt/lists/* diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 582af76..0570d16 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -5,10 +5,6 @@ variables: CUDNN_VERSION_ARM64: "9.27.0.42" CUDNN_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" CUDNN_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" - NCCL_VERSION_AMD64: "2.31.2" - NCCL_VERSION_ARM64: "2.31.2" - NCCL_CUDA_VERSION_MAJ_MIN_AMD64: "13.4" - NCCL_CUDA_VERSION_MAJ_MIN_ARM64: "13.4" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" From d95d9ebc97b6ee918283193ae4747eb57f12383a Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sat, 10 Oct 2026 14:33:34 +0200 Subject: [PATCH 321/324] base: Update Neovim to v0.12.6 --- base/latest.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/latest.Dockerfile b/base/latest.Dockerfile index bcb7e3d..690d093 100644 --- a/base/latest.Dockerfile +++ b/base/latest.Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=debian ARG BASE_IMAGE_TAG=13 ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver ARG PYTHON_VERSION -ARG NEOVIM_VERSION=0.12.5 +ARG NEOVIM_VERSION=0.12.6 ARG GIT_VERSION=2.56.0 ARG GIT_LFS_VERSION=3.8.0 ARG PANDOC_VERSION=3.10 From 168b3ec25cbf21e206d65d11a8e52fba2dda7b9d Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Thu, 15 Oct 2026 05:05:20 +0200 Subject: [PATCH 322/324] Update Python to v3.15.0 --- CUDA.md | 2 +- README.md | 2 +- base/.gitlab-ci.yml | 2 +- scipy/.gitlab-ci.yml | 2 +- ver/.gitlab-ci.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CUDA.md b/CUDA.md index ceb6a0e..fd22c3f 100644 --- a/CUDA.md +++ b/CUDA.md @@ -63,7 +63,7 @@ docker build \ --build-arg CUDA_IMAGE=nvidia/cuda \ --build-arg CUDA_VERSION=13.4.2 \ --build-arg CUDA_IMAGE_SUBTAG=runtime-ubuntu24.04 \ - --build-arg PYTHON_VERSION=3.14.8 \ + --build-arg PYTHON_VERSION=3.15.0 \ -t cuda/python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/README.md b/README.md index b66787c..658534d 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg PYTHON_VERSION=3.14.8 \ + --build-arg PYTHON_VERSION=3.15.0 \ -t python/ver \ -f ver/latest.Dockerfile . ``` diff --git a/base/.gitlab-ci.yml b/base/.gitlab-ci.yml index 12d572b..7bde0a9 100644 --- a/base/.gitlab-ci.yml +++ b/base/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.8" + PYTHON_VERSION: "3.15.0" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/scipy/.gitlab-ci.yml b/scipy/.gitlab-ci.yml index a0c9a09..6078f8f 100644 --- a/scipy/.gitlab-ci.yml +++ b/scipy/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.8" + PYTHON_VERSION: "3.15.0" CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/ver/.gitlab-ci.yml b/ver/.gitlab-ci.yml index 0570d16..c5e4c23 100644 --- a/ver/.gitlab-ci.yml +++ b/ver/.gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - PYTHON_VERSION: "3.14.8" + PYTHON_VERSION: "3.15.0" CUDA_VERSION: "13.4.2" CUDNN_VERSION_AMD64: "9.27.0.42" CUDNN_VERSION_ARM64: "9.27.0.42" From 0b66e08d95fc93080eb51bd2d93d0cbcec4682db Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Sun, 18 Oct 2026 20:04:13 +0200 Subject: [PATCH 323/324] ver: Update latest Dockerfile - Provide fully functional Python 3.15 installation - https://github.com/docker-library/python/issues/1136 --- ver/latest.Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 4a3a0a5..565179f 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -56,6 +56,7 @@ RUN apt-get update \ libncurses-dev \ ${BLAS} \ libreadline-dev \ + libsqlite3-dev \ locales \ netbase \ pkg-config \ @@ -63,6 +64,9 @@ RUN apt-get update \ unzip \ zip \ zlib1g-dev \ + && if [ "${BASE_IMAGE}" = "debian:13" ] || [ "${BASE_IMAGE}" = "ubuntu:26.04" ]; then \ + apt-get install -y --no-install-recommends libmpdec-dev; \ + fi \ && if [ -z "$PYTHON_VERSION" ]; then \ ## Install system Python apt-get -y install --no-install-recommends \ From 1f520bd951019e78e23f7952242a512abf6ad1e6 Mon Sep 17 00:00:00 2001 From: Olivier Benz Date: Mon, 19 Oct 2026 07:42:09 +0200 Subject: [PATCH 324/324] ver: Update latest Dockerfile --- ver/latest.Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ver/latest.Dockerfile b/ver/latest.Dockerfile index 565179f..80b7a03 100644 --- a/ver/latest.Dockerfile +++ b/ver/latest.Dockerfile @@ -64,7 +64,8 @@ RUN apt-get update \ unzip \ zip \ zlib1g-dev \ - && if [ "${BASE_IMAGE}" = "debian:13" ] || [ "${BASE_IMAGE}" = "ubuntu:26.04" ]; then \ + && if ([ "${BASE_IMAGE%:*}" = "debian" ] && dpkg --compare-versions "${BASE_IMAGE#*:}" ge "13") \ + || ([ "${BASE_IMAGE%:*}" = "ubuntu" ] && dpkg --compare-versions "${BASE_IMAGE#*:}" ge "26"); then \ apt-get install -y --no-install-recommends libmpdec-dev; \ fi \ && if [ -z "$PYTHON_VERSION" ]; then \