diff --git a/.ci/travis-build.sh b/.ci/travis-build.sh index 36c49cf22..6c76689c7 100755 --- a/.ci/travis-build.sh +++ b/.ci/travis-build.sh @@ -1,7 +1,18 @@ #!/bin/sh set -e -x -make -j2 +# set RTEMS to eg. "4.9" or "4.10" +# requires qemu, bison, flex, texinfo, install-info +if [ -n "$RTEMS" ] +then + # find local qemu-system-i386 + export PATH="$HOME/.cache/qemu/usr/bin:$PATH" + echo -n "Using QEMU: " + type qemu-system-i386 || echo "Missing qemu" + EXTRA=RTEMS_QEMU_FIXUPS=YES +fi + +make -j2 $EXTRA if [ "$TEST" != "NO" ] then diff --git a/.ci/travis-prepare.sh b/.ci/travis-prepare.sh index 11cd9eea3..9a4d23772 100755 --- a/.ci/travis-prepare.sh +++ b/.ci/travis-prepare.sh @@ -1,6 +1,39 @@ #!/bin/sh set -e -x +CURDIR="$PWD" + +QDIR="$HOME/.cache/qemu" + +if [ -n "$RTEMS" -a "$TEST" = "YES" ] +then + git clone --quiet --branch vme --depth 10 https://github.com/mdavidsaver/qemu.git "$HOME/.build/qemu" + cd "$HOME/.build/qemu" + + HEAD=`git log -n1 --pretty=format:%H` + echo "HEAD revision $HEAD" + + [ -e "$HOME/.cache/qemu/built" ] && BUILT=`cat "$HOME/.cache/qemu/built"` + echo "Cached revision $BUILT" + + if [ "$HEAD" != "$BUILT" ] + then + echo "Building QEMU" + git submodule --quiet update --init + + install -d "$HOME/.build/qemu/build" + cd "$HOME/.build/qemu/build" + + "$HOME/.build/qemu/configure" --prefix="$HOME/.cache/qemu/usr" --target-list=i386-softmmu --disable-werror + make -j2 + make install + + echo "$HEAD" > "$HOME/.cache/qemu/built" + fi +fi + +cd "$CURDIR" + cat << EOF > configure/RELEASE.local EPICS_BASE=$HOME/.source/epics-base EOF @@ -8,7 +41,7 @@ EOF install -d "$HOME/.source" cd "$HOME/.source" -git clone --quiet --depth 5 --branch core/"$BRCORE" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base +git clone --quiet --depth 5 --branch core/"${BRCORE:-master}" https://github.com/${REPOBASE:-epics-base}/epics-base.git epics-base (cd epics-base && git log -n1 ) EPICS_HOST_ARCH=`sh epics-base/startup/EpicsHostArch` @@ -62,4 +95,29 @@ USR_CFLAGS += $USR_CFLAGS USR_CXXFLAGS += $USR_CXXFLAGS EOF -make -j2 -C epics-base +# 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" + 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 + + # find local qemu-system-i386 + export PATH="$HOME/.cache/qemu/usr/bin:$PATH" + echo -n "Using QEMU: " + type qemu-system-i386 || echo "Missing qemu" + EXTRA=RTEMS_QEMU_FIXUPS=YES +fi + +make -j2 -C epics-base $EXTRA diff --git a/.travis.yml b/.travis.yml index 54266fd9c..15e925ff1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,11 +16,11 @@ install: script: - ./.ci/travis-build.sh env: - - BRCORE=master - - BRCORE=master CMPLR=clang - - BRCORE=master USR_CXXFLAGS=-std=c++11 - - BRCORE=master USR_CXXFLAGS=-std=c++11 CMPLR=clang - - BRCORE=master WINE=32 TEST=NO STATIC=YES - - BRCORE=master WINE=32 TEST=NO STATIC=NO - - BRCORE=master RTEMS=4.10 TEST=NO - - BRCORE=master RTEMS=4.9 TEST=NO +- BRCORE=master +- CMPLR=clang +- USR_CXXFLAGS=-std=c++11 +- CMPLR=clang USR_CXXFLAGS=-std=c++11 +- WINE=32 TEST=NO STATIC=YES +- WINE=32 TEST=NO STATIC=NO +- RTEMS=4.10 TEST=NO +- RTEMS=4.9 TEST=NO