mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-18 18:55:51 +00:00
106 lines
3.4 KiB
Docker
106 lines
3.4 KiB
Docker
# TODO: change this when we are able to push gcc image to ghcr.io
|
|
FROM rippleci/clio_gcc:12.3.0 AS clio-gcc
|
|
FROM ghcr.io/xrplf/clio-tools:latest AS clio-tools
|
|
|
|
FROM ghcr.io/xrplf/clio-clang:16
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|
|
|
# Using root by default is not very secure but github checkout action doesn't work with any other user
|
|
# https://github.com/actions/checkout/issues/956
|
|
# And Github Actions doc recommends using root
|
|
# https://docs.github.com/en/actions/sharing-automations/creating-actions/dockerfile-support-for-github-actions#user
|
|
|
|
# hadolint ignore=DL3002
|
|
USER root
|
|
WORKDIR /root
|
|
|
|
ARG LLVM_TOOLS_VERSION=19
|
|
|
|
# Add repositories
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
|
curl \
|
|
gnupg \
|
|
wget \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${LLVM_TOOLS_VERSION} main" >> /etc/apt/sources.list \
|
|
&& wget --progress=dot:giga -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
|
|
|
# Install packages
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
|
bison \
|
|
clang-tidy-${LLVM_TOOLS_VERSION} \
|
|
clang-tools-${LLVM_TOOLS_VERSION} \
|
|
flex \
|
|
git \
|
|
git-lfs \
|
|
graphviz \
|
|
jq \
|
|
make \
|
|
ninja-build \
|
|
python3 \
|
|
python3-pip \
|
|
zip \
|
|
&& pip3 install -q --upgrade --no-cache-dir pip \
|
|
&& pip3 install -q --no-cache-dir \
|
|
cmake==3.31.6 \
|
|
conan==2.17.0 \
|
|
gcovr \
|
|
pre-commit \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install gcc-12 and make ldconfig aware of the new libstdc++ location (for gcc)
|
|
# Note: Clang is using libc++ instead
|
|
COPY --from=clio-gcc /gcc12.deb /
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
|
binutils \
|
|
libc6-dev \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& dpkg -i /gcc12.deb \
|
|
&& rm -rf /gcc12.deb \
|
|
&& ldconfig
|
|
|
|
# Rewire to use gcc-12 as default compiler
|
|
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 \
|
|
&& update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-12 100 \
|
|
&& update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 \
|
|
&& update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-12 100 \
|
|
&& update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-12 100 \
|
|
&& update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-12 100 \
|
|
&& update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-12 100
|
|
|
|
COPY --from=clio-tools \
|
|
/usr/local/bin/ccache \
|
|
/usr/local/bin/doxygen \
|
|
/usr/local/bin/ClangBuildAnalyzer \
|
|
/usr/local/bin/git-cliff \
|
|
/usr/local/bin/gh \
|
|
/usr/local/bin/
|
|
|
|
WORKDIR /root
|
|
|
|
# Setup conan
|
|
RUN conan remote add --index 0 ripple http://18.143.149.228:8081/artifactory/api/conan/dev
|
|
|
|
WORKDIR /root/.conan2/profiles
|
|
|
|
COPY conan/clang.profile ./clang
|
|
COPY conan/sanitizer_template.profile ./clang.asan
|
|
COPY conan/sanitizer_template.profile ./clang.tsan
|
|
COPY conan/sanitizer_template.profile ./clang.ubsan
|
|
|
|
COPY conan/gcc.profile ./gcc
|
|
COPY conan/sanitizer_template.profile ./gcc.asan
|
|
COPY conan/sanitizer_template.profile ./gcc.tsan
|
|
COPY conan/sanitizer_template.profile ./gcc.ubsan
|
|
|
|
WORKDIR /root
|