diff --git a/.ci b/.ci new file mode 160000 index 00000000..4484a9c3 --- /dev/null +++ b/.ci @@ -0,0 +1 @@ +Subproject commit 4484a9c30243fb8a499d120f07784c5a86275dc1 diff --git a/.ci/build-linux.sh b/.ci-local/build-linux.sh similarity index 100% rename from .ci/build-linux.sh rename to .ci-local/build-linux.sh diff --git a/.ci-local/defaults.set b/.ci-local/defaults.set new file mode 100644 index 00000000..1ec420e0 --- /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=DEVLIB2 + +DEVLIB2_REPONAME=devlib2 +DEVLIB2_REPOOWNER=epics-modules diff --git a/.ci/prepare-linux.sh b/.ci-local/prepare-linux.sh similarity index 100% rename from .ci/prepare-linux.sh rename to .ci-local/prepare-linux.sh diff --git a/.ci/build-epics.sh b/.ci/build-epics.sh deleted file mode 100755 index 454122c9..00000000 --- a/.ci/build-epics.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -set -e -x - -[ "$BASE" ] || exit 0 - -make -j2 $EXTRA - -[ "$TEST" = "NO" ] && exit 0 - -make tapfiles - -find . -name '*.tap' -print0 | xargs -0 -n1 prove -e cat -f diff --git a/.ci/prepare-epics.sh b/.ci/prepare-epics.sh deleted file mode 100755 index 0e80bfd0..00000000 --- a/.ci/prepare-epics.sh +++ /dev/null @@ -1,105 +0,0 @@ -#!/bin/sh -set -e -x - -# Build Base for use with https://travis-ci.org -# -# Set environment variables -# BASE= 3.14 3.15 or 3.16 (VCS branch) -# STATIC= static or shared - -die() { - echo "$1" >&2 - exit 1 -} - -[ "$BASE" ] || exit 0 - -CDIR="$HOME/.cache/base-$BASE-$STATIC" -EPICS_BASE="$CDIR/base" - -if [ ! -e "$CDIR/built" ] -then - install -d "$CDIR" - ( cd "$CDIR" && git clone --depth 50 --recursive --branch $BASE https://github.com/epics-base/epics-base.git 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 - - # 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 - - make -C "$EPICS_BASE" -j2 - - case "$BASE" in - *3.14*) - ( cd "$CDIR" && wget https://www.aps.anl.gov/epics/download/extensions/extensionsTop_20120904.tar.gz && tar -xzf extensionsTop_*.tar.gz) - - ( cd "$CDIR" && wget https://www.aps.anl.gov/epics/download/extensions/msi1-7.tar.gz && tar -xzf msi1-7.tar.gz && mv msi1-7 extensions/src/msi) - - cat << EOF > "$CDIR/extensions/configure/RELEASE" -EPICS_BASE=$EPICS_BASE -EPICS_EXTENSIONS=\$(TOP) -EOF - - ( cd "$CDIR/extensions" && make ) - - cp "$CDIR/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" - ;; - *) ;; - esac - - touch "$CDIR/built" -fi - -EPICS_HOST_ARCH=`sh $EPICS_BASE/startup/EpicsHostArch` - -CDIR="$HOME/.cache/devlib2" - -if [ ! -e "$CDIR/built" ] -then - install -d "$CDIR" - - ( cd "$CDIR" && git clone --depth 50 --branch master https://github.com/epics-modules/devlib2.git devlib2 ) - - DEVLIB2="$CDIR/devlib2" - - echo "EPICS_BASE=$EPICS_BASE" > "$DEVLIB2/configure/RELEASE.local" - - make -C "$DEVLIB2" -j2 - - touch "$CDIR/built" -fi - -cat << EOF > configure/RELEASE -DEVLIB2=$DEVLIB2 -EPICS_BASE=$EPICS_BASE -EOF diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..cfa3a703 --- /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 639aa53a..3b5bd582 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,22 @@ -language: c +language: cpp +compiler: gcc +dist: xenial + +cache: + directories: + - $HOME/.cache + +env: + global: + - SETUP_PATH=.ci-local + +addons: + apt: + packages: + - libreadline6-dev + - libncurses5-dev + - perl + - clang matrix: include: @@ -24,10 +42,12 @@ matrix: env: KSER=4.x KVER=4.9.1 EXTRA="-C mrmShared/linux KERNELDIR=$HOME/linux" - dist: xenial env: KSER=4.x KVER=4.19.67 EXTRA="-C mrmShared/linux KERNELDIR=$HOME/linux" + - dist: xenial + env: KSER=5.x KVER=5.5.19 EXTRA="-C mrmShared/linux KERNELDIR=$HOME/linux" install: - - ./.ci/prepare-epics.sh - - ./.ci/prepare-linux.sh + - if [ "$BASE" ]; then ./.ci/travis/prepare.sh; fi + - ./.ci-local/prepare-linux.sh script: - - ./.ci/build-epics.sh - - ./.ci/build-linux.sh + - if [ "$BASE" ]; then ./.ci/travis/build.sh; fi + - ./.ci-local/build-linux.sh