From b54028fba7c97321398974219701048e4490024e Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 26 Oct 2019 15:13:01 +0200 Subject: [PATCH] docker: enable builds for Centos --- .gitlab-ci.yml | 23 ++++++++++++++- packaging/docker/Dockerfile.dev-centos | 40 +++++++++++++++++++------- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1e313520d..48ca8cb1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,6 +48,12 @@ prepare:ubuntu:docker-dev: DOCKER_FILE: packaging/docker/Dockerfile.dev-ubuntu DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu +prepare:centos:docker-dev: + extends: prepare:fedora:docker-dev + variables: + DOCKER_FILE: packaging/docker/Dockerfile.dev-centos + DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos + prepare:debian-armhf:docker-dev: extends: prepare:fedora:docker-dev variables: @@ -90,6 +96,16 @@ build:ubuntu:x86_64: DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu CMAKE_OPTS: -DCMAKE_MODULE_PATH=/usr/local/lib64/cmake -DCMAKE_PREFIX_PATH=/usr/local +build:centos:x86_64: + extends: build:fedora:x86_64 + script: + - mkdir -p build && cd build + - cmake3 .. ${CMAKE_OPTS} + - make ${MAKE_OPTS} + variables: + DOCKER_IMAGE_DEV: registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos + CMAKE_OPTS: -DCMAKE_MODULE_PATH=/usr/local/lib64/cmake -DCMAKE_PREFIX_PATH=/usr/local + build:raspbian:armv6l: extends: build:fedora:x86_64 variables: @@ -178,7 +194,12 @@ packaging:docker: --file packaging/docker/Dockerfile.app --tag ${DOCKER_IMAGE}:${DOCKER_TAG} . - docker push ${DOCKER_IMAGE}:${DOCKER_TAG} - - docker push ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-ubuntu + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-centos + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-raspbian + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-arm64 + - docker push registry.git.rwth-aachen.de/acs/public/villas/node/dev-debian-armhf tags: - shell - linux diff --git a/packaging/docker/Dockerfile.dev-centos b/packaging/docker/Dockerfile.dev-centos index 2535797b9..bed2e1c73 100644 --- a/packaging/docker/Dockerfile.dev-centos +++ b/packaging/docker/Dockerfile.dev-centos @@ -38,7 +38,7 @@ ARG VERSION=unknown ARG VARIANT=unknown # Some of the dependencies are only available in our own repo -ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ +ADD https://packages.fein-aachen.org/redhat/fein.repo /etc/yum.repos.d/ USER root @@ -48,7 +48,7 @@ RUN yum -y install epel-release # Toolchain RUN yum -y install \ devtoolset-7-toolchain \ - pkgconfig make cmake \ + pkgconfig make cmake3 \ autoconf automake autogen libtool \ flex bison \ texinfo git curl tar \ @@ -84,28 +84,48 @@ RUN yum -y install \ libwebsockets-devel \ zeromq-devel \ nanomsg \ - libiec61850 \ librabbitmq-devel \ mosquitto-devel \ - comedilib-devel \ libibverbs-devel \ librdmacm-devel \ re-devel \ - uldaq-devel \ - spdlog-devel + uldaq-devel + +# Build & Install fmtlib +RUN cd /tmp && \ + git clone --recursive https://github.com/fmtlib/fmt.git && \ + mkdir -p fmt/build && cd fmt/build && \ + git checkout 5.2.0 && \ + cmake3 -DBUILD_SHARED_LIBS=1 .. && make -j$(nproc) install && \ + rm -rf /tmp/* + +# Build & Install spdlog +RUN cd /tmp && \ + git clone --recursive https://github.com/gabime/spdlog.git && \ + mkdir -p spdlog/build && cd spdlog/build && \ + git checkout v1.3.1 && \ + cmake3 -DCMAKE_BUILD_TYPE=Release -DSPDLOG_FMT_EXTERNAL=1 -DSPDLOG_BUILD_BENCH=OFF .. && make -j$(nproc) install && \ + rm -rf /tmp/* # Build & Install Criterion RUN cd /tmp && \ git clone --recursive https://github.com/Snaipe/Criterion && \ mkdir -p Criterion/build && cd Criterion/build && \ - cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make install && \ + cmake3 -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make install && \ rm -rf /tmp/* -# Build & Install Criterion +# Build & Install libwebsockets RUN cd /tmp && \ - git clone -b v2.4-stable http://github.com/warmcat/libwebsockets && \ + git clone -b v3.1-stable https://github.com/warmcat/libwebsockets && \ mkdir -p libwebsockets/build && cd libwebsockets/build && \ - cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make install && \ + cmake3 -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 -DLWS_WITHOUT_TESTAPPS=ON .. && make -j$(nproc) install && \ + rm -rf /tmp/* + +# Build & Install libiec61850 +RUN cd /tmp && \ + git clone -b v1.3.1 https://github.com/mz-automation/libiec61850 && \ + mkdir -p libiec61850/build && cd libiec61850/build && \ + cmake3 -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make -j$(nproc) install && \ rm -rf /tmp/* # Workaround for libnl3's search path for netem distributions