Merge pull request #152 from BenBradnick/feature/ci-scripts

Add epics-modules ci-scripts for Travis CI
This commit is contained in:
Kevin Peterson
2020-03-16 15:20:19 -05:00
committed by GitHub
5 changed files with 121 additions and 196 deletions
Submodule
+1
Submodule .ci added at 17ce951e99
-177
View File
@@ -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 <<EOF >> 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
+3
View File
@@ -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
+116 -18
View File
@@ -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
# <MODULE> 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"] } }