From e92a721521572ce5780c379cccb06e13fbd27bf3 Mon Sep 17 00:00:00 2001 From: Leonardo Di Donato Date: Thu, 11 Jul 2019 10:44:33 +0200 Subject: [PATCH] build: install cmake at docker build phase rather than at runtime Signed-off-by: Leonardo Di Donato --- docker/builder/Dockerfile | 39 ++++++++++++++++++++++-------------- docker/builder/entrypoint.sh | 32 ++++++++--------------------- 2 files changed, 32 insertions(+), 39 deletions(-) diff --git a/docker/builder/Dockerfile b/docker/builder/Dockerfile index b4bf75cb..12850bc2 100644 --- a/docker/builder/Dockerfile +++ b/docker/builder/Dockerfile @@ -7,11 +7,13 @@ ENV BUILD_BPF OFF ENV BUILD_WARNINGS_AS_ERRORS ON ENV MAKE_JOBS 4 -# copied from builder script +ARG DOCKER_VERSION=1.11.0 +ARG CMAKE_VERSION=3.14.5 + RUN curl -o /etc/yum.repos.d/devtools-2.repo https://people.centos.org/tru/devtools-2/devtools-2.repo && \ - rpm -i http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm && \ - sed -e 's,$basearch,i386,' -e 's,$releasever\],$releasever-i686\],' /etc/yum.repos.d/devtools-2.repo > /etc/yum.repos.d/devtools-2-i686.repo && \ - yum -y install \ + rpm -i http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm && \ + sed -e 's,$basearch,i386,' -e 's,$releasever\],$releasever-i686\],' /etc/yum.repos.d/devtools-2.repo > /etc/yum.repos.d/devtools-2-i686.repo && \ + yum -y install \ createrepo \ devtoolset-2-toolchain \ dpkg \ @@ -21,11 +23,10 @@ RUN curl -o /etc/yum.repos.d/devtools-2.repo https://people.centos.org/tru/devto gcc-c++ \ git \ glibc-static \ - libcurl-devel \ + libcurl-devel \ make \ - curl \ - libcurl-devel \ - zlib-devel \ + curl \ + zlib-devel \ pkg-config \ rpm-build \ unzip \ @@ -34,16 +35,24 @@ RUN curl -o /etc/yum.repos.d/devtools-2.repo https://people.centos.org/tru/devto autoconf \ automake \ libtool && \ - yum -y install \ + yum -y install \ glibc-devel.i686 \ devtoolset-2-libstdc++-devel.i686 \ devtoolset-2-elfutils-libelf-devel && \ - yum clean all -RUN curl -o docker.tgz https://get.docker.com/builds/Linux/x86_64/docker-1.11.0.tgz && \ - tar xfz docker.tgz docker/docker && \ - mv docker/docker /usr/local/bin/docker && \ - chmod +x /usr/local/bin/docker && \ - rm -fr docker.tgz docker/ + yum clean all +RUN curl -o docker.tgz https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz && \ + tar xfz docker.tgz docker/docker && \ + mv docker/docker /usr/local/bin/docker && \ + chmod +x /usr/local/bin/docker && \ + rm -fr docker.tgz docker/ +RUN . /opt/rh/devtoolset-2/enable && \ + cd /tmp && \ + wget -nv -O - https://github.com/kitware/cmake/releases/download/v$CMAKE_VERSION/cmake-${CMAKE_VERSION}.tar.gz | tar zx; \ + cd /tmp/cmake-${CMAKE_VERSION} && \ + ./bootstrap --system-curl && \ + make -j${MAKE_JOBS} && \ + make install && \ + rm -rf /tmp/cmake-${CMAKE_VERSION} # TEMPORARY until dependencies in CMakeLists.txt are fixed RUN yum -y install libyaml-devel diff --git a/docker/builder/entrypoint.sh b/docker/builder/entrypoint.sh index 6632f73a..a04407bc 100755 --- a/docker/builder/entrypoint.sh +++ b/docker/builder/entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -euxo pipefail @@ -7,34 +7,18 @@ BUILD_DIR=/build TASK=${1:-all} MANPATH= - . /opt/rh/devtoolset-2/enable -# Download and install cmake if not downloaded -CMAKE_DIR=$BUILD_DIR/cmake -if [ ! -e $CMAKE_DIR ]; then - cd $BUILD_DIR - mkdir -p $BUILD_DIR/cmake - wget -nv https://s3.amazonaws.com/download.draios.com/dependencies/cmake-3.3.2.tar.gz - tar -C $CMAKE_DIR --strip-components 1 -xzf cmake-3.3.2.tar.gz - cd $CMAKE_DIR - ./bootstrap --system-curl - make -j$MAKE_JOBS -fi - -if [ $TASK == "cmake" ]; then - mkdir -p $BUILD_DIR/$BUILD_TYPE - cd $BUILD_DIR/$BUILD_TYPE - $CMAKE_DIR/bin/cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DFALCO_VERSION=$FALCO_VERSION -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_DRIVER=${BUILD_DRIVER} -DBUILD_BPF=${BUILD_BPF} -DBUILD_WARNINGS_AS_ERRORS=${BUILD_WARNINGS_AS_ERRORS} $SOURCE_DIR/falco +if [ "$TASK" == "cmake" ]; then + mkdir -p "$BUILD_DIR/$BUILD_TYPE" + cd "$BUILD_DIR/$BUILD_TYPE" + cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" -DFALCO_VERSION="$FALCO_VERSION" -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_DRIVER="$BUILD_DRIVER" -DBUILD_BPF="$BUILD_BPF" -DBUILD_WARNINGS_AS_ERRORS="$BUILD_WARNINGS_AS_ERRORS" $SOURCE_DIR/falco exit 0 fi -if [ $TASK == "bash" ]; then +if [ "$TASK" == "bash" ]; then exec /bin/bash fi -cd $BUILD_DIR/$BUILD_TYPE -make -j$MAKE_JOBS $TASK - - - +cd "$BUILD_DIR/$BUILD_TYPE" +make -j"$MAKE_JOBS" "$TASK" \ No newline at end of file