Skip to content

Commit

Permalink
Upgrade base image from Debian Bullseye (oldstable) to Bookworm (stable)
Browse files Browse the repository at this point in the history
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 with the build
platform's pkg-config 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.
  • Loading branch information
tsibley committed Sep 5, 2024
1 parent f27da40 commit 82c12ba
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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"]

Expand All @@ -26,7 +26,6 @@ COPY --from=xx / /
# curl: for downloading source files
# git: used in builder-scripts/download-repo
# make: used for building from Makefiles (search for usage); may be used by package managers to build from source
# pkg-config: for building VCFtools; may be used by package managers to build from source
# nodejs: for installing Auspice
# clang: for compiling C/C++ projects; may be used by package managers to build from source
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand All @@ -37,7 +36,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
git \
make \
pkg-config \
dpkg-dev

# Install a specific Node.js version
Expand All @@ -57,12 +55,14 @@ ARG TARGETARCH
# https://github.com/tonistiigi/xx#building-on-debian
# binutils, gcc, libc6-dev: for compiling C/C++ programs (TODO: verify)
# g++: for building VCFtools; may be used by package managers to build from source
# pkg-config: for building VCFtools; may be used by package managers to build from source
# zlib1g-dev: for building VCFtools; may be used by package managers to build from source
RUN xx-apt-get install -y \
binutils \
gcc \
g++ \
libc6-dev \
pkg-config \
zlib1g-dev

# Add dependencies. All should be pinned to specific versions, except
Expand Down Expand Up @@ -224,7 +224,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"]

Expand Down Expand Up @@ -350,7 +350,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"]

Expand Down Expand Up @@ -407,7 +407,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

Expand Down

0 comments on commit 82c12ba

Please sign in to comment.