Skip to content

Commit 9d1fb0d

Browse files
committedFeb 5, 2025
Release Python v3.12.9
1 parent f95e96a commit 9d1fb0d

7 files changed

+588
-6
lines changed
 

‎base/.gitlab-ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.env:
22
variables:
3-
PYTHON_VERSION: "3.12.8"
4-
TAG_VERSION_MAJ_MIN: "false"
3+
PYTHON_VERSION: "3.12.9"
4+
TAG_VERSION_MAJ_MIN: "true"
55
TAG_VERSION_MAJ: "false"
66

77
.before-script-build: &before-script-build

‎base/3.12.9.Dockerfile

+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
ARG BASE_IMAGE=debian
2+
ARG BASE_IMAGE_TAG=12
3+
ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/ver
4+
ARG PYTHON_VERSION=3.12.9
5+
ARG NEOVIM_VERSION=0.10.4
6+
ARG GIT_VERSION=2.48.1
7+
ARG GIT_LFS_VERSION=3.6.1
8+
ARG PANDOC_VERSION=3.4
9+
10+
FROM glcr.b-data.ch/neovim/nvsi:${NEOVIM_VERSION} AS nvsi
11+
FROM glcr.b-data.ch/git/gsi/${GIT_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} as gsi
12+
FROM glcr.b-data.ch/git-lfs/glfsi:${GIT_LFS_VERSION} as glfsi
13+
14+
FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION}
15+
16+
ARG DEBIAN_FRONTEND=noninteractive
17+
18+
ARG BUILD_ON_IMAGE
19+
ARG NEOVIM_VERSION
20+
ARG GIT_VERSION
21+
ARG GIT_LFS_VERSION
22+
ARG PANDOC_VERSION
23+
ARG BUILD_START
24+
25+
ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \
26+
NEOVIM_VERSION=${NEOVIM_VERSION} \
27+
GIT_VERSION=${GIT_VERSION} \
28+
GIT_LFS_VERSION=${GIT_LFS_VERSION} \
29+
PANDOC_VERSION=${PANDOC_VERSION} \
30+
BUILD_DATE=${BUILD_START}
31+
32+
## Install Neovim
33+
COPY --from=nvsi /usr/local /usr/local
34+
## Install Git
35+
COPY --from=gsi /usr/local /usr/local
36+
## Install Git LFS
37+
COPY --from=glfsi /usr/local /usr/local
38+
39+
RUN dpkgArch="$(dpkg --print-architecture)" \
40+
&& apt-get update \
41+
&& apt-get -y install --no-install-recommends \
42+
bash-completion \
43+
build-essential \
44+
curl \
45+
file \
46+
fontconfig \
47+
g++ \
48+
gcc \
49+
gfortran \
50+
gnupg \
51+
htop \
52+
info \
53+
jq \
54+
libclang-dev \
55+
man-db \
56+
nano \
57+
ncdu \
58+
procps \
59+
psmisc \
60+
screen \
61+
sudo \
62+
swig \
63+
tmux \
64+
vim-tiny \
65+
wget \
66+
zsh \
67+
## Neovim: Additional runtime recommendations
68+
ripgrep \
69+
## Git: Additional runtime dependencies
70+
libcurl3-gnutls \
71+
liberror-perl \
72+
## Git: Additional runtime recommendations
73+
less \
74+
ssh-client \
75+
## Python: Additional dev dependencies
76+
&& if [ -z "$PYTHON_VERSION" ]; then \
77+
apt-get -y install --no-install-recommends \
78+
python3-dev \
79+
## Install Python package installer
80+
## (dep: python3-distutils, python3-setuptools and python3-wheel)
81+
python3-pip \
82+
## Install venv module for python3
83+
python3-venv; \
84+
## make some useful symlinks that are expected to exist
85+
## ("/usr/bin/python" and friends)
86+
for src in pydoc3 python3 python3-config; do \
87+
dst="$(echo "$src" | tr -d 3)"; \
88+
if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \
89+
ln -svT "$src" "/usr/bin/$dst"; \
90+
fi \
91+
done; \
92+
else \
93+
## Force update pip, setuptools and wheel
94+
pip install --upgrade --force-reinstall \
95+
pip \
96+
setuptools \
97+
wheel; \
98+
fi \
99+
## Git: Set default branch name to main
100+
&& git config --system init.defaultBranch main \
101+
## Git: Store passwords for one hour in memory
102+
&& git config --system credential.helper "cache --timeout=3600" \
103+
## Git: Merge the default branch from the default remote when "git pull" is run
104+
&& git config --system pull.rebase false \
105+
## Install pandoc
106+
&& curl -sLO https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \
107+
&& dpkg -i pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \
108+
&& rm pandoc-${PANDOC_VERSION}-1-${dpkgArch}.deb \
109+
## Clean up
110+
&& rm -rf /tmp/* \
111+
&& rm -rf /var/lib/apt/lists/* \
112+
${HOME}/.cache

‎cuda/3.12.9.Dockerfile

+243
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
ARG CUDNN_VERSION=8.9.7.29
2+
ARG CUDNN_VERSION_AMD64=${CUDNN_VERSION}
3+
ARG CUDNN_VERSION_ARM64=${CUDNN_VERSION}
4+
ARG CUDNN_CUDA_VERSION_MAJ_MIN=12.2
5+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64=${CUDNN_CUDA_VERSION_MAJ_MIN}
6+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64=${CUDNN_CUDA_VERSION_MAJ_MIN}
7+
8+
ARG LIBNVINFER_VERSION
9+
ARG LIBNVINFER_VERSION_AMD64=10.8.0.43
10+
ARG LIBNVINFER_VERSION_ARM64=10.3.0.26
11+
ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN
12+
ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64=12.8
13+
ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64=12.5
14+
15+
## CUDA_IMAGE
16+
## ├── nvidia/cuda:12.8.0-runtime-ubuntu22.04
17+
## └── nvidia/cuda:12.8.0-devel-ubuntu22.04
18+
ARG BUILD_ON_IMAGE
19+
ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION%%.*}
20+
ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_AMD64%%.*}}
21+
ARG CUDNN_VERSION_MAJ=${CUDNN_VERSION_MAJ:-${CUDNN_VERSION_ARM64%%.*}}
22+
ARG CUDA_IMAGE_FLAVOR
23+
24+
FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-amd64
25+
26+
ARG CUDNN_VERSION_AMD64
27+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64
28+
29+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}"
30+
31+
ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64}
32+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64}
33+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}
34+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}"
35+
36+
FROM ${BUILD_ON_IMAGE} AS cudnn8-runtime-arm64
37+
38+
ARG CUDNN_VERSION_ARM64
39+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64
40+
41+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}"
42+
43+
ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64}
44+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64}
45+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}
46+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}"
47+
48+
FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-amd64
49+
50+
ARG CUDNN_VERSION_AMD64
51+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64
52+
53+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}"
54+
55+
ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64}
56+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64}
57+
ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64}
58+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}
59+
ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev
60+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}"
61+
ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64}"
62+
63+
FROM ${BUILD_ON_IMAGE} AS cudnn8-devel-arm64
64+
65+
ARG CUDNN_VERSION_ARM64
66+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64
67+
68+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}"
69+
70+
ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64}
71+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64}
72+
ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64}
73+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}
74+
ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev
75+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}"
76+
ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1+cuda${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64}"
77+
78+
FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-amd64
79+
80+
ARG CUDNN_VERSION_AMD64
81+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64
82+
83+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}"
84+
85+
ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64}
86+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64}
87+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*}
88+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1"
89+
90+
FROM ${BUILD_ON_IMAGE} AS cudnn9-runtime-arm64
91+
92+
ARG CUDNN_VERSION_ARM64
93+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64
94+
95+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}"
96+
97+
ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64}
98+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64}
99+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*}
100+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1"
101+
102+
FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-amd64
103+
104+
ARG CUDNN_VERSION_AMD64
105+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_AMD64
106+
107+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_AMD64}"
108+
109+
ENV CUDNN_VERSION=${CUDNN_VERSION_AMD64}
110+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_AMD64}
111+
ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_AMD64}
112+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*}
113+
ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_AMD64%%.*}
114+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1"
115+
ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1"
116+
117+
FROM ${BUILD_ON_IMAGE} AS cudnn9-devel-arm64
118+
119+
ARG CUDNN_VERSION_ARM64
120+
ARG CUDNN_CUDA_VERSION_MAJ_MIN_ARM64
121+
122+
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION_ARM64}"
123+
124+
ENV CUDNN_VERSION=${CUDNN_VERSION_ARM64}
125+
ENV NV_CUDNN_PACKAGE_VERSION=${CUDNN_VERSION_ARM64}
126+
ENV NV_CUDNN_DEV_PACKAGE_VERSION=${CUDNN_VERSION_ARM64}
127+
ENV NV_CUDNN_PACKAGE_NAME=libcudnn${NV_CUDNN_PACKAGE_VERSION%%.*}-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*}
128+
ENV NV_CUDNN_DEV_PACKAGE_NAME=libcudnn${NV_CUDNN_DEV_PACKAGE_VERSION%%.*}-dev-cuda-${CUDNN_CUDA_VERSION_MAJ_MIN_ARM64%%.*}
129+
ENV NV_CUDNN_PACKAGE="${NV_CUDNN_PACKAGE_NAME}=${NV_CUDNN_PACKAGE_VERSION}-1"
130+
ENV NV_CUDNN_DEV_PACKAGE="${NV_CUDNN_DEV_PACKAGE_NAME}=${NV_CUDNN_DEV_PACKAGE_VERSION}-1"
131+
132+
FROM cudnn${CUDNN_VERSION_MAJ}-${CUDA_IMAGE_FLAVOR}-${TARGETARCH}
133+
134+
ARG DEBIAN_FRONTEND=noninteractive
135+
136+
ARG LIBNVINFER_VERSION_AMD64
137+
ARG LIBNVINFER_VERSION_ARM64
138+
ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64
139+
ARG LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64
140+
141+
ARG CUDA_HOME=/usr/local/cuda
142+
ARG NVBLAS_CONFIG_FILE=/etc/nvblas.conf
143+
144+
ARG CUDA_IMAGE_FLAVOR
145+
ARG CUPTI_AVAILABLE
146+
ARG BUILD_START
147+
148+
ENV CUDA_HOME=${CUDA_HOME} \
149+
NVBLAS_CONFIG_FILE=${NVBLAS_CONFIG_FILE} \
150+
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}${CUDA_HOME}/lib:${CUDA_HOME}/lib64${CUPTI_AVAILABLE:+:${CUDA_HOME}/extras/CUPTI/lib64} \
151+
BUILD_DATE=${BUILD_START}
152+
153+
RUN cpuBlasLib="$(update-alternatives --query \
154+
libblas.so.3-$(uname -m)-linux-gnu | grep Value | cut -f2 -d' ')" \
155+
&& dpkgArch="$(dpkg --print-architecture)" \
156+
&& CUDA_VERSION_MAJ_MIN_DASH=$(echo ${CUDA_VERSION%.*} | tr '.' '-') \
157+
## Install the CUDA Runtime native dev links, headers
158+
&& apt-get update \
159+
&& apt-get -y install --no-install-recommends \
160+
cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH}=${NV_CUDA_CUDART_VERSION} \
161+
## Keep apt from auto upgrading the CUDA Runtime packages
162+
&& apt-mark hold \
163+
cuda-cudart-${CUDA_VERSION_MAJ_MIN_DASH} \
164+
cuda-cudart-dev-${CUDA_VERSION_MAJ_MIN_DASH} \
165+
## Unminimise if the system has been minimised
166+
&& if [ ${CUDA_IMAGE_FLAVOR} = "devel" -a $(command -v unminimize) ]; then \
167+
sed -i "s/apt-get upgrade/#apt-get upgrade/g" "$(which unminimize)"; \
168+
yes | unminimize; \
169+
sed -i "s/#apt-get upgrade/apt-get upgrade/g" "$(which unminimize)"; \
170+
fi \
171+
## NVBLAS log configuration
172+
&& touch /var/log/nvblas.log \
173+
&& chown :users /var/log/nvblas.log \
174+
&& chmod g+rw /var/log/nvblas.log \
175+
## NVBLAS configuration using all compute-capable GPUs
176+
&& echo "NVBLAS_LOGFILE /var/log/nvblas.log" > $NVBLAS_CONFIG_FILE \
177+
&& echo "NVBLAS_CPU_BLAS_LIB $cpuBlasLib" >> $NVBLAS_CONFIG_FILE \
178+
&& echo "NVBLAS_GPU_LIST ALL" >> $NVBLAS_CONFIG_FILE \
179+
## Install cuDNN
180+
&& apt-get -y install --no-install-recommends \
181+
${NV_CUDNN_PACKAGE} \
182+
${NV_CUDNN_DEV_PACKAGE} \
183+
## Keep apt from auto upgrading the cuDNN packages
184+
&& apt-mark hold \
185+
${NV_CUDNN_PACKAGE_NAME} \
186+
${NV_CUDNN_DEV_PACKAGE_NAME} \
187+
## Install TensorRT
188+
&& case "$dpkgArch" in \
189+
amd64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_AMD64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64 ;; \
190+
arm64) LIBNVINFER_VERSION=$LIBNVINFER_VERSION_ARM64 LIBNVINFER_CUDA_VERSION_MAJ_MIN=$LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64 ;; \
191+
*) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \
192+
esac \
193+
## Install development libraries and headers
194+
## if devel-flavor of CUDA image is used
195+
&& if [ ${CUDA_IMAGE_FLAVOR} = "devel" ]; then \
196+
dev="-dev"; \
197+
if dpkg --compare-versions ${LIBNVINFER_VERSION} gt "8.6"; then \
198+
headers="-headers"; \
199+
fi; \
200+
fi \
201+
&& LIBNVINFER_VERSION_MAJ=${LIBNVINFER_VERSION%%.*} \
202+
&& CUDA_VERSION_MAJ_MIN=${LIBNVINFER_CUDA_VERSION_MAJ_MIN:-${CUDA_VERSION%.*}} \
203+
&& apt-get -y install --no-install-recommends \
204+
libnvinfer${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \
205+
libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \
206+
libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \
207+
libnvinfer-plugin${LIBNVINFER_VERSION_MAJ}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \
208+
libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \
209+
libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}}=${LIBNVINFER_VERSION}-1+cuda${CUDA_VERSION_MAJ_MIN} \
210+
## Keep apt from auto upgrading the libnvinfer packages
211+
&& apt-mark hold \
212+
libnvinfer${LIBNVINFER_VERSION_MAJ} \
213+
libnvinfer${dev:-${LIBNVINFER_VERSION_MAJ}} \
214+
libnvinfer${headers}${dev:-${LIBNVINFER_VERSION_MAJ}} \
215+
libnvinfer-plugin${LIBNVINFER_VERSION_MAJ} \
216+
libnvinfer-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \
217+
libnvinfer${headers}-plugin${dev:-${LIBNVINFER_VERSION_MAJ}} \
218+
## Create symlink when only newer TensorRT libraries are available
219+
&& trtRunLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \
220+
grep 'libnvinfer.so.[0-9]\+$') \
221+
&& trtPluLib=$(ls -d /usr/lib/$(uname -m)-linux-gnu/* | \
222+
grep 'libnvinfer_plugin.so.[0-9]\+$') \
223+
&& if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "8" ]; then \
224+
## TensorFlow versions < 2.18 expect TensorRT libraries version 8.6.1/8.6.2
225+
if [ "$dpkgArch" = "amd64" ]; then \
226+
ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.1; \
227+
ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.1; \
228+
fi; \
229+
if [ "$dpkgArch" = "arm64" ]; then \
230+
ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8.6.2; \
231+
ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8.6.2; \
232+
fi; \
233+
## TensorFlow versions < 2.15 expect TensorRT libraries version 8
234+
ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.8; \
235+
ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.8; \
236+
fi \
237+
&& if [ "$(echo $trtRunLib | sed -n 's/.*.so.\([0-9]\+\)/\1/p')" -gt "7" ]; then \
238+
## TensorFlow versions < 2.12 expect TensorRT libraries version 7
239+
ln -rs $trtRunLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer.so.7; \
240+
ln -rs $trtPluLib /usr/lib/$(uname -m)-linux-gnu/libnvinfer_plugin.so.7; \
241+
fi \
242+
## Clean up
243+
&& rm -rf /var/lib/apt/lists/*

‎scipy/.gitlab-ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
.env:
22
variables:
3-
PYTHON_VERSION: "3.12.8"
3+
PYTHON_VERSION: "3.12.9"
44
CTAN_REPO_BUILD_LATEST: "https://mirror.init7.net/ctan/systems/texlive/tlnet"
5-
TAG_VERSION_MAJ_MIN: "false"
5+
TAG_VERSION_MAJ_MIN: "true"
66
TAG_VERSION_MAJ: "false"
77

88
.before-script-build: &before-script-build

‎scipy/3.12.9.Dockerfile

+138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
ARG BUILD_ON_IMAGE=glcr.b-data.ch/python/base
2+
ARG PYTHON_VERSION=3.12.9
3+
ARG QUARTO_VERSION=1.6.40
4+
ARG CTAN_REPO=https://mirror.ctan.org/systems/texlive/tlnet
5+
6+
FROM ${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION}
7+
8+
ARG DEBIAN_FRONTEND=noninteractive
9+
10+
ARG NB_GID=100
11+
12+
ARG BUILD_ON_IMAGE
13+
ARG QUARTO_VERSION
14+
ARG CTAN_REPO
15+
ARG CTAN_REPO_BUILD_LATEST
16+
ARG BUILD_START
17+
18+
ENV PARENT_IMAGE=${BUILD_ON_IMAGE}${PYTHON_VERSION:+:$PYTHON_VERSION} \
19+
QUARTO_VERSION=${QUARTO_VERSION} \
20+
BUILD_DATE=${BUILD_START}
21+
22+
ENV PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH
23+
24+
RUN dpkgArch="$(dpkg --print-architecture)" \
25+
&& apt-get update \
26+
&& apt-get install -y --no-install-recommends \
27+
fonts-roboto \
28+
ghostscript \
29+
librsvg2-bin \
30+
qpdf \
31+
texinfo \
32+
## Python: For h5py wheels (arm64)
33+
libhdf5-dev \
34+
## Install quarto
35+
&& curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \
36+
&& mkdir -p /opt/quarto \
37+
&& tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1 \
38+
&& rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz \
39+
## Exempt quarto from address space limit
40+
&& sed -i 's/"${QUARTO_DENO}"/prlimit -v=unlimited: "${QUARTO_DENO}"/g' \
41+
/opt/quarto/bin/quarto \
42+
## Remove quarto pandoc
43+
&& rm /opt/quarto/bin/tools/$(uname -m)/pandoc \
44+
## Link to system pandoc
45+
&& ln -s /usr/bin/pandoc /opt/quarto/bin/tools/$(uname -m)/pandoc \
46+
## Tell APT about the TeX Live installation
47+
## by building a dummy package using equivs
48+
&& apt-get install -y --no-install-recommends equivs \
49+
&& cd /tmp \
50+
&& wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \
51+
&& equivs-build debian-* \
52+
&& mv texlive-local*.deb texlive-local.deb \
53+
&& dpkg -i texlive-local.deb \
54+
&& apt-get -y purge equivs \
55+
&& apt-get -y autoremove \
56+
## Admin-based install of TinyTeX
57+
&& CTAN_REPO_ORIG=${CTAN_REPO} \
58+
&& CTAN_REPO=${CTAN_REPO_BUILD_LATEST:-$CTAN_REPO} \
59+
&& export CTAN_REPO \
60+
&& wget -qO- "https://yihui.org/tinytex/install-unx.sh" \
61+
| sh -s - --admin --no-path \
62+
&& mv ${HOME}/.TinyTeX /opt/TinyTeX \
63+
&& sed -i "s|${HOME}/.TinyTeX|/opt/TinyTeX|g" \
64+
/opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \
65+
&& ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \
66+
/opt/TinyTeX/bin/linux \
67+
&& /opt/TinyTeX/bin/linux/tlmgr path add \
68+
&& tlmgr update --self \
69+
## TeX packages as requested by the community
70+
&& curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \
71+
&& tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \
72+
&& rm -f pkgs-yihui.txt \
73+
## TeX packages as in rocker/verse
74+
&& tlmgr install \
75+
context \
76+
pdfcrop \
77+
## TeX packages as in jupyter/scipy-notebook
78+
&& tlmgr install \
79+
cm-super \
80+
dvipng \
81+
## TeX packages specific for nbconvert
82+
&& tlmgr install \
83+
oberdiek \
84+
titling \
85+
&& tlmgr path add \
86+
&& tlmgr option repository ${CTAN_REPO_ORIG} \
87+
&& chown -R root:${NB_GID} /opt/TinyTeX \
88+
&& chmod -R g+w /opt/TinyTeX \
89+
&& chmod -R g+wx /opt/TinyTeX/bin \
90+
## Make the TeX Live fonts available as system fonts
91+
&& cp /opt/TinyTeX/texmf-var/fonts/conf/texlive-fontconfig.conf \
92+
/etc/fonts/conf.d/09-texlive.conf \
93+
&& fc-cache -fsv \
94+
## Install Python packages
95+
&& export PIP_BREAK_SYSTEM_PACKAGES=1 \
96+
&& pip install \
97+
altair \
98+
beautifulsoup4 \
99+
bokeh \
100+
bottleneck \
101+
cloudpickle \
102+
cython \
103+
dask \
104+
dill \
105+
h5py \
106+
#ipympl \
107+
#ipywidgets \
108+
matplotlib \
109+
numba \
110+
numexpr \
111+
numpy \
112+
pandas \
113+
patsy \
114+
protobuf \
115+
scikit-image \
116+
scikit-learn \
117+
scipy \
118+
seaborn \
119+
sqlalchemy \
120+
statsmodels \
121+
sympy \
122+
tables \
123+
#widgetsnbextension \
124+
xlrd \
125+
## Install facets
126+
#&& cd /tmp \
127+
#&& git clone https://github.com/PAIR-code/facets.git \
128+
#&& jupyter nbextension install facets/facets-dist/ --sys-prefix \
129+
#&& cd / \
130+
## Clean up
131+
&& rm -rf /tmp/* \
132+
&& rm -rf /var/lib/apt/lists/* \
133+
${HOME}/.cache \
134+
${HOME}/.config \
135+
${HOME}/.local \
136+
${HOME}/.wget-hsts
137+
138+
ENV CTAN_REPO=${CTAN_REPO}

‎ver/.gitlab-ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.env:
22
variables:
3-
PYTHON_VERSION: "3.12.8"
3+
PYTHON_VERSION: "3.12.9"
44
CUDA_VERSION: "12.8.0"
55
CUDNN_VERSION_AMD64: "8.9.7.29"
66
CUDNN_VERSION_ARM64: "8.9.7.29"
@@ -10,7 +10,7 @@
1010
LIBNVINFER_VERSION_ARM64: "10.3.0.26"
1111
LIBNVINFER_CUDA_VERSION_MAJ_MIN_AMD64: "12.8"
1212
LIBNVINFER_CUDA_VERSION_MAJ_MIN_ARM64: "12.5"
13-
TAG_VERSION_MAJ_MIN: "false"
13+
TAG_VERSION_MAJ_MIN: "true"
1414
TAG_VERSION_MAJ: "false"
1515

1616
.before-script-all: &before-script-all

‎ver/3.12.9.Dockerfile

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
ARG BASE_IMAGE=debian
2+
ARG BASE_IMAGE_TAG=12
3+
ARG CUDA_IMAGE
4+
ARG CUDA_IMAGE_SUBTAG
5+
ARG BLAS=libopenblas-dev
6+
ARG CUDA_VERSION=12.8.0
7+
ARG PYTHON_VERSION=3.12.9
8+
9+
FROM glcr.b-data.ch/python/psi${PYTHON_VERSION:+/}${PYTHON_VERSION:-:none}${PYTHON_VERSION:+/$BASE_IMAGE}${PYTHON_VERSION:+:$BASE_IMAGE_TAG} as psi
10+
11+
FROM ${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG}
12+
13+
ARG DEBIAN_FRONTEND=noninteractive
14+
15+
ARG BASE_IMAGE
16+
ARG BASE_IMAGE_TAG
17+
ARG CUDA_IMAGE
18+
ARG CUDA_IMAGE_SUBTAG
19+
ARG BLAS
20+
ARG CUDA_VERSION
21+
ARG PYTHON_VERSION
22+
ARG BUILD_START
23+
24+
ARG CUDA_IMAGE_LICENSE=${CUDA_IMAGE:+"NVIDIA Deep Learning Container License"}
25+
ARG IMAGE_LICENSE=${CUDA_IMAGE_LICENSE:-"MIT"}
26+
ARG IMAGE_SOURCE=https://gitlab.b-data.ch/python/docker-stack
27+
ARG IMAGE_VENDOR="b-data GmbH"
28+
ARG IMAGE_AUTHORS="Olivier Benz <olivier.benz@b-data.ch>"
29+
30+
LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \
31+
org.opencontainers.image.source="$IMAGE_SOURCE" \
32+
org.opencontainers.image.vendor="$IMAGE_VENDOR" \
33+
org.opencontainers.image.authors="$IMAGE_AUTHORS"
34+
35+
ENV BASE_IMAGE=${BASE_IMAGE}:${BASE_IMAGE_TAG} \
36+
CUDA_IMAGE=${CUDA_IMAGE}${CUDA_IMAGE:+:}${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG} \
37+
PARENT_IMAGE=${CUDA_IMAGE:-$BASE_IMAGE}:${CUDA_IMAGE:+$CUDA_VERSION}${CUDA_IMAGE:+-}${CUDA_IMAGE_SUBTAG:-$BASE_IMAGE_TAG} \
38+
PYTHON_VERSION=${PYTHON_VERSION} \
39+
BUILD_DATE=${BUILD_START}
40+
41+
ENV LANG=en_US.UTF-8 \
42+
TERM=xterm \
43+
TZ=Etc/UTC
44+
45+
## Install Python
46+
COPY --from=psi /usr/local /usr/local
47+
48+
RUN apt-get update \
49+
&& apt-get install -y --no-install-recommends \
50+
ca-certificates \
51+
libexpat1-dev \
52+
libjs-sphinxdoc \
53+
liblapack-dev \
54+
${BLAS} \
55+
locales \
56+
netbase \
57+
pkg-config \
58+
tzdata \
59+
unzip \
60+
zip \
61+
zlib1g-dev \
62+
&& if [ -z "$PYTHON_VERSION" ]; then \
63+
## Install system Python
64+
apt-get -y install --no-install-recommends \
65+
python3; \
66+
## make some useful symlinks that are expected to exist
67+
## ("/usr/bin/python" and friends)
68+
for src in pydoc3 python3 python3-config; do \
69+
dst="$(echo "$src" | tr -d 3)"; \
70+
if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \
71+
ln -svT "$src" "/usr/bin/$dst"; \
72+
fi \
73+
done; \
74+
fi \
75+
## Update locale
76+
&& sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \
77+
&& locale-gen \
78+
&& update-locale LANG=$LANG \
79+
## Switch BLAS/LAPACK (manual mode)
80+
&& if [ ${BLAS} = "libopenblas-dev" ]; then \
81+
update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \
82+
/usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \
83+
update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \
84+
/usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \
85+
fi \
86+
## Clean up
87+
&& rm -rf /var/lib/apt/lists/*
88+
89+
CMD ["python3"]

0 commit comments

Comments
 (0)
Please sign in to comment.