ConceptCore/Dockerfile

99 lines
3.3 KiB
Docker

# ubunutu is the base image
FROM ubuntu:jammy as cpp-builder
LABEL version="1.0"
LABEL maintainer="IRBorisov iborisov@acconcept.ru"
LABEL description="Linux build environment"
ARG LINUX_FLAVOR=ubuntu
ARG LINUX_DISTR=jammy
ARG DEBIAN_FRONTEND=noninteractive
# Install standard packages
RUN apt-get update -qq && \
apt-get full-upgrade -y && \
apt-get install -y --no-install-recommends \
nano \
wget \
curl \
tar \
unzip \
git \
software-properties-common \
build-essential \
gpg-agent && \
rm -rf /var/lib/apt/lists/*
# Install Python and Conan
RUN add-apt-repository -y ppa:deadsnakes/ppa && \
apt-get update -qq && \
apt-get install -y --no-install-recommends \
python3.12 \
python3.12-venv \
python3.12-dev && \
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12 && \
python3.12 -m pip install --upgrade pip setuptools && \
python3.12 -m pip install conan && \
rm -rf /var/lib/apt/lists/*
# Add GCC compiler
ARG GCC_VER="13"
RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -qq && \
apt-get install -y --no-install-recommends \
gcc-${GCC_VER} \
g++-${GCC_VER} && \
update-alternatives --install /usr/bin/gcc gcc $(which gcc-${GCC_VER}) 100 && \
update-alternatives --install /usr/bin/g++ g++ $(which g++-${GCC_VER}) 100 && \
rm -rf /var/lib/apt/lists/*
# Add Clang compiler
ARG LLVM_VER="18"
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 2>/dev/null
RUN add-apt-repository -y "deb http://apt.llvm.org/${LINUX_DISTR}/ llvm-toolchain-${LINUX_DISTR}-${LLVM_VER} main" && \
apt-get update -qq && \
apt-get install -y --no-install-recommends \
clang-${LLVM_VER} \
clang-tools-${LLVM_VER} \
clangd-${LLVM_VER} \
lld-${LLVM_VER} \
lldb-${LLVM_VER} \
llvm-${LLVM_VER} \
llvm-${LLVM_VER}-dev \
llvm-${LLVM_VER}-runtime \
libc++-${LLVM_VER}-dev \
libc++abi-${LLVM_VER}-dev \
libclang-${LLVM_VER}-dev \
libclang-common-${LLVM_VER}-dev \
libfuzzer-${LLVM_VER}-dev \
clang-tidy-${LLVM_VER} && \
update-alternatives --install /usr/bin/clang clang $(which clang-${LLVM_VER}) 100 && \
update-alternatives --install /usr/bin/clang++ clang++ $(which clang++-${LLVM_VER}) 100 && \
update-alternatives --install /usr/bin/clang-tidy clang-tidy $(which clang-tidy-${LLVM_VER}) 1 && \
rm -rf /var/lib/apt/lists/*
# Add CMake
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null \
| gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \
apt-add-repository "deb https://apt.kitware.com/${LINUX_FLAVOR}/ ${LINUX_DISTR} main" && \
apt-get update -qq && \
apt-get install -y --no-install-recommends \
cmake && \
rm -rf /var/lib/apt/lists/*
# Cleanup cached apt data we don't need anymore
RUN apt-get autoclean -y && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# ====================== END OF CPP-Python environment ==================
FROM cpp-builder as CCL
WORKDIR /home
COPY . /home
RUN sed -i 's/\r$//g' /home/BuildAll.sh && \
chmod +x /home/BuildAll.sh