build: install cmake at docker build phase rather than at runtime

Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
This commit is contained in:
Leonardo Di Donato 2019-07-11 10:44:33 +02:00 committed by Leo Di Donato
parent d5aae4aff5
commit e92a721521
2 changed files with 32 additions and 39 deletions

View File

@ -7,11 +7,13 @@ ENV BUILD_BPF OFF
ENV BUILD_WARNINGS_AS_ERRORS ON ENV BUILD_WARNINGS_AS_ERRORS ON
ENV MAKE_JOBS 4 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 && \ 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 && \ 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 && \ 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 \ yum -y install \
createrepo \ createrepo \
devtoolset-2-toolchain \ devtoolset-2-toolchain \
dpkg \ dpkg \
@ -21,11 +23,10 @@ RUN curl -o /etc/yum.repos.d/devtools-2.repo https://people.centos.org/tru/devto
gcc-c++ \ gcc-c++ \
git \ git \
glibc-static \ glibc-static \
libcurl-devel \ libcurl-devel \
make \ make \
curl \ curl \
libcurl-devel \ zlib-devel \
zlib-devel \
pkg-config \ pkg-config \
rpm-build \ rpm-build \
unzip \ unzip \
@ -34,16 +35,24 @@ RUN curl -o /etc/yum.repos.d/devtools-2.repo https://people.centos.org/tru/devto
autoconf \ autoconf \
automake \ automake \
libtool && \ libtool && \
yum -y install \ yum -y install \
glibc-devel.i686 \ glibc-devel.i686 \
devtoolset-2-libstdc++-devel.i686 \ devtoolset-2-libstdc++-devel.i686 \
devtoolset-2-elfutils-libelf-devel && \ devtoolset-2-elfutils-libelf-devel && \
yum clean all yum clean all
RUN curl -o docker.tgz https://get.docker.com/builds/Linux/x86_64/docker-1.11.0.tgz && \ RUN curl -o docker.tgz https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz && \
tar xfz docker.tgz docker/docker && \ tar xfz docker.tgz docker/docker && \
mv docker/docker /usr/local/bin/docker && \ mv docker/docker /usr/local/bin/docker && \
chmod +x /usr/local/bin/docker && \ chmod +x /usr/local/bin/docker && \
rm -fr docker.tgz 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 # TEMPORARY until dependencies in CMakeLists.txt are fixed
RUN yum -y install libyaml-devel RUN yum -y install libyaml-devel

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
set -euxo pipefail set -euxo pipefail
@ -7,34 +7,18 @@ BUILD_DIR=/build
TASK=${1:-all} TASK=${1:-all}
MANPATH= MANPATH=
. /opt/rh/devtoolset-2/enable . /opt/rh/devtoolset-2/enable
# Download and install cmake if not downloaded if [ "$TASK" == "cmake" ]; then
CMAKE_DIR=$BUILD_DIR/cmake mkdir -p "$BUILD_DIR/$BUILD_TYPE"
if [ ! -e $CMAKE_DIR ]; then cd "$BUILD_DIR/$BUILD_TYPE"
cd $BUILD_DIR 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
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
exit 0 exit 0
fi fi
if [ $TASK == "bash" ]; then if [ "$TASK" == "bash" ]; then
exec /bin/bash exec /bin/bash
fi fi
cd $BUILD_DIR/$BUILD_TYPE cd "$BUILD_DIR/$BUILD_TYPE"
make -j$MAKE_JOBS $TASK make -j"$MAKE_JOBS" "$TASK"