| From 45b0a38b47e07186dfe35095c7d8b1e4c2524d80 Mon Sep 17 00:00:00 2001 |
| From: Frantisek Sumsal <fsumsal@redhat.com> |
| Date: Mon, 14 Jan 2019 14:49:32 +0100 |
| Subject: [PATCH] travis: RHEL8 support |
| |
| (cherry picked from commit e5c78840b2b124400f56cb5fbaf2357cd8901218) |
| |
| .travis.yml | 8 +- |
| ...ravis-centos.sh => travis-centos-rhel7.sh} | 0 |
| ci/travis-centos-rhel8.sh | 130 ++++++++++++++++++ |
| 3 files changed, 135 insertions(+), 3 deletions(-) |
| rename ci/{travis-centos.sh => travis-centos-rhel7.sh} (100%) |
| create mode 100755 ci/travis-centos-rhel8.sh |
| |
| diff --git a/.travis.yml b/.travis.yml |
| index fc63887324..1c4e6f9728 100644 |
| |
| |
| @@ -19,11 +19,13 @@ jobs: |
| - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce |
| - docker --version |
| install: |
| - - $CI_ROOT/travis-centos.sh SETUP |
| + - RHEL_VERSION="rhel7" |
| + - [ -f meson.build ] && RHEL_VERSION="rhel8" |
| + - $CI_ROOT/travis-centos-${RHEL_VERSION}.sh SETUP |
| script: |
| - set -e |
| # Build systemd |
| - - $CI_ROOT/travis-centos.sh RUN |
| + - $CI_ROOT/travis-centos-${RHEL_VERSION}.sh RUN |
| - set +e |
| after_script: |
| - - $CI_ROOT/travis-centos.sh CLEANUP |
| + - $CI_ROOT/travis-centos-${RHEL_VERSION}.sh CLEANUP |
| diff --git a/ci/travis-centos.sh b/ci/travis-centos-rhel7.sh |
| similarity index 100% |
| rename from ci/travis-centos.sh |
| rename to ci/travis-centos-rhel7.sh |
| diff --git a/ci/travis-centos-rhel8.sh b/ci/travis-centos-rhel8.sh |
| new file mode 100755 |
| index 0000000000..968603f949 |
| |
| |
| @@ -0,0 +1,130 @@ |
| +#!/bin/bash |
| + |
| +# Run this script from the root of the systemd's git repository |
| +# or set REPO_ROOT to a correct path. |
| +# |
| +# Example execution on Fedora: |
| +# dnf install docker |
| +# systemctl start docker |
| +# export CONT_NAME="my-fancy-container" |
| +# ci/travis-centos.sh SETUP RUN CLEANUP |
| + |
| +PHASES=(${@:-SETUP RUN CLEANUP}) |
| +CENTOS_RELEASE="${CENTOS_RELEASE:-latest}" |
| +CONT_NAME="${CONT_NAME:-centos-$CENTOS_RELEASE-$RANDOM}" |
| +DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}" |
| +DOCKER_RUN="${DOCKER_RUN:-docker run}" |
| +REPO_ROOT="${REPO_ROOT:-$PWD}" |
| +ADDITIONAL_DEPS=(systemd-ci-environment libidn2-devel python-lxml python36 ninja-build libasan net-tools strace nc busybox e2fsprogs quota dnsmasq) |
| +# Repo with additional depencencies to compile newer systemd on CentOS 7 |
| +COPR_REPO="https://copr.fedorainfracloud.org/coprs/mrc0mmand/systemd-centos-ci/repo/epel-7/mrc0mmand-systemd-centos-ci-epel-7.repo" |
| +COPR_REPO_PATH="/etc/yum.repos.d/${COPR_REPO##*/}" |
| + |
| +function info() { |
| + echo -e "\033[33;1m$1\033[0m" |
| +} |
| + |
| +set -e |
| + |
| +source "$(dirname $0)/travis_wait.bash" |
| + |
| +for phase in "${PHASES[@]}"; do |
| + case $phase in |
| + SETUP) |
| + info "Setup phase" |
| + info "Using Travis $CENTOS_RELEASE" |
| + # Pull a Docker image and start a new container |
| + docker pull centos:$CENTOS_RELEASE |
| + info "Starting container $CONT_NAME" |
| + $DOCKER_RUN -v $REPO_ROOT:/build:rw \ |
| + -w /build --privileged=true --name $CONT_NAME \ |
| + -dit --net=host centos:$CENTOS_RELEASE /sbin/init |
| + # Beautiful workaround for Fedora's version of Docker |
| + sleep 1 |
| + $DOCKER_EXEC yum makecache |
| + $DOCKER_EXEC curl "$COPR_REPO" -o "$COPR_REPO_PATH" |
| + $DOCKER_EXEC yum -q -y install epel-release yum-utils |
| + $DOCKER_EXEC yum-config-manager -q --enable epel |
| + $DOCKER_EXEC yum -y --exclude selinux-policy\* upgrade |
| + # Install necessary build/test requirements |
| + $DOCKER_EXEC yum -y install "${ADDITIONAL_DEPS[@]}" |
| + $DOCKER_EXEC python3.6 -m ensurepip |
| + $DOCKER_EXEC python3.6 -m pip install meson |
| + # Create necessary symlinks |
| + $DOCKER_EXEC ln --force -s /usr/bin/python3.6 /usr/bin/python3 |
| + $DOCKER_EXEC ln --force -s /usr/bin/ninja-build /usr/bin/ninja |
| + ;; |
| + RUN) |
| + info "Run phase" |
| + # Build systemd |
| + CONFIGURE_OPTS=( |
| + # RHEL8 options |
| + -Dsysvinit-path=/etc/rc.d/init.d |
| + -Drc-local=/etc/rc.d/rc.local |
| + -Ddns-servers='' |
| + -Ddev-kvm-mode=0666 |
| + -Dkmod=true |
| + -Dxkbcommon=true |
| + -Dblkid=true |
| + -Dseccomp=true |
| + -Dima=true |
| + -Dselinux=true |
| + -Dapparmor=false |
| + -Dpolkit=true |
| + -Dxz=true |
| + -Dzlib=true |
| + -Dbzip2=true |
| + -Dlz4=true |
| + -Dpam=true |
| + -Dacl=true |
| + -Dsmack=true |
| + -Dgcrypt=true |
| + -Daudit=true |
| + -Delfutils=true |
| + -Dlibcryptsetup=true |
| + -Delfutils=true |
| + -Dqrencode=false |
| + -Dgnutls=true |
| + -Dmicrohttpd=true |
| + -Dlibidn2=true |
| + -Dlibiptc=true |
| + -Dlibcurl=true |
| + -Defi=true |
| + -Dtpm=true |
| + -Dhwdb=true |
| + -Dsysusers=true |
| + -Ddefault-kill-user-processes=false |
| + -Dtests=unsafe |
| + -Dinstall-tests=true |
| + -Dtty-gid=5 |
| + -Dusers-gid=100 |
| + -Dnobody-user=nobody |
| + -Dnobody-group=nobody |
| + -Dsplit-usr=false |
| + -Dsplit-bin=true |
| + -Db_lto=false |
| + -Dnetworkd=false |
| + -Dtimesyncd=false |
| + -Ddefault-hierarchy=legacy |
| + # Custom options |
| + -Dslow-tests=true |
| + -Dtests=unsafe |
| + -Dinstall-tests=true |
| + ) |
| + docker exec -it -e CFLAGS='-g -O0 -ftrapv' $CONT_NAME meson build "${CONFIGURE_OPTS[@]}" |
| + $DOCKER_EXEC ninja -v -C build |
| + # "Mask" the udev-test.pl, as it requires newer version of systemd-detect-virt |
| + # and it's pointless to run it on a VM in a Docker container... |
| + echo -ne "#!/usr/bin/perl\nexit(0);\n" > "test/udev-test.pl" |
| + $DOCKER_EXEC ninja -C build test |
| + ;; |
| + CLEANUP) |
| + info "Cleanup phase" |
| + docker stop $CONT_NAME |
| + docker rm -f $CONT_NAME |
| + ;; |
| + *) |
| + echo >&2 "Unknown phase '$phase'" |
| + exit 1 |
| + esac |
| +done |