Blame view
tools/extras/travis_script.sh
2.89 KB
8dcb6dfcb first commit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#!/bin/bash # We take into account dependency pointers optionally set in the environment. # Typical usage shown below; any one can be safely left unset. # INCDIRS="~/xroot/usr/include" # LIBDIRS="~/xroot/usr/lib /usr/lib/openblas-base" # CXX=clang++-3.8 # CFLAGS="-march=native -O2" # LDFLAGS="-llapack" # # The CI_TARGETS variable is set in Travis environment and passed on as a list # of build targets to make (for making different things in separate jobs). # Maximum make parallelism. Travis VMs have 2 cores, so a value over 3 or 4 # would probably only cause context switching overhead. MAXPAR=4 # Directories with code that can be tested with Travis (space-separated). TESTABLE_DIRS="src/" # Run verbose (run and echo) and exit if failed. runvx() { local cmd=$(printf ' %q' "$@"); cmd=${cmd:1} echo "\$ $cmd" eval -- "$cmd" || exit 1 } # $(addsw -L foo bar) => "-Lfoo -Lbar". addsw() { local v=() s=$1; shift; for d; do v+=("$s$d"); done echo ${v[@]}; } # $(mtoken CXX "ccache gcc") => 'CXX=ccache gcc'; $(mtoken CXX ) => ''. mtoken() { echo ${2+$1=$2}; } # Print machine info and environment. runvx uname -a runvx env # Check for changes in interesting files, normally sources and CI glue # scripts, and report success right away if none. However, do run tests # if TRAVIS_COMMIT_RANGE does not parse. This most likely means the branch # was reset by --force, and any file could have changed. if git rev-parse "${TRAVIS_COMMIT_RANGE}" >/dev/null 2>&1 && \ ! git diff --name-only "${TRAVIS_COMMIT_RANGE}" -- ${TESTABLE_DIRS} \ .travis.yml tools/extras/travis_*.sh | read REPLY then echo; echo "No changes outside ${TESTABLE_DIRS} in the commit" \ "range ${TRAVIS_COMMIT_RANGE}; reporting success." exit 0; fi # Prepare environment variables. CF="$CFLAGS -g $(addsw -I $INCDIRS)" LDF="$LDFLAGS $(addsw -L $LIBDIRS)" CCC=$(mtoken CXX "$CXX") # TODO(kkm): Disabling single/double. If needed, use separate Travis jobs. # Randomly choose between single and double precision #if [[ $(( RANDOM % 2 )) == 1 ]] ; then # DPF="--double-precision=yes" #else DPF="--double-precision=no" #fi echo "Building tools..." [Time: $(date)] runvx cd tools runvx make -j$MAXPAR openfst "$CCC" CXXFLAGS="$CF" \ OPENFST_CONFIGURE="--disable-static --enable-shared --disable-bin --disable-dependency-tracking" runvx make -j$MAXPAR cub "$CCC" CXXFLAGS="$CF" cd .. runvx cd src runvx touch base/.depend.mk # Fool make depend into skipping the dependency step. runvx touch .short_version # Make version short, or else ccache will miss everything. runvx "$CCC" CXXFLAGS="$CF" LDFLAGS="$LDF" ./configure --shared --use-cuda=no "$DPF" --mathlib=OPENBLAS --openblas-root="$XROOT/usr" runvx make -j$MAXPAR $CI_TARGETS CI_NOLINKBINARIES=1 # Travis has a 10k line log limit, so use smaller CI_TARGETS when logging. if [ -r "$CCACHE_LOGFILE" ]; then runvx cat "$CCACHE_LOGFILE" fi echo "Done." [Time: $(date)] |