From 90e8a54e3a482c3cee6afc6b430bb0aab7ee8f34 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Sun, 23 Feb 2020 19:39:26 -0600 Subject: [PATCH] Add docker-compose.yml to be used for compile tests Ideally this will be expanded in order to simplify compilation tests of DAHDI on supported distributions. Signed-off-by: Shaun Ruffell --- .gitignore | 2 ++ docker-compose.yml | 57 +++++++++++++++++++++++++++++++++++++++ test/docker/centos6 | 10 +++++++ test/docker/centos7 | 10 +++++++ test/docker/debianstable | 12 +++++++++ test/docker/debiantesting | 12 +++++++++ test/docker/fedorarawhide | 11 ++++++++ test/test-build.sh | 41 ++++++++++++++++++++++++++++ 8 files changed, 155 insertions(+) create mode 100644 docker-compose.yml create mode 100644 test/docker/centos6 create mode 100644 test/docker/centos7 create mode 100644 test/docker/debianstable create mode 100644 test/docker/debiantesting create mode 100644 test/docker/fedorarawhide create mode 100755 test/test-build.sh diff --git a/.gitignore b/.gitignore index 2bb0aea..1db8b9e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /.pc +.cache.mk *.[oa] *.mod *.mod.[oc] @@ -16,6 +17,7 @@ cscope.* *.symvers *.markers .*.o.d +*.ur-safe README.html modules.order diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8474a48 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,57 @@ +version: '3' +services: + + test-centos7: + build: + context: ./ + dockerfile: test/docker/centos7 + volumes: + - ./:/source + network_mode: "host" + security_opt: + - label=type:container_runtime_t + tty: true + + test-centos6: + build: + context: ./ + dockerfile: test/docker/centos6 + volumes: + - ./:/source + network_mode: "host" + security_opt: + - label=type:container_runtime_t + tty: true + + test-debianstable: + build: + context: ./ + dockerfile: test/docker/debianstable + volumes: + - ./:/source + network_mode: "host" + security_opt: + - label=type:container_runtime_t + tty: true + + test-debiantesting: + build: + context: ./ + dockerfile: test/docker/debiantesting + volumes: + - ./:/source + network_mode: "host" + security_opt: + - label=type:container_runtime_t + tty: true + + test-fedorarawhide: + build: + context: ./ + dockerfile: test/docker/fedorarawhide + volumes: + - ./:/source + network_mode: "host" + security_opt: + - label=type:container_runtime_t + tty: true diff --git a/test/docker/centos6 b/test/docker/centos6 new file mode 100644 index 0000000..cab2d90 --- /dev/null +++ b/test/docker/centos6 @@ -0,0 +1,10 @@ +FROM centos:6 + +RUN yum update -y +RUN yum install -y \ + gcc \ + git \ + make \ + wget +RUN yum install -y kernel-devel +CMD ["/source/test/test-build.sh"] diff --git a/test/docker/centos7 b/test/docker/centos7 new file mode 100644 index 0000000..c7bab9b --- /dev/null +++ b/test/docker/centos7 @@ -0,0 +1,10 @@ +FROM centos:7 + +RUN yum update -y +RUN yum install -y \ + gcc \ + git \ + make \ + wget +RUN yum install -y kernel-devel.x86_64 0:3.10.0-1062.12.1 +CMD ["/source/test/test-build.sh"] diff --git a/test/docker/debianstable b/test/docker/debianstable new file mode 100644 index 0000000..ec5dd39 --- /dev/null +++ b/test/docker/debianstable @@ -0,0 +1,12 @@ +FROM debian:stable + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update && apt-get install -y \ + gcc \ + git \ + linux-headers-amd64 \ + make \ + wget + +CMD ["/source/test/test-build.sh"] diff --git a/test/docker/debiantesting b/test/docker/debiantesting new file mode 100644 index 0000000..eb38601 --- /dev/null +++ b/test/docker/debiantesting @@ -0,0 +1,12 @@ +FROM debian:testing + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update && apt-get install -y \ + gcc \ + git \ + linux-headers-amd64 \ + make \ + wget + +CMD ["/source/test/test-build.sh"] diff --git a/test/docker/fedorarawhide b/test/docker/fedorarawhide new file mode 100644 index 0000000..08df5d8 --- /dev/null +++ b/test/docker/fedorarawhide @@ -0,0 +1,11 @@ +FROM fedora:rawhide + +RUN dnf update -y && dnf install -y \ + diffutils \ + gcc \ + git \ + kmod \ + make \ + wget +RUN dnf update -y && dnf install -y kernel-devel +CMD ["/source/test/test-build.sh"] diff --git a/test/test-build.sh b/test/test-build.sh new file mode 100755 index 0000000..cdb2b07 --- /dev/null +++ b/test/test-build.sh @@ -0,0 +1,41 @@ +#!/bin/sh +set -e + +if [ "$1" != "" ]; then + JOBS=$1 +fi + +if command -v apt >/dev/null; then + if [ ! -e /root/last-update ]; then + date > /root/last-update + fi + if [ -z "$(find /root/last-update -mmin -60)" ]; then + apt-get update && apt-get install -y linux-headers-amd64 + date > /root/last-update + fi + KERNELS=$(find /usr/src -maxdepth 1 -type d -name 'linux-headers-*' -not -name '*common*') +else + if command -v dnf > /dev/null ; then + dnf update kernel-devel + else + yum update kernel-devel + fi + KERNELS=$(find /usr/src/kernels -maxdepth 1 -type d -regextype sed -regex '.*[.]\(el\|fc\).*') +fi + +if [ "$KERNELS" = "" ]; then + echo >&2 "Failed to find any kernels" + exit 1 +fi + +# Copy the source into the container so we can run builds in parallel +rm -fr /root/code +cp -fr /source /root/code +cd /root/code + +for KSRC in $KERNELS ; do + echo "Building against $KSRC" + export KSRC=$KSRC + make -s clean + make -s -j $(grep -c "^processor" /proc/cpuinfo) +done