From f7fc668dda1a2590a3744738a4871eefc3953a38 Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Thu, 21 Sep 2017 12:56:30 +0200 Subject: [PATCH] ci: add single module build for Travis CI --- .ci/travis-build.sh | 10 ++++++ .ci/travis-prepare.sh | 77 +++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 26 +++++++++++++++ 3 files changed, 113 insertions(+) create mode 100755 .ci/travis-build.sh create mode 100755 .ci/travis-prepare.sh create mode 100644 .travis.yml diff --git a/.ci/travis-build.sh b/.ci/travis-build.sh new file mode 100755 index 000000000..36c49cf22 --- /dev/null +++ b/.ci/travis-build.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e -x + +make -j2 + +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 100755 index 000000000..8a001bc60 --- /dev/null +++ b/.ci/travis-prepare.sh @@ -0,0 +1,77 @@ +#!/bin/sh +set -e -x + +cat << EOF > configure/RELEASE.local +EPICS_BASE=$HOME/.source/epics-base +EOF + +install -d "$HOME/.source" +cd "$HOME/.source" + +add_base_module() +{ +MODULE=$1 +BRANCH=$2 +( cd epics-base/modules && \ +git clone --quiet --depth 5 --branch "$MODULE"/"$BRANCH" https://github.com/${REPOBASE:-epics-base}/epics-base.git "$MODULE" && \ +cd "$MODULE" && \ +git log -n1 ) +} + +git clone --quiet --depth 5 --branch core/"$BRCORE" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base +( cd epics-base && git log -n1 ) +add_base_module libcom "$BRLIBCOM" +add_base_module ca "$BRCA" + +EPICS_HOST_ARCH=`sh epics-base/startup/EpicsHostArch` + +# requires wine and g++-mingw-w64-i686 +if [ "$WINE" = "32" ] +then + echo "Cross mingw32" + sed -i -e '/CMPLR_PREFIX/d' epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw + cat << EOF >> epics-base/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw +CMPLR_PREFIX=i686-w64-mingw32- +EOF + cat << EOF >> epics-base/configure/CONFIG_SITE +CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw +EOF +fi + +if [ "$STATIC" = "YES" ] +then + echo "Build static libraries/executables" + cat << EOF >> epics-base/configure/CONFIG_SITE +SHARED_LIBRARIES=NO +STATIC_BUILD=YES +EOF +fi + +case "$CMPLR" in +clang) + echo "Host compiler is clang" + cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH +GNU = NO +CMPLR_CLASS = clang +CC = clang +CCC = clang++ +EOF + + # hack + sed -i -e 's/CMPLR_CLASS = gcc/CMPLR_CLASS = clang/' epics-base/configure/CONFIG.gnuCommon + + clang --version + ;; +*) + echo "Host compiler is default" + gcc --version + ;; +esac + +cat <> epics-base/configure/CONFIG_SITE +USR_CPPFLAGS += $USR_CPPFLAGS +USR_CFLAGS += $USR_CFLAGS +USR_CXXFLAGS += $USR_CXXFLAGS +EOF + +make -j2 -C epics-base diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..e195e9f2b --- /dev/null +++ b/.travis.yml @@ -0,0 +1,26 @@ +sudo: false +dist: trusty +language: c +compiler: + - gcc +addons: + apt: + packages: + - libreadline6-dev + - libncurses5-dev + - perl + - clang + - g++-mingw-w64-i686 +install: + - ./.ci/travis-prepare.sh +script: + - ./.ci/travis-build.sh +env: +- BRCORE=master BRLIBCOM=master BRCA=master +- CMPLR=clang BRCORE=master BRLIBCOM=master BRCA=master +- USR_CXXFLAGS=-std=c++11 BRCORE=master BRLIBCOM=master BRCA=master +- CMPLR=clang USR_CXXFLAGS=-std=c++11 BRCORE=master BRLIBCOM=master BRCA=master +- WINE=32 TEST=NO STATIC=YES BRCORE=master BRLIBCOM=master BRCA=master +- WINE=32 TEST=NO STATIC=NO BRCORE=master BRLIBCOM=master BRCA=master +- RTEMS=4.10 TEST=NO BRCORE=master BRLIBCOM=master BRCA=master +- RTEMS=4.9 TEST=NO BRCORE=master BRLIBCOM=master BRCA=master