From cf186090b7d29618dc80300891b6614925d01e54 Mon Sep 17 00:00:00 2001 From: Benjamin Bradnick Date: Wed, 12 Feb 2020 11:49:01 +0000 Subject: [PATCH 1/3] Add epics-modules ci-scripts for Travis CI --- .ci | 1 + .ci/travis-prepare.sh | 177 ------------------------------------------ .gitmodules | 3 + .travis.yml | 134 +++++++++++++++++++++++++++----- 4 files changed, 120 insertions(+), 195 deletions(-) create mode 160000 .ci delete mode 100755 .ci/travis-prepare.sh diff --git a/.ci b/.ci new file mode 160000 index 00000000..aee11f26 --- /dev/null +++ b/.ci @@ -0,0 +1 @@ +Subproject commit aee11f266bb2a8d845d6f70c198e537060a120cf diff --git a/.ci/travis-prepare.sh b/.ci/travis-prepare.sh deleted file mode 100755 index d0ba821c..00000000 --- a/.ci/travis-prepare.sh +++ /dev/null @@ -1,177 +0,0 @@ -#!/bin/sh -set -e -x - -SUPPORT=$HOME/.cache/support - -install -d $SUPPORT - -# Conditionally build IPAC -if [ -n "$IPAC" ]; then - IPAC_PATH=$SUPPORT/ipac -else - IPAC_PATH= -fi - -RELEASE_PATH=$TRAVIS_BUILD_DIR/configure/RELEASE -EPICS_BASE=$SUPPORT/epics-base - -cat << EOF > $RELEASE_PATH -IPAC=$IPAC_PATH -SNCSEQ=$SUPPORT/seq -ASYN=$SUPPORT/asyn -MODBUS=$SUPPORT/modbus -EPICS_BASE=$SUPPORT/epics-base -EOF - -# use default selection for MSI -sed -i -e '/MSI/d' configure/CONFIG_SITE - -if [ ! -e "$EPICS_BASE/built" ] -then - - git clone --depth 10 --branch $BASE https://github.com/epics-base/epics-base.git $EPICS_BASE - - EPICS_HOST_ARCH=`sh $EPICS_BASE/startup/EpicsHostArch` - - case "$STATIC" in - static) - cat << EOF >> "$EPICS_BASE/configure/CONFIG_SITE" -SHARED_LIBRARIES=NO -STATIC_BUILD=YES -EOF - ;; - *) ;; - esac - - 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 - ;; - *) echo "Host compiler is default";; - esac - - # 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 - - # set RTEMS to eg. "4.9" or "4.10" - 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' $EPICS_BASE/configure/os/CONFIG_SITE.Common.RTEMS - cat << EOF >> $EPICS_BASE/configure/os/CONFIG_SITE.Common.RTEMS -RTEMS_VERSION=$RTEMS -RTEMS_BASE=/home/travis/.cache/rtems${RTEMS}-i386 -EOF - cat << EOF >> $EPICS_BASE/configure/CONFIG_SITE -CROSS_COMPILER_TARGET_ARCHS+=RTEMS-pc386 -EOF - - fi - - make -C "$EPICS_BASE" -j2 - # get MSI for 3.14 - case "$BASE" in - 3.14*) - echo "Build MSI" - install -d "$HOME/msi/extensions/src" - curl https://epics.anl.gov/download/extensions/extensionsTop_20120904.tar.gz | tar -C "$HOME/msi" -xvz - curl https://epics.anl.gov/download/extensions/msi1-7.tar.gz | tar -C "$HOME/msi/extensions/src" -xvz - mv "$HOME/msi/extensions/src/msi1-7" "$HOME/msi/extensions/src/msi" - - cat << EOF > "$HOME/msi/extensions/configure/RELEASE" -EPICS_BASE=$EPICS_BASE -EPICS_EXTENSIONS=\$(TOP) -EOF - make -C "$HOME/msi/extensions" - cp "$HOME/msi/extensions/bin/$EPICS_HOST_ARCH/msi" "$EPICS_BASE/bin/$EPICS_HOST_ARCH/" - echo 'MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi' >> "$EPICS_BASE/configure/CONFIG_SITE" - - cat <> configure/CONFIG_SITE -MSI = \$(EPICS_BASE)/bin/\$(EPICS_HOST_ARCH)/msi -EOF - - ;; - *) echo "Use MSI from Base" - ;; - esac - - touch $EPICS_BASE/built -else - echo "Using cached epics-base!" -fi - -# IPAC -if [ -n "$IPAC" ]; then - if [ ! -e "$SUPPORT/ipac/built" ]; then - echo "Build ipac" - install -d $SUPPORT/ipac - git clone --depth 10 --branch $IPAC https://github.com/epics-modules/ipac.git $SUPPORT/ipac - cat << EOF > $SUPPORT/ipac/configure/RELEASE -EPICS_BASE=$SUPPORT/epics-base -EOF - make -C $SUPPORT/ipac - touch $SUPPORT/ipac/built - else - echo "Using cached ipac" - fi -else - echo "Skipping ipac" -fi - - -# sequencer -if [ ! -e "$SUPPORT/seq/built" ]; then - echo "Build sequencer" - install -d $SUPPORT/seq - curl -L "http://www-csr.bessy.de/control/SoftDist/sequencer/releases/seq-${SEQ}.tar.gz" | tar -C $SUPPORT/seq -xvz --strip-components=1 - cp $RELEASE_PATH $SUPPORT/seq/configure/RELEASE - make -C $SUPPORT/seq - touch $SUPPORT/seq/built -else - echo "Using cached seq" -fi - - -# asyn -if [ ! -e "$SUPPORT/asyn/built" ]; then - echo "Build asyn" - install -d $SUPPORT/asyn - git clone --depth 10 --branch $ASYN https://github.com/epics-modules/asyn.git $SUPPORT/asyn - cp $RELEASE_PATH $SUPPORT/asyn/configure/RELEASE - make -C "$SUPPORT/asyn" -j2 - touch $SUPPORT/asyn/built -else - echo "Using cached asyn" -fi - -# modbus -if [ ! -e "$SUPPORT/modbus/built" ]; then - echo "Build modbus" - install -d $SUPPORT/modbus - git clone --depth 10 --branch $MODBUS https://github.com/epics-modules/modbus.git $SUPPORT/modbus - cp $RELEASE_PATH $SUPPORT/modbus/configure/RELEASE - make -C "$SUPPORT/modbus" -j2 - touch $SUPPORT/modbus/built -else - echo "Using cached modbus" -fi diff --git a/.gitmodules b/.gitmodules index a0aa75d1..89120717 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,3 +91,6 @@ [submodule "modules/motorParker"] path = modules/motorParker url = https://github.com/epics-motor/motorParker.git +[submodule ".ci"] + path = .ci + url = https://github.com/epics-base/ci-scripts diff --git a/.travis.yml b/.travis.yml index b3d20d67..b8afaa79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,29 +1,127 @@ -sudo: false -dist: trusty -language: c -compiler: - - gcc +# .travis.xml for use with EPICS Base ci-scripts +# (see: https://github.com/epics-base/ci-scripts) + +language: cpp +compiler: gcc +dist: xenial + cache: directories: - - $HOME/.cache + - $HOME/.cache + +env: + global: + - SETUP_PATH=.ci + - MODULES="sncseq ipac asyn autosave busy" + - SNCSEQ=R2-2-8 + - IPAC=master + - ASYN=R4-38 + - AUTOSAVE=R5-9 + - BUSY=R1-7-1 + 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 + homebrew: + packages: + # for all EPICS builds + - bash + # for the sequencer - re2c -env: - - BASE=3.14 STATIC=shared SEQ=2.2.6 ASYN=R4-35 IPAC=2.15 MODBUS=R2-11 - - BASE=3.14 STATIC=static SEQ=2.2.6 ASYN=R4-35 IPAC=2.15 MODBUS=R2-11 - - BASE=R3.15.6 STATIC=shared SEQ=2.2.6 ASYN=R4-35 IPAC=2.15 MODBUS=R2-11 - - BASE=R3.15.6 STATIC=static SEQ=2.2.6 ASYN=R4-35 IPAC=2.15 MODBUS=R2-11 - - BASE=7.0 STATIC=shared RTEMS=4.10 SEQ=2.2.6 ASYN=R4-35 IPAC=2.15 MODBUS=R2-11 - - BASE=7.0 STATIC=shared CMPLR=clang WINE=32 SEQ=2.2.4 ASYN=R4-35 IPAC= MODBUS=R2-11 - - BASE=7.0 STATIC=static WINE=32 SEQ=2.2.6 ASYN=R4-35 IPAC= MODBUS=R2-11 -install: ./.ci/travis-prepare.sh -before_script: - - cp ./configure/EXAMPLE_CONFIG_SITE.local ./configure/CONFIG_SITE.local -script: make + update: true + +install: + - ./.ci/travis/prepare.sh + +script: + - ./.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: + +# Default gcc and clang, static build + + - env: BASE=7.0 + + - env: BASE=7.0 + compiler: clang + + - env: BASE=7.0 STATIC=YES + +# Trusty: compiler versions very close to RHEL 7 + + - env: BASE=7.0 + 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 + +# MacOS build + + - env: BASE=7.0 + os: osx + compiler: clang + +# Cross-compilation to RTEMS + + - env: BASE=7.0 RTEMS=4.10 + + - env: BASE=7.0 RTEMS=4.9 + +# Older Base releases + + - env: BASE=R3.15.7 + + - env: BASE=R3.15.7 STATIC=YES + +# 3.14.12.2 build fails on newer distributions and doesn't know tapfiles target + + - env: BASE=R3.14.12.8 + + - env: BASE=R3.14.12.8 STATIC=YES + +# 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"] } } From 6d404d0029b4b70842620b6b5cc679ec54cd3ca7 Mon Sep 17 00:00:00 2001 From: Benjamin Bradnick Date: Tue, 18 Feb 2020 21:30:57 +0000 Subject: [PATCH 2/3] Updated motorOms to master --- modules/motorOms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/motorOms b/modules/motorOms index 53030c9f..671b0acf 160000 --- a/modules/motorOms +++ b/modules/motorOms @@ -1 +1 @@ -Subproject commit 53030c9fce285196d1d7aac75b61682f597a3a09 +Subproject commit 671b0acf3632c94dd85d4cdad3d48adbdbb746a5 From 9726ad149c26013734b4af850090891bc898b032 Mon Sep 17 00:00:00 2001 From: Benjamin Bradnick Date: Wed, 19 Feb 2020 07:44:48 +0000 Subject: [PATCH 3/3] moved .ci submodule back to master after configure/RELEASE overwrite added --- .ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci b/.ci index aee11f26..17ce951e 160000 --- a/.ci +++ b/.ci @@ -1 +1 @@ -Subproject commit aee11f266bb2a8d845d6f70c198e537060a120cf +Subproject commit 17ce951e99191cdd2d67d2a7fc6adaabe3f4e331