From b52462a3cb14137bd7a8327bc9112fd0519cb036 Mon Sep 17 00:00:00 2001 From: Kevin Peterson Date: Tue, 26 May 2020 11:55:28 -0500 Subject: [PATCH] Added epics-base ci-scripts --- .ci | 1 + .ci-local/travis/post-prepare.sh | 31 ++++++++ .gitmodules | 3 + .travis.yml | 131 +++++++++++++++++++++++++++++++ README.md | 2 + 5 files changed, 168 insertions(+) create mode 160000 .ci create mode 100755 .ci-local/travis/post-prepare.sh create mode 100644 .gitmodules create mode 100644 .travis.yml diff --git a/.ci b/.ci new file mode 160000 index 0000000..55038b7 --- /dev/null +++ b/.ci @@ -0,0 +1 @@ +Subproject commit 55038b731516f22584b7e1cede4ef0a05b8b647e diff --git a/.ci-local/travis/post-prepare.sh b/.ci-local/travis/post-prepare.sh new file mode 100755 index 0000000..c883b03 --- /dev/null +++ b/.ci-local/travis/post-prepare.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -e + +# Set VV in .travis.yml to make scripts verbose +[ "$VV" ] && set -x + +CACHEDIR=${CACHEDIR:-${HOME}/.cache} + +# source functions +. ./.ci/travis/utils.sh + +# The module to be built isn't in the cache directory with the dependencies +pwd + +# Add the path to the driver module to the RELEASE.local file, since it is needed by the example IOC +update_release_local MOTOR_ACS $TRAVIS_BUILD_DIR + +# Copy the travis RELEASE.local to the configure dir +cp -f ${CACHEDIR}/RELEASE.local configure/RELEASE.local + +# Sanity check +echo -e "${ANSI_BLUE}Contents of updated configure/RELEASE.local${ANSI_RESET}" +cat configure/RELEASE.local +echo -e "${ANSI_BLUE}End of updated configure/RELEASE.local${ANSI_RESET}" + +# Enable the building of example IOCs +echo -e "${ANSI_BLUE}Creating configure/CONFIG_SITE.local${ANSI_RESET}" +echo -e "BUILD_IOCS = YES" > configure/CONFIG_SITE.local +cat configure/CONFIG_SITE.local +echo -e "${ANSI_BLUE}End of configure/CONFIG_SITE.local${ANSI_RESET}" 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 new file mode 100644 index 0000000..5860d5f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,131 @@ +# .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 + +env: + global: + - SETUP_PATH=.ci + - MODULES="sncseq ipac asyn autosave busy motor" + - SNCSEQ=R2-2-8 + - IPAC=master + - ASYN=R4-38 + - AUTOSAVE=R5-9 + - BUSY=R1-7-1 + - MOTOR=master + - MOTOR_RECURSIVE=NO + +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 + update: true + +install: + - ./.ci/travis/prepare.sh + # ugly hacks go here: + - ./.ci-local/travis/post-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"] } } diff --git a/README.md b/README.md index 18f23ee..64342a1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # motorAcs EPICS motor drivers for the following [Advanced Control Systems Corporation](http://www.acsmotion.com) controllers: MCB-4B +[![Build Status](https://travis-ci.org/epics-motor/motorAcs.png)](https://travis-ci.org/epics-motor/motorAcs) + motorAcs is a submodule of [motor](https://github.com/epics-modules/motor). When motorAcs is built in the ``motor/modules`` directory, no manual configuration is needed. motorAcs can also be built outside of motor by copying it's ``EXAMPLE_RELEASE.local`` file to ``RELEASE.local`` and defining the paths to ``MOTOR`` and itself.