Skip to content

Commit

Permalink
Merge branch 'release/1.4.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
abeimler committed Jul 21, 2022
2 parents 55a2ece + c5ea17e commit 326c1c8
Show file tree
Hide file tree
Showing 111 changed files with 2,203 additions and 1,508 deletions.
31 changes: 15 additions & 16 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## base image
FROM abeimler/simple-cppbuilder:base as base
FROM abeimler/simple-cppbuilder:base AS base

# default compiler versions
ARG extra_libraries
Expand All @@ -18,6 +18,15 @@ RUN pacman-db-upgrade && \
# set default compiler
ENV CC "gcc"
ENV CXX "g++"
ENV CMAKE "cmake"
ENV MAKE "make"

# build script settings
ENV TARGET "all"
ENV BUILD_TYPE "Release"
ENV CMAKE_GENERATOR "Ninja"
ENV CMAKE_ARGS ""


# setup project env
WORKDIR /home/project
Expand All @@ -26,21 +35,11 @@ COPY ./scripts/docker-test.sh ./docker-test.sh

# install vcpkg
ENV VCPKG_DISABLE_METRICS 1
RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git
RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg
RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics
ENV VCPKG_ROOT "/home/project/vcpkg"

# build script settings
ENV TARGET "all"
ENV BUILD_TYPE "Release"
ENV CMAKE_GENERATOR "Ninja"
ENV VCPKG_TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV CMAKE_ARGS ""

ENV CMAKE "cmake"
ENV MAKE "make"
ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"

RUN mkdir build
#ENTRYPOINT ["/usr/bin/bash"]
#CMD ["./docker-build.sh"]
RUN mkdir build
12 changes: 5 additions & 7 deletions Dockerfile.android
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## base image
FROM abeimler/simple-cppbuilder:base as base
FROM abeimler/simple-cppbuilder:base AS base

ARG extra_libraries
ARG vcpkg_host_triplet="x64-linux"
Expand Down Expand Up @@ -27,7 +27,7 @@ RUN pacman-db-upgrade && \
# install android stuff
RUN runuser -l yay -c \
"yay -Syu --noconfirm && yay -S --noconfirm \
jdk-openjdk android-sdk android-sdk-platform-tools android-sdk-build-tools android-ndk \
jdk-openjdk android-platform android-sdk-build-tools \
android-pkg-config android-cmake android-environment" && \
runuser -l yay -c "yay -Scc --noconfirm" && \
rm -rf /home/yay/.cache/* && \
Expand All @@ -36,8 +36,6 @@ RUN runuser -l yay -c \
# setup project env
WORKDIR /home/project
COPY ./scripts/docker-build.android.sh ./docker-build.sh
COPY ./scripts/custom-env.android.sh /custom-env.sh
COPY ./scripts/docker-entrypoint.cross.sh /docker-entrypoint.sh

# install vcpkg
## https://github.com/microsoft/vcpkg/blob/master/docs/users/android.md
Expand All @@ -63,9 +61,11 @@ ENV ANDROID_TOOLCHAIN_FILE "${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cm
ENV ANDROID_PLATFORM_TOOLS "${ANDROID_HOME}/platform-tools"
ARG cmake_toolchain_file="${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake"
ENV CROSS_TOOLCHAIN "${ANDROID_TOOLCHAIN_FILE}"
ENV ANDROID_BUILD_TOOLS "${ANDROID_HOME}/build-tools/$ANDROID_BUILD_TOOLS_REVISION"

ARG setup_env_script="android-env $android_abi"
ENV SETUP_ENV_SCRIPT $setup_env_script
RUN . $setup_env_script

ENV CMAKE $CROSS_CMAKE
ENV MAKE $CROSS_MAKE
Expand All @@ -79,6 +79,4 @@ ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file
ENV CMAKE_ARGS ""

RUN mkdir build
ENTRYPOINT ["/docker-entrypoint.sh"]
#CMD ["./docker-build.sh"]
RUN mkdir build
16 changes: 9 additions & 7 deletions Dockerfile.android-21
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## base image
FROM abeimler/simple-cppbuilder:base as base
FROM abeimler/simple-cppbuilder:base AS base

ARG extra_libraries
ARG vcpkg_host_triplet="x64-linux"
Expand All @@ -25,18 +25,21 @@ RUN pacman-db-upgrade && \


# install android stuff
RUN echo '' >> /etc/pacman.conf && echo '[multilib]' >> /etc/pacman.conf && echo 'Include = /etc/pacman.d/mirrorlist' >> /etc/pacman.conf && pacman -Syyu
RUN pacman-db-upgrade && \
pacman -S --noconfirm \
lib32-zlib \
pacman -Scc --noconfirm
RUN runuser -l yay -c \
"yay -Syu --noconfirm && yay -S --noconfirm \
jdk-openjdk android-sdk android-sdk-platform-tools android-sdk-build-tools-21 android-ndk-21 \
jdk-openjdk android-platform-21 android-sdk-build-tools-21 \
android-pkg-config android-cmake android-environment" && \
runuser -l yay -c "yay -Scc --noconfirm" && \
rm -rf /home/yay/.cache/*

# setup project env
WORKDIR /home/project
COPY ./scripts/docker-build.android.sh ./docker-build.sh
COPY ./scripts/custom-env.android.sh /custom-env.sh
COPY ./scripts/docker-entrypoint.cross.sh /docker-entrypoint.sh

# install vcpkg
## https://github.com/microsoft/vcpkg/blob/master/docs/users/android.md
Expand Down Expand Up @@ -66,6 +69,7 @@ ENV CROSS_TOOLCHAIN "${ANDROID_TOOLCHAIN_FILE}"

ARG setup_env_script="android-env $android_abi"
ENV SETUP_ENV_SCRIPT $setup_env_script
RUN . $setup_env_script

ENV CMAKE $CROSS_CMAKE
ENV MAKE $CROSS_MAKE
Expand All @@ -79,6 +83,4 @@ ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV CHAINLOAD_TOOLCHAIN_FILE $cmake_toolchain_file
ENV CMAKE_ARGS ""

RUN mkdir build
ENTRYPOINT ["/docker-entrypoint.sh"]
#CMD ["./docker-build.sh"]
RUN mkdir build
7 changes: 4 additions & 3 deletions Dockerfile.base
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## base image
FROM archlinux:base-devel as base
FROM archlinux:base-devel AS base

ARG extra_libraries

Expand Down Expand Up @@ -51,12 +51,13 @@ ENV CONAN_SYSREQUIRES_SUDO 0
# leaving this flag undefined can cause some installation failures.
ENV CONAN_SYSREQUIRES_MODE enabled

ENV CMAKE "cmake"
ENV MAKE "make"

# set default compiler
ENV CC "gcc"
ENV CXX "g++"
ENV CMAKE "cmake"
ENV MAKE "make"

# setup project env
ENV PROJECT_DIR /home/project
WORKDIR /home/project
51 changes: 26 additions & 25 deletions Dockerfile.ci
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
## base image
FROM ubuntu:22.04 as base
FROM ubuntu:22.04 AS base

ARG extra_libraries

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -y && apt-get install --no-install-recommends -y gnupg software-properties-common && \
RUN apt-get update -yqq && \
apt-get install --no-install-recommends -y gnupg software-properties-common && \
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
apt-get update -y
apt-get update -y && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Install packages available from standard repos
RUN apt-get update -y && \
RUN apt-get update -yqq && \
apt-get install --no-install-recommends -yq \
gcc wget curl pkg-config zip unzip tar git build-essential && \
apt-get install --no-install-recommends -y \
clang binutils bison \
${extra_libraries} \
python3 python3-pip doxygen graphviz \
cmake make ninja-build ccache cppcheck cmake-extras \
clang-tidy clang-format \
valgrind gcovr linux-tools-common linux-tools-generic google-perftools \
neovim emacs nano && \
apt-get clean && rm -rf /var/lib/apt/lists/*
Expand All @@ -40,12 +43,11 @@ ENV CONAN_SYSREQUIRES_SUDO 0
# leaving this flag undefined can cause some installation failures.
ENV CONAN_SYSREQUIRES_MODE enabled

ENV CMAKE "cmake"
ENV MAKE "make"

# set default compiler
ENV CC "gcc"
ENV CXX "g++"
ENV CMAKE "cmake"
ENV MAKE "ninja"

# setup project env
WORKDIR /home/project
Expand All @@ -60,18 +62,23 @@ ARG extra_libraries

# Install packages available from standard repos
RUN apt-get update -y && \
apt-get install --no-install-recommends -yq \
gcc wget curl pkg-config zip unzip tar git build-essential && \
apt-get install --no-install-recommends -y \
clang binutils bison \
${extra_libraries} \
cmake make ninja-build && \
git ${extra_libraries} && \
apt-get clean && rm -rf /var/lib/apt/lists/*


# set default compiler
ENV CC "gcc"
ENV CXX "g++"
ENV CMAKE "cmake"
ENV MAKE "ninja"

# build script settings
ENV TARGET "all"
ENV BUILD_TYPE "Release"
ENV CMAKE_GENERATOR "Ninja"
ENV CMAKE_ARGS ""


# setup project env
WORKDIR /home/project
Expand All @@ -80,19 +87,13 @@ COPY ./scripts/docker-test.sh ./docker-test.sh

# install vcpkg
ENV VCPKG_DISABLE_METRICS 1
RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git
RUN ./vcpkg/bootstrap-vcpkg.sh -disableMetrics
RUN git clone --depth 1 https://github.com/Microsoft/vcpkg.git /home/project/vcpkg
RUN /home/project/vcpkg/bootstrap-vcpkg.sh -disableMetrics
ENV VCPKG_ROOT "/home/project/vcpkg"

# build script settings
ENV TARGET "all"
ENV BUILD_TYPE "Release"
ENV CMAKE_GENERATOR "Unix Makefiles"
ENV VCPKG_TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV TOOLCHAIN_FILE "/home/project/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV CMAKE_ARGS ""
ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
ENV TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"

ENV CMAKE "cmake"
ENV MAKE "make"

RUN mkdir build
ENV PROJECT_DIR /home/project
WORKDIR /home/project
RUN mkdir build
114 changes: 114 additions & 0 deletions Dockerfile.ci-setup-cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
## base image
FROM ubuntu:20.04 AS base

ARG extra_libraries

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -y -qq && apt-get install --no-install-recommends -y gnupg software-properties-common ca-certificates && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# keys used by apt
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1E9377A2BA9EF27F
# Install basic packages available from standard repos
RUN apt-get update -y -qq && \
apt-get install --no-install-recommends -yq \
wget curl pkg-config zip unzip tar git && \
apt-get clean && rm -rf /var/lib/apt/lists/*

# add setup_cpp
RUN wget --no-verbose "https://github.com/aminya/setup-cpp/releases/download/v0.18.0/setup_cpp_linux" -O /setup_cpp_linux
RUN chmod +x /setup_cpp_linux
RUN /setup_cpp_linux --compiler llvm --gcc true --make true --cmake true --ninja true --ccache true --doxygen true --gcovr true --cppcheck true --clangtidy true --clangformat true


# Install more tools from standard repos
RUN apt-get update -y && \
apt-get install --no-install-recommends -y \
${extra_libraries} cmake-extras \
valgrind linux-tools-common linux-tools-generic google-perftools \
python3 python3-pip \
neovim emacs nano && \
apt-get clean && rm -rf /var/lib/apt/lists/*

# Install more pip tools
RUN python3 -m pip install --upgrade pip setuptools && \
python3 -m pip install cogapp coverage

## Cleanup cached apt data we don't need anymore
RUN apt-get autoremove -y && apt-get clean && \
rm -rf /var/lib/apt/lists/*

# thx to https://github.com/lefticus/cpp_starter_project/pull/121
# By default, anything you run in Docker is done as superuser.
# Conan runs some install commands as superuser, and will prepend `sudo` to
# these commands, unless `CONAN_SYSREQUIRES_SUDO=0` is in your env variables.
ENV CONAN_SYSREQUIRES_SUDO 0
# Some packages request that Conan use the system package manager to install
# a few dependencies. This flag allows Conan to proceed with these installations;
# leaving this flag undefined can cause some installation failures.
ENV CONAN_SYSREQUIRES_MODE enabled


ENV SETUP_ENV_SCRIPT ~/.cpprc

# set default compiler
ENV CC "/root/llvm/bin/clang"
ENV CXX "/root/llvm/bin/clang++"
ENV CMAKE "cmake"
ENV MAKE "/root/ninja/ninja"

# setup project env
WORKDIR /home/project
RUN bash -c 'source ~/.cpprc'

CMD source ~/.cpprc
ENTRYPOINT [ "/bin/bash" ]



## ci image
FROM base AS ci-base

# default compiler versions
ARG extra_libraries

# Install packages available from standard repos
RUN apt-get update -y && \
apt-get install --no-install-recommends -y \
wget curl ${extra_libraries} && \
apt-get clean && rm -rf /var/lib/apt/lists/*


# set default compiler
ENV CC "/root/llvm/bin/clang"
ENV CXX "/root/llvm/bin/clang++"
ENV CMAKE "cmake"
ENV MAKE "/root/ninja/ninja"

# build script settings
ENV TARGET "all"
ENV BUILD_TYPE "Release"
ENV CMAKE_GENERATOR "Ninja"
ENV VCPKG_TOOLCHAIN_FILE "/root/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV TOOLCHAIN_FILE "/root/vcpkg/scripts/buildsystems/vcpkg.cmake"
ENV CMAKE_ARGS ""

# install vcpkg
ENV VCPKG_DISABLE_METRICS 1
RUN /setup_cpp_linux --vcpkg true
ENV VCPKG_ROOT "/root/vcpkg"

ENV VCPKG_TOOLCHAIN_FILE "$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"

# setup project env
ENV PROJECT_DIR /home/project
WORKDIR /home/project
COPY ./scripts/docker-build.setup-cpp.sh ./docker-build.sh
COPY ./scripts/docker-test.setup-cpp.sh ./docker-test.sh
RUN mkdir build

ENV SETUP_ENV_SCRIPT ~/.cpprc
RUN bash -c 'source ~/.cpprc'
CMD source ~/.cpprc
ENTRYPOINT [ "/bin/bash" ]
Loading

0 comments on commit 326c1c8

Please sign in to comment.