diff options
Diffstat (limited to 'dist/travis/travis-ci.sh')
-rwxr-xr-x | dist/travis/travis-ci.sh | 89 |
1 files changed, 30 insertions, 59 deletions
diff --git a/dist/travis/travis-ci.sh b/dist/travis/travis-ci.sh index e9e419c66..1f5596600 100755 --- a/dist/travis/travis-ci.sh +++ b/dist/travis/travis-ci.sh @@ -2,21 +2,12 @@ # This script is executed in the travis-ci environment. build_img_ghdl() { - # Build ghdl/ghdl from ghdl/run - echo "travis_fold:start:build_run" - travis_time_start - printf "$ANSI_BLUE[DOCKER build] ghdl : ${IMAGE_TAG}$ANSI_NOCOLOR\n" - - PKG=`ls | grep -oP 'ghdl-.*tgz'` - mkdir tmp-img && cd tmp-img - cp ../$PKG ./ - cp ../BUILD_TOOLS ./ - echo "FROM ghdl/run:$IMAGE_TAG" > Dockerfile - echo "ADD $PKG /usr/local" >> Dockerfile - docker build -t ghdl/ghdl:$IMAGE_TAG . - cd .. - travis_time_finish - echo "travis_fold:end:build_run" + travis_start "build_run" "$ANSI_BLUE[DOCKER build] ghdl/ghdl:${IMAGE_TAG}$ANSI_NOCOLOR" + docker build -t ghdl/ghdl:$IMAGE_TAG . -f-<<EOF +FROM ghdl/run:$IMAGE_TAG +ADD `ls | grep -oP 'ghdl-.*tgz'` /usr/local +EOF + travis_finish "build_run" } #--- @@ -25,17 +16,14 @@ set -e scriptdir=$(dirname $0) -. "$scriptdir/travis-utils.sh" -. "$scriptdir/../ansi_color.sh" -#disable_color +. "$scriptdir/utils.sh" # Display env (to debug) -echo -en "travis_fold:start:travis_env\r" -printf "$ANSI_YELLOW[TRAVIS] Travis environment $ANSI_NOCOLOR\n" +travis_start "travis_env" "$ANSI_YELLOW[TRAVIS] Travis environment $ANSI_NOCOLOR" env | grep TRAVIS -echo -en "travis_fold:end:travis_env\r" +travis_finish "travis_env" if [ "$IMAGE" = "" ]; then @@ -44,69 +32,53 @@ if [ "$IMAGE" = "" ]; then fi -echo "travis_fold:start:fetch" +travis_start "fetch" "$ANSI_YELLOW[GHDL - build] git fetch --unshallow $ANSI_NOCOLOR" # The command 'git describe' (used for version) needs the history. Get it. # But the following command fails if the repository is complete. git fetch --unshallow || true -echo "travis_fold:end:fetch" +travis_finish "fetch" + if [ "$TRAVIS_OS_NAME" = "osx" ]; then - # Install gnat compiler (use cache) + travis_start "ada" "$ANSI_YELLOW[GHDL - build] Install gnat compiler (use cache) $ANSI_NOCOLOR" ./dist/macosx/install-ada.sh || exit 1 PATH=$PWD/gnat/bin:$PATH + travis_finish "ada" fi -# Compute package name - -PKG_SHORTCOMMIT="$(printf $TRAVIS_COMMIT | cut -c1-10)" -PKG_VER=`grep "ghdl_version=" configure | sed -e 's/.*"\(.*\)";/\1/'` -if [ -z "$TRAVIS_TAG" ]; then - # No tag: use date + commit id - PKG_TAG="$(date -u +%Y%m%d)-$PKG_SHORTCOMMIT"; -elif expr "$TRAVIS_TAG" : 'v[0-9].*' > /dev/null; then - # Remove leading 'v' in tags in the filenames. - PKG_TAG="$(echo $TRAVIS_TAG | cut -c2-)" -else - # Regular tag (like snapshots), nothing to change. - PKG_TAG="$TRAVIS_TAG" -fi - -# Extract from IMAGE (defined in .travis.yml) -IFS='+' read -ra REFS <<< "$IMAGE" -DDIST=${REFS[0]} # Linux distro (eg: ubuntuXX, fedoraXX) -DBLD=${REFS[1]} # Build/backend (eg: mcode, llvm) -DGPL=${REFS[2]} # GPL or not - -PKG_NAME="ghdl-${PKG_TAG}-${DDIST}-${DBLD}" -BUILD_CMD_OPTS="$ENABLECOLOR -b $DBLD" -if [ "$DGPL" = "gpl" ]; then - BUILD_CMD_OPTS="$BUILD_CMD_OPTS --gpl" - PKG_NAME="ghdl-gpl-${PKG_TAG}" -fi -BUILD_CMD_OPTS="${BUILD_CMD_OPTS} -p $PKG_NAME" +# Get build command options +travis_start "opts" "$ANSI_YELLOW[GHDL - build] Get build command options $ANSI_NOCOLOR" +buildCmdOpts echo "build cmd: $BUILD_CMD_OPTS" - +travis_finish "opts" # Build +RUN="docker run --rm -t -e TRAVIS=$TRAVIS -v $(pwd):/work -w /work" + if [ "$TRAVIS_OS_NAME" = "osx" ]; then bash -c "${scriptdir}/build.sh $BUILD_CMD_OPTS" else # Assume linux - # Build version.tmp and replace version.in with it (so that the version is - # correctly set). + travis_start "version" "$ANSI_YELLOW[GHDL - build] Build version.tmp and replace version.in with it (so that the version is correctly set) $ANSI_NOCOLOR" # This is a little bit hack-ish, as it assumes that 'git' is not # available in docker (otherwise it will describe as -dirty # because this modifies the source file version.in). ghdl_version_line=`grep -e '^ghdl_version' configure` make -f Makefile.in srcdir=. $ghdl_version_line version.tmp cp version.tmp src/version.in + travis_finish "version" - # Run build in docker IMAGE_TAG=`echo $IMAGE | sed -e 's/+/-/g'` - docker run --rm -t -v $(pwd):/work -w "/work" ghdl/build:$IMAGE_TAG bash -c "${scriptdir}/build.sh $BUILD_CMD_OPTS" + + travis_start "pull" "$ANSI_YELLOW[GHDL - build] Docker pull ghdl/build:$IMAGE $ANSI_NOCOLOR" + docker pull ghdl/build:$IMAGE_TAG + travis_finish "pull" + + # Run build in docker + $RUN "ghdl/build:$IMAGE_TAG" bash -c "${scriptdir}/build.sh $BUILD_CMD_OPTS" fi if [ ! -f build_ok ]; then @@ -114,7 +86,6 @@ if [ ! -f build_ok ]; then exit 1 fi - # Test if [ "$TRAVIS_OS_NAME" = "osx" ]; then @@ -123,7 +94,7 @@ else # Build ghdl/ghdl:$IMAGE_TAG image build_img_ghdl # Run test in docker container - docker run --rm -t -v $(pwd):/work -w "/work" ghdl/ghdl:$IMAGE_TAG bash -c "GHDL=ghdl ${scriptdir}/test.sh $BUILD_CMD_OPTS" + $RUN "ghdl/ghdl:$IMAGE_TAG" bash -c "GHDL=ghdl ${scriptdir}/test.sh $BUILD_CMD_OPTS" fi if [ ! -f test_ok ]; then |