mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-01 21:23:51 -09:00
The Debian 12 Bookworm snapshot we use, 20250203, uses the new deb822
format [0] for source list files; it carries a source list file that
points to the current repository, not to the snapshot.
Even though we do inject an old-style source list that points to the
snapshot repository, the packages in the current repository are more
recent than the one in the snapshot, so when we install our packages,
they get retrieved mostly from the current repository rather than from
the snapshot. The image is not reproducible.
Switch to using the new deb822-style source list file.
Note: we do not need to carry the "Latest just before" trick: the
snapshot repository will use the most recent actual snapshot before the
requested dated, so we can just use the date of the image we use (stuck
at midnight because we don't have better).
Since the snapshot repository can be really slow, while at the same time
the remote http server not dropping connections, it can take a very long
while to build the image; add a timeout so that stale connections are
detected and re-attemped early-ish (the timeout applies to both the
connect and the actual download, so it should be large enough to
accomodate slowish network connections).
Fixes: c95d5b8e1e (support/docker: move to current bookworm (Debian
12) snapshot)
[0] https://manpages.debian.org/trixie/apt/sources.list.5.en.html#DEB822-STYLE_FORMAT
Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
102 lines
2.8 KiB
Docker
102 lines
2.8 KiB
Docker
# This Dockerfile generates the docker image that gets used by Gitlab CI
|
|
# To build it for arm64 and amd64 (YYYYMMDD.HHMM is the current date and time in UTC):
|
|
# docker buildx create --use
|
|
# docker buildx build --platform linux/amd64,linux/arm64/v8 \
|
|
# -t registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM \
|
|
# --push support/docker
|
|
|
|
# We use a specific tag for the base image *and* the corresponding date
|
|
# for the repository., so do not forget to update the apt-sources.list
|
|
# file that is shipped next to this Dockerfile.
|
|
FROM debian:bookworm-20250203
|
|
|
|
LABEL maintainer="Buildroot mailing list <buildroot@buildroot.org>" \
|
|
vendor="Buildroot" \
|
|
description="Container with everything needed to run Buildroot"
|
|
|
|
# Architecture to build for
|
|
ARG TARGETPLATFORM
|
|
|
|
# We need tar >= 1.35
|
|
ARG TAR_VERSION="1.35"
|
|
|
|
# Setup environment
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# This repository can be a bit slow at times. Don't panic...
|
|
COPY debian.sources /etc/apt/sources.list.d/debian.sources
|
|
|
|
# Install 32bit variant on x86_64 image.
|
|
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
|
dpkg --add-architecture i386; \
|
|
fi
|
|
|
|
# The container has no package lists, so need to update first
|
|
RUN apt-get -o APT::Retries=3 -o APT::Acquire::http::Timeout=60 \
|
|
update -y
|
|
|
|
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
|
|
apt-get -o APT::Retries=3 -o APT::Acquire::http::Timeout=60 \
|
|
install -y --no-install-recommends \
|
|
g++-multilib \
|
|
libc6:i386; \
|
|
fi
|
|
|
|
RUN apt-get -o APT::Retries=3 -o APT::Acquire::http::Timeout=60 \
|
|
install -y --no-install-recommends \
|
|
bc \
|
|
build-essential \
|
|
bzr \
|
|
ca-certificates \
|
|
cmake \
|
|
cpio \
|
|
curl \
|
|
cvs \
|
|
file \
|
|
flake8 \
|
|
g++ \
|
|
git \
|
|
libncurses5-dev \
|
|
locales \
|
|
mercurial \
|
|
openssh-server \
|
|
python3 \
|
|
python3-flake8 \
|
|
python3-magic \
|
|
python3-nose2 \
|
|
python3-pexpect \
|
|
python3-pytest \
|
|
qemu-system-arm \
|
|
qemu-system-misc \
|
|
qemu-system-x86 \
|
|
rsync \
|
|
shellcheck \
|
|
subversion \
|
|
unzip \
|
|
wget \
|
|
&& \
|
|
apt-get -y autoremove && \
|
|
apt-get -y clean
|
|
|
|
# Build host-tar
|
|
RUN curl -sfL https://ftpmirror.gnu.org/tar/tar-${TAR_VERSION}.tar.xz | \
|
|
tar -Jx -C /tmp && \
|
|
cd /tmp/tar-${TAR_VERSION} && \
|
|
FORCE_UNSAFE_CONFIGURE=1 ./configure \
|
|
--disable-year2038 && \
|
|
make && \
|
|
make install && \
|
|
rm -rf /tmp/tar-${TAR_VERSION}
|
|
|
|
# To be able to generate a toolchain with locales, enable one UTF-8 locale
|
|
RUN sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen && \
|
|
/usr/sbin/locale-gen
|
|
|
|
RUN useradd -ms /bin/bash br-user && \
|
|
chown -R br-user:br-user /home/br-user
|
|
|
|
USER br-user
|
|
WORKDIR /home/br-user
|
|
ENV HOME=/home/br-user
|
|
ENV LC_ALL=en_US.UTF-8
|