summaryrefslogtreecommitdiff
path: root/travis-ci
diff options
context:
space:
mode:
authorFrantisek Sumsal <frantisek@sumsal.cz>2018-11-06 09:04:10 +0100
committerFrantisek Sumsal <frantisek@sumsal.cz>2018-11-06 15:56:52 +0100
commita9145fc488bdedccef095a4784a0364057d6233e (patch)
tree0e0bb86c69a518c09910075ca4bf5346cb330859 /travis-ci
parent3bbdc2f9d5b5afae3ce8fff54e853d4fc6ac54a9 (diff)
downloadsystemd-a9145fc488bdedccef095a4784a0364057d6233e.tar.gz
travis: move Docker setup to a separate script
This should make debugging somewhat easier
Diffstat (limited to 'travis-ci')
-rw-r--r--travis-ci/fedora-build.reqs44
-rwxr-xr-xtravis-ci/managers/fedora.sh65
2 files changed, 65 insertions, 44 deletions
diff --git a/travis-ci/fedora-build.reqs b/travis-ci/fedora-build.reqs
deleted file mode 100644
index 794bb253d1..0000000000
--- a/travis-ci/fedora-build.reqs
+++ /dev/null
@@ -1,44 +0,0 @@
- gcc
- gcc-c++
- libcap-devel
- libmount-devel
- pam-devel
- libselinux-devel
- audit-libs-devel
- cryptsetup-devel
- dbus-devel
- libacl-devel
- gobject-introspection-devel
- libblkid-devel
- xz-devel
- xz
- lz4-devel
- lz4
- bzip2-devel
- libidn2-devel
- libcurl-devel
- kmod-devel
- elfutils-devel
- libgcrypt-devel
- libgpg-error-devel
- gnutls-devel
- qrencode-devel
- libmicrohttpd-devel
- libxkbcommon-devel
- iptables-devel
- libxslt
- docbook-style-xsl
- pkgconfig
- gperf
- gawk
- tree
- python3-devel
- python3-lxml
- firewalld-filesystem
- gnu-efi gnu-efi-devel
- libseccomp-devel
- git
- meson
- gettext
- hostname
- python2
diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh
new file mode 100755
index 0000000000..1c8d38fcfb
--- /dev/null
+++ b/travis-ci/managers/fedora.sh
@@ -0,0 +1,65 @@
+#!/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 config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
+# dnf install -y docker-ce
+# systemctl start docker
+# export CONT_NAME="my-fancy-container"
+# travis-ci/managers/fedora.sh SETUP RUN CLEANUP
+
+PHASES=(${@:-SETUP RUN CLEANUP})
+FEDORA_RELEASE="${FEDORA_RELEASE:-rawhide}"
+CONT_NAME="${CONT_NAME:-fedora-$FEDORA_RELEASE-$RANDOM}"
+DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}"
+DOCKER_RUN="${DOCKER_RUN:-docker run}"
+REPO_ROOT="${REPO_ROOT:-$PWD}"
+ADDITIONAL_DEPS=(dnf-plugins-core iputils hostname libasan)
+
+function info() {
+ echo -e "\033[33;1m$1\033[0m"
+}
+
+set -e
+
+for phase in "${PHASES[@]}"; do
+ case $phase in
+ SETUP)
+ info "Setup phase"
+ info "Using Fedora $FEDORA_RELEASE"
+ MACHINE_ID="/etc/machine-id"
+ if [ ! -f $MACHINE_ID ]; then
+ MACHINE_ID="/var/lib/dbus/machine-id"
+ fi
+ # Pull a Docker image and start a new container
+ docker pull fedora:$FEDORA_RELEASE
+ info "Starting container $CONT_NAME"
+ $DOCKER_RUN -v $REPO_ROOT:/build:rw \
+ -v $MACHINE_ID:/etc/machine-id:ro \
+ -w /build --privileged=true --name $CONT_NAME \
+ -dit --net=host fedora:$FEDORA_RELEASE /sbin/init
+ $DOCKER_EXEC dnf makecache
+ # Install necessary build/test requirements
+ $DOCKER_EXEC dnf -y install "${ADDITIONAL_DEPS[@]}"
+ $DOCKER_EXEC dnf -y builddep systemd
+ ;;
+ RUN)
+ info "Run phase"
+ # Build systemd
+ $DOCKER_EXEC meson build
+ $DOCKER_EXEC ninja -C build
+ # Run 'make check'
+ $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