@@ -15,6 +15,8 @@ ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
1515apt update
1616apt upgrade -y
1717apt install -y tzdata
18+ apt clean
19+ rm -rf /var/lib/apt/lists/*
1820dpkg-reconfigure --frontend noninteractive tzdata
1921EOF
2022
@@ -27,6 +29,8 @@ pkgs+=(bison) # Required build tool.
2729pkgs+=(ca-certificates) # Enable TLS verification for HTTPS connections by providing trusted root certificates.
2830pkgs+=(cmake) # Required build tool.
2931pkgs+=(curl) # Dependency for tools requiring downloading data.
32+ pkgs+=(dpkg-dev) # Required packaging tool.
33+ pkgs+=(file) # Required packaging tool.
3034pkgs+=(flex) # Required build tool.
3135pkgs+=(git) # Required build tool.
3236pkgs+=(gpg) # Dependency for tools requiring signing or encrypting/decrypting.
@@ -36,15 +40,19 @@ pkgs+=(ninja-build) # Required build tool.
3640pkgs+=(pipx) # Package manager for Python applications.
3741pkgs+=(wget) # Required build tool.
3842apt update
39- apt install -y "${pkgs[@]}"
43+ apt install -y --no-install-recommends "${pkgs[@]}"
44+ apt clean
45+ rm -rf /var/lib/apt/lists/*
4046EOF
4147
42- # Install Conan .
48+ # Install Python-based tools .
4349ARG CONAN_VERSION
44- RUN PIPX_HOME=/opt/pipx \
50+ ARG GCOVR_VERSION
51+ ENV PIPX_HOME=/opt/pipx \
4552 PIPX_BIN_DIR=/usr/bin \
46- PIPX_MAN_DIR=/usr/share/man \
47- pipx install conan==${CONAN_VERSION}
53+ PIPX_MAN_DIR=/usr/share/man
54+ RUN pipx install --pip-args='--no-cache' conan==${CONAN_VERSION} && \
55+ pipx install --pip-args='--no-cache' gcovr==${GCOVR_VERSION}
4856
4957# Create the user to switch to, once all packages have been installed.
5058ARG NONROOT_USER
@@ -55,13 +63,14 @@ FROM base AS gcc
5563
5664# Install GCC.
5765ARG GCC_VERSION
58- RUN apt install -y gcc-${GCC_VERSION} g++-${GCC_VERSION}
66+ RUN <<EOF
67+ apt install -y gcc-${GCC_VERSION} g++-${GCC_VERSION}
68+ apt clean
69+ rm -rf /var/lib/apt/lists/*
70+ EOF
5971ENV CC=/usr/bin/gcc-${GCC_VERSION}
6072ENV CXX=/usr/bin/g++-${GCC_VERSION}
6173
62- # Clean up unnecessary files to reduce image size.
63- RUN rm -rf /var/lib/apt/lists/* && apt clean
64-
6574# Switch to the non-root user.
6675USER ${NONROOT_USER}
6776WORKDIR /home/${NONROOT_USER}
@@ -85,13 +94,14 @@ FROM base AS clang
8594
8695# Install Clang.
8796ARG CLANG_VERSION
88- RUN apt install -y clang-${CLANG_VERSION} llvm-${CLANG_VERSION}
97+ RUN <<EOF
98+ apt install -y clang-${CLANG_VERSION} llvm-${CLANG_VERSION}
99+ apt clean
100+ rm -rf /var/lib/apt/lists/*
101+ EOF
89102ENV CC=/usr/bin/clang-${CLANG_VERSION}
90103ENV CXX=/usr/bin/clang++-${CLANG_VERSION}
91104
92- # Clean up unnecessary files to reduce image size.
93- RUN rm -rf /var/lib/apt/lists/* && apt clean
94-
95105# Switch to the non-root user.
96106USER ${NONROOT_USER}
97107WORKDIR /home/${NONROOT_USER}
0 commit comments