From 3184371e8d274fe1e3abaa1739219f0f9e1736f7 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 24 Nov 2015 18:00:10 -0500 Subject: [PATCH] travisci --- .travis.yml | 31 +++++++++++++++ ci/travis-build.sh | 90 ++++++++++++++++++++++++++++++++++++++++++++ ci/travis-prepare.sh | 40 ++++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 .travis.yml create mode 100644 ci/travis-build.sh create mode 100644 ci/travis-prepare.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..11a7b443b --- /dev/null +++ b/.travis.yml @@ -0,0 +1,31 @@ +sudo: false +dist: trusty +language: c +compiler: + - gcc +env: + - CMPLR=gcc + - CMPLR=gcc EXTRA=CMD_CXXFLAGS=-std=c++11 + - CMPLR=gcc STATIC=YES + - CMPLR=clang + - CMPLR=clang STATIC=YES + - WINE=32 TEST=NO STATIC=YES + - RTEMS=4.10 TEST=NO + - RTEMS=4.9 TEST=NO +addons: + apt: + packages: + - libreadline6-dev + - libncurses5-dev + - perl + - clang + - g++-mingw-w64-i686 + - bison + - flex + - texinfo + - install-info +cache: + directories: + - $HOME/.cache +install: sh ci/travis-prepare.sh &2 + exit 1 +} + +ticker() { + while true + do + sleep 60 + date -R + [ -r "$1" ] && tail -n10 "$1" + done +} + +CACHEKEY=1 + +EPICS_HOST_ARCH=`sh startup/EpicsHostArch` + +[ -e configure/os/CONFIG_SITE.Common.linux-x86 ] || die "Wrong location: $PWD" + +case "$CMPLR" in +clang) + echo "Host compiler is clang" + cat << EOF >> configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH +GNU = NO +CMPLR_CLASS = clang +CC = clang +CCC = clang++ +EOF + ;; +*) echo "Host compiler is default";; +esac + +if [ "$STATIC" = "YES" ] +then + echo "Build static libraries/executables" + cat << EOF >> configure/CONFIG_SITE +SHARED_LIBRARIES=NO +STATIC_BUILD=YES +EOF +fi + +# requires wine and g++-mingw-w64-i686 +if [ "$WINE" = "32" ] +then + echo "Cross mingw32" + sed -i -e '/CMPLR_PREFIX/d' configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw + cat << EOF >> configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw +CMPLR_PREFIX=i686-w64-mingw32- +EOF + cat << EOF >> configure/CONFIG_SITE +CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw +EOF +fi + +# set RTEMS to eg. "4.9" or "4.10" +# requires qemu, bison, flex, texinfo, install-info +if [ -n "$RTEMS" ] +then + echo "Cross RTEMS${RTEMS} for pc386" + install -d /home/travis/.cache + curl -L "https://github.com/mdavidsaver/rsb/releases/download/travis-20160306-2/rtems${RTEMS}-i386-trusty-20190306-2.tar.gz" \ + | tar -C /home/travis/.cache -xj + + sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' configure/os/CONFIG_SITE.Common.RTEMS + cat << EOF >> configure/os/CONFIG_SITE.Common.RTEMS +RTEMS_VERSION=$RTEMS +RTEMS_BASE=/home/travis/.cache/rtems${RTEMS}-i386 +EOF + cat << EOF >> configure/CONFIG_SITE +CROSS_COMPILER_TARGET_ARCHS+=RTEMS-pc386 +EOF + + # find local qemu-system-i386 + export PATH="$HOME/.cache/qemu/usr/bin:$PATH" + echo -n "Using QEMU: " + type qemu-system-i386 || echo "Missing qemu" + EXTRA=RTEMS_QEMU_FIXUPS=YES +fi + +make -j2 $EXTRA + +if [ "$TEST" != "NO" ] +then + make tapfiles + find . -name '*.tap' -print0 | xargs -0 -n1 prove -e cat -f +fi diff --git a/ci/travis-prepare.sh b/ci/travis-prepare.sh new file mode 100644 index 000000000..fd8c6fb4b --- /dev/null +++ b/ci/travis-prepare.sh @@ -0,0 +1,40 @@ +#!/bin/sh +set -e -x + +die() { + echo "$1" >&2 + exit 1 +} + +CURDIR="$PWD" + +QDIR="$HOME/.cache/qemu" + +if [ -n "$RTEMS" -a "$TEST" = "YES" ] +then + git clone --quiet --branch vme --depth 10 https://github.com/mdavidsaver/qemu.git "$HOME/.build/qemu" + cd "$HOME/.build/qemu" + + HEAD=`git log -n1 --pretty=format:%H` + echo "HEAD revision $HEAD" + + [ -e "$HOME/.cache/qemu/built" ] && BUILT=`cat "$HOME/.cache/qemu/built"` + echo "Cached revision $BUILT" + + if [ "$HEAD" != "$BUILT" ] + then + echo "Building QEMU" + git submodule --quiet update --init + + install -d "$HOME/.build/qemu/build" + cd "$HOME/.build/qemu/build" + + "$HOME/.build/qemu/configure" --prefix="$HOME/.cache/qemu/usr" --target-list=i386-softmmu --disable-werror + make -j2 + make install + + echo "$HEAD" > "$HOME/.cache/qemu/built" + fi +fi + +cd "$CURDIR"