From 094b61274e7da0a9e52656a15c60ea05d14da41e Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 19 Dec 2019 20:45:18 -0800 Subject: [PATCH] travis switch to ci-scripts --- .ci | 1 + .ci-local/defaults.set | 11 ++++ .ci/travis-build.sh | 10 ---- .ci/travis-prepare.sh | 111 --------------------------------------- .gitmodules | 3 ++ .travis.yml | 116 ++++++++++++++++++++++++++++++++++------- 6 files changed, 112 insertions(+), 140 deletions(-) create mode 160000 .ci create mode 100644 .ci-local/defaults.set delete mode 100755 .ci/travis-build.sh delete mode 100755 .ci/travis-prepare.sh create mode 100644 .gitmodules diff --git a/.ci b/.ci new file mode 160000 index 0000000..7de5a7e --- /dev/null +++ b/.ci @@ -0,0 +1 @@ +Subproject commit 7de5a7edc391d1b908828f2aa8118a5a6ce27021 diff --git a/.ci-local/defaults.set b/.ci-local/defaults.set new file mode 100644 index 0000000..37baf57 --- /dev/null +++ b/.ci-local/defaults.set @@ -0,0 +1,11 @@ +# EPICS Base +BASE_DIRNAME=base +BASE_REPONAME=epics-base +BASE_REPOOWNER=epics-base +BASE_VARNAME=EPICS_BASE +BASE_RECURSIVE=NO + +MODULES=PVDATA + +PVDATA_REPONAME=pvDataCPP +PVDATA_REPOOWNER=epics-base diff --git a/.ci/travis-build.sh b/.ci/travis-build.sh deleted file mode 100755 index b366eea..0000000 --- a/.ci/travis-build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -set -e -x - -make -j2 $EXTRA - -if [ "$TEST" != "NO" ] -then - make tapfiles - make -s test-results -fi diff --git a/.ci/travis-prepare.sh b/.ci/travis-prepare.sh deleted file mode 100755 index aa85594..0000000 --- a/.ci/travis-prepare.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/sh -set -e -x - -CURDIR="$PWD" - -cat << EOF > $CURDIR/configure/RELEASE.local -EPICS_BASE=$HOME/.source/epics-base -EOF - -install -d "$HOME/.source" -cd "$HOME/.source" - -add_gh_flat() { - MODULE=$1 - REPOOWNER=$2 - REPONAME=$3 - BRANCH=$4 - MODULE_UC=$(echo $MODULE | tr 'a-z' 'A-Z') - ( git clone --quiet --depth 5 --branch $BRANCH https://github.com/$REPOOWNER/$REPONAME.git $MODULE && \ - cd $MODULE && git log -n1 ) - cat < $CURDIR/configure/RELEASE.local > $MODULE/configure/RELEASE.local - cat << EOF >> $CURDIR/configure/RELEASE.local -${MODULE_UC}=$HOME/.source/$MODULE -EOF -} - -# not recursive -git clone --quiet --depth 5 --branch "$BRBASE" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base -(cd epics-base && git log -n1 ) -add_gh_flat pvData ${REPOPVD:-epics-base} pvDataCPP ${BRPVD:-master} - -if [ -e $CURDIR/configure/RELEASE.local ] -then - cat $CURDIR/configure/RELEASE.local -fi - -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 - -# 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" - curl -L "https://github.com/mdavidsaver/rsb/releases/download/20171203-${RTEMS}/i386-rtems${RTEMS}-trusty-20171203-${RTEMS}.tar.bz2" \ - | tar -C / -xmj - - sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' epics-base/configure/os/CONFIG_SITE.Common.RTEMS - cat << EOF >> epics-base/configure/os/CONFIG_SITE.Common.RTEMS -RTEMS_VERSION=$RTEMS -RTEMS_BASE=$HOME/.rtems -EOF - cat << EOF >> epics-base/configure/CONFIG_SITE -CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386-qemu -EOF -fi - -make -j2 -C epics-base $EXTRA - -if [ "$BRBASE" ] -then - make -j2 -C pvData $EXTRA -fi diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..cfa3a70 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".ci"] + path = .ci + url = https://github.com/epics-base/ci-scripts diff --git a/.travis.yml b/.travis.yml index 899865b..973e593 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,30 +1,108 @@ -sudo: false -dist: trusty -language: c++ -compiler: - - gcc +# .travis.yml for use with EPICS Base ci-scripts +# (see: https://github.com/epics-base/ci-scripts) + +# This is YAML - indentation levels are crucial + +language: cpp +compiler: gcc +dist: bionic + +cache: + directories: + - $HOME/.cache + +env: + global: + - SETUP_PATH=.ci-local:.ci + addons: apt: packages: + # for all EPICS builds - libreadline6-dev - libncurses5-dev - perl + # for clang compiler - clang + # for mingw builds (32bit and 64bit) - g++-mingw-w64-i686 + - g++-mingw-w64-x86-64 + # for RTEMS cross builds - qemu-system-x86 + install: - - ./.ci/travis-prepare.sh + - ./.ci/travis/prepare.sh + script: - - ./.ci/travis-build.sh -env: - matrix: - - BRBASE=7.0 - - BRBASE=7.0 CMPLR=clang - - BRBASE=7.0 EXTRA="CMD_CXXFLAGS=-std=c++11" - - BRBASE=7.0 CMPLR=clang EXTRA="CMD_CXXFLAGS=-std=c++11" - - BRBASE=7.0 WINE=32 TEST=NO STATIC=YES - - BRBASE=7.0 WINE=32 TEST=NO STATIC=NO - - BRBASE=7.0 RTEMS=4.10 TEST=NO - - BRBASE=7.0 RTEMS=4.9 TEST=NO - - BRBASE=3.16 - - BRBASE=3.15 + - ./.ci/travis/build.sh + +# If you need to do more during install and build, +# add a local directory to your module and do e.g. +# - ./.ci-local/travis/install-extras.sh + +# Define build jobs + +# Well-known variables to use +# SET source setup file +# EXTRA content will be added to make command line +# STATIC set to YES for static build (default: NO) +# TEST set to NO to skip running the tests (default: YES) +# VV set to make build scripts verbose (default: unset) + +# Usually from setup files, but may be specified or overridden +# on a job line +# MODULES list of dependency modules +# BASE branch or release tag name of the EPICS Base to use +# branch or release tag for a specific module +# ... see README for setup file syntax description + +jobs: + include: + +# Different configurations of default gcc and clang + + - env: BASE=7.0 + + - env: BASE=7.0 + compiler: clang + + - env: BASE=7.0 EXTRA="CMD_CXXFLAGS=-std=c++11" + + - env: BASE=7.0 EXTRA="CMD_CXXFLAGS=-std=c++11" + compiler: clang + +# Trusty: compiler versions very close to RHEL 7 + + - env: BASE=7.0 + dist: trusty + + - env: BASE=7.0 EXTRA="CMD_CXXFLAGS=-std=c++11" + dist: trusty + + - env: BASE=3.15 EXTRA="CMD_CXXFLAGS=-std=c++11" + dist: trusty + +# Cross-compilations to Windows using MinGW and WINE + + - env: BASE=7.0 WINE=32 TEST=NO STATIC=YES + compiler: mingw + + - env: BASE=7.0 WINE=64 TEST=NO STATIC=NO + compiler: mingw + +# Other gcc versions (added as an extra package) + + - env: BASE=7.0 + compiler: gcc-6 + addons: { apt: { packages: ["g++-6"], sources: ["ubuntu-toolchain-r-test"] } } + + - env: BASE=7.0 + compiler: gcc-7 + addons: { apt: { packages: ["g++-7"], sources: ["ubuntu-toolchain-r-test"] } } + +# MacOS build + + - env: BASE=7.0 + os: osx + compiler: clang + addons: { homebrew: { packages: ["re2c"], update: true } }