You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
6.5 KiB
174 lines
6.5 KiB
From e5c78840b2b124400f56cb5fbaf2357cd8901218 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 |
|
|
|
--- |
|
.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 |
|
--- a/.travis.yml |
|
+++ b/.travis.yml |
|
@@ -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 |
|
--- /dev/null |
|
+++ b/ci/travis-centos-rhel8.sh |
|
@@ -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
|
|
|