From 97d6efcf7f07b7807e6879275c7c7798a5e4d1ee Mon Sep 17 00:00:00 2001 From: Thomas Sibley Date: Wed, 4 Sep 2024 12:00:46 -0700 Subject: [PATCH] Upgrade base image from Debian Bullseye (oldstable) to Bookworm (stable) Avail ourselves of newer (though still not _new_ ;) software, in particular the SQLite CLI. The use of Bullseye's version number, 11, instead of its name in the builder-build-platform image tripped me up at first, so I've switched it over to Bookworm's name instead of number (12). The cross-compilation of vcftools targeting arm64/aarch64 on amd64 requires pkg-config installed for the target platform with xx-apt-get. Without it, the vcftool's configure script can't find zlib since its using the build platform's pkg-config and zlib is not installed for the build platform. I'm not sure why this worked previously but not now. The libopenblas-base package was renamed libopenblas0. In Bullseye, the former was a dependency-only package to allow older systems coming from Buster (oldoldstable), or instructions based on it, to more gracefully transition to Bullseye. The transitional package was removed in Bookworm. --- Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 44394aa..9454a5f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx # Define a builder stage that runs on the build platform. # Even if the target platform is different, instructions will run natively for # faster compilation. -FROM --platform=$BUILDPLATFORM debian:11-slim AS builder-build-platform +FROM --platform=$BUILDPLATFORM debian:bookworm-slim AS builder-build-platform SHELL ["/bin/bash", "-e", "-u", "-o", "pipefail", "-c"] @@ -63,6 +63,7 @@ RUN xx-apt-get install -y \ gcc \ g++ \ libc6-dev \ + pkg-config \ zlib1g-dev # Add dependencies. All should be pinned to specific versions, except @@ -224,7 +225,7 @@ RUN curl -fsSL https://ftp.ncbi.nlm.nih.gov/pub/datasets/command-line/v2/linux-$ # This is in place for Python programs which are not easy to install for a # different target platform¹. # ¹ https://github.com/pypa/pip/issues/5453 -FROM --platform=$TARGETPLATFORM python:3.10-slim-bullseye AS builder-target-platform +FROM --platform=$TARGETPLATFORM python:3.10-slim-bookworm AS builder-target-platform SHELL ["/bin/bash", "-e", "-u", "-o", "pipefail", "-c"] @@ -350,7 +351,7 @@ RUN pip3 install evofr # ———————————————————————————————————————————————————————————————————— # # Now build the final image. -FROM python:3.10-slim-bullseye AS final +FROM python:3.10-slim-bookworm AS final SHELL ["/bin/bash", "-e", "-u", "-o", "pipefail", "-c"] @@ -407,7 +408,7 @@ ARG TARGETPLATFORM # ¹ https://cvxopt.org/install/#building-and-installing-from-source RUN if [[ "$TARGETPLATFORM" == linux/arm64 ]]; then \ apt-get update && apt-get install -y --no-install-recommends \ - libopenblas-base \ + libopenblas0 \ ; \ fi