From 931637ceb7d606cc093de3f3e53324a8afc09260 Mon Sep 17 00:00:00 2001 From: Kenneth Bingham Date: Mon, 21 Aug 2023 15:30:45 -0400 Subject: [PATCH] install contemporary git and clang; resolves #5 --- docker-image/Dockerfile | 69 +++++++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 17 deletions(-) diff --git a/docker-image/Dockerfile b/docker-image/Dockerfile index 9f52a2d..23fb86d 100644 --- a/docker-image/Dockerfile +++ b/docker-image/Dockerfile @@ -4,20 +4,21 @@ # pin the cmake version to ensure repeatable builds ARG CMAKE_VERSION="3.26.3" +FROM gcc:11 as gcc-11 + # Ubuntu Bionic 18.04 LTS has GLIBC 2.27 FROM ubuntu:bionic ARG CMAKE_VERSION ARG XDG_CONFIG_HOME +ARG DEBIAN_FRONTEND=noninteractive LABEL org.opencontainers.image.authors="support@netfoundry.io" -ENV DEBIAN_FRONTEND=noninteractive -ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1 -ENV TZ=UTC - USER root +ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1 +ENV TZ=UTC ENV PATH="/usr/local/:${PATH}" # used by git to find global config in container that is writeable by the # developer's UID @@ -25,30 +26,61 @@ ENV GIT_CONFIG_GLOBAL="/tmp/ziti-builder-gitconfig" # used by build scripts to detect running in docker ENV BUILD_ENVIRONMENT="ziti-builder-docker" +### install gcc +COPY --from=gcc-11 /usr/local/bin/gcc /usr/local/bin/gcc +COPY --from=gcc-11 /usr/local/bin/g++ /usr/local/bin/g++ + RUN apt-get update \ - && apt-get -y install \ + && apt-get --yes --quiet --no-install-recommends install \ autoconf \ automake \ autopoint \ - build-essential \ crossbuild-essential-arm64 \ crossbuild-essential-armhf \ curl \ doxygen \ - git \ + dpkg-dev \ + gpg \ graphviz \ + libc-dev \ + libc6-dev \ libcap-dev \ libssl-dev \ libsystemd-dev \ libtool \ - ninja-build \ + make \ pkg-config \ python3 \ + python3-pip \ + software-properties-common \ tar \ unzip \ + wget \ zip \ zlib1g-dev \ - && rm -rf /var/lib/apt/lists/* + && apt-get --yes autoremove \ + && apt-get clean autoclean \ + && rm -fr /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +# provides patch releases for 1.11 in /usr/local/bin/ninja +RUN python3 -m pip install ninja~=1.11.0 + +RUN curl -sSLf https://apt.llvm.org/llvm-snapshot.gpg.key \ + | gpg --dearmor --output /usr/share/keyrings/llvm-snapshot.gpg \ + && chmod +r /usr/share/keyrings/llvm-snapshot.gpg +RUN echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main" \ + | tee /etc/apt/sources.list.d/llvm-snapshot.list >/dev/null + +RUN add-apt-repository ppa:git-core/ppa \ + && apt-get update \ + && apt-get --yes --quiet --no-install-recommends install \ + git \ + clang-7 \ + && apt-get --yes autoremove \ + && apt-get clean autoclean \ + && rm -fr /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* +RUN ln -s /usr/bin/clang-7 /usr/bin/clang +RUN ln -s /usr/bin/clang++-7 /usr/bin/clang++ RUN curl -sSfL https://cmake.org/files/v${CMAKE_VERSION%.*}/cmake-${CMAKE_VERSION}-linux-$(uname -m).sh -o cmake.sh \ && (bash cmake.sh --skip-license --prefix=/usr/local) \ @@ -59,14 +91,17 @@ RUN dpkg --add-architecture armhf RUN dpkg --add-architecture arm64 COPY ./crossbuild.list /etc/apt/sources.list.d/crossbuild.list RUN sed -Ei 's/^deb/deb [arch=amd64]/g' /etc/apt/sources.list -RUN apt-get update -RUN apt-get -y install \ - libcap-dev:armhf \ - libcap-dev:arm64 \ - zlib1g-dev:armhf \ - zlib1g-dev:arm64 \ - libssl-dev:armhf \ - libssl-dev:arm64 +RUN apt-get update \ + && apt-get --yes --quiet --no-install-recommends install \ + libcap-dev:armhf \ + libcap-dev:arm64 \ + zlib1g-dev:armhf \ + zlib1g-dev:arm64 \ + libssl-dev:armhf \ + libssl-dev:arm64 \ + && apt-get --yes autoremove \ + && apt-get clean autoclean \ + && rm -fr /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* ENV VCPKG_ROOT=/usr/local/vcpkg # this must be set on arm. see https://learn.microsoft.com/en-us/vcpkg/users/config-environment#vcpkg_force_system_binaries