diff options
author | Jan Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-07 01:37:35 -0500 |
---|---|---|
committer | Jan Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-07 01:37:35 -0500 |
commit | 6d5095e217a8c6e989a9df7cb62a6b2d5a857297 (patch) | |
tree | ae69fe093eb69624638db44763023de394704098 /cbt | |
parent | 757b585522233c610dd021810fc8f1189103948c (diff) | |
parent | e958dec0dbbcf7f7a28cd21641e76390fb3dba6a (diff) | |
download | cbt-6d5095e217a8c6e989a9df7cb62a6b2d5a857297.tar.gz cbt-6d5095e217a8c6e989a9df7cb62a6b2d5a857297.tar.bz2 cbt-6d5095e217a8c6e989a9df7cb62a6b2d5a857297.zip |
Merge pull request #57 from cvogt/circleci
cleanup and features
Diffstat (limited to 'cbt')
-rwxr-xr-x | cbt | 95 |
1 files changed, 67 insertions, 28 deletions
@@ -13,11 +13,11 @@ log () { msg=$1 enabled=1 while test $# -gt 0; do - case "$1" in - "-Dlog=time") enabled=0 ;; - "-Dlog=all") enabled=0 ;; - esac - shift + case "$1" in + "-Dlog=time") enabled=0 ;; + "-Dlog=all") enabled=0 ;; + esac + shift done if [ $enabled -eq 0 ]; then which gdate 2>&1 > /dev/null @@ -85,9 +85,29 @@ export TARGET=target/scala-2.11/classes/ mkdir -p $NAILGUN$TARGET mkdir -p $STAGE1$TARGET +nailgun_out=$NAILGUN/target/nailgun.stdout.log +nailgun_err=$NAILGUN/target/nailgun.strerr.log +foo(){ + while test $# -gt 0; do + case "$1" in + "-Dlog=nailgun") + nailgun_out=/dev/stderr + nailgun_err=/dev/stderr + ;; + "-Dlog=all") + nailgun_out=/dev/stderr + nailgun_err=/dev/stderr + ;; + esac + shift + done +} + +foo $@ + if [ "$1" = "kill" ]; then echo "Stopping nailgun" 1>&2 - $NG ng-stop >> $NAILGUN/target/nailgun.stdout.log 2>> $NAILGUN/target/nailgun.stderr.log & + $NG ng-stop >> $nailgun_out 2>> $nailgun_err & exit 1 fi @@ -104,10 +124,15 @@ else echo "(Note: nc not found. It will make slightly startup faster.)" 1>&2 fi -if [ $nc_installed -eq 0 ] || [ ! $server_up -eq 0 ]; then +use_nailgun=0 +if [ $nailgun_installed -eq 1 ] || [ "$1" = "publishSigned" ] || [ "$2" = "publishSigned" ] || [ "$1" = "direct" ] || [ "$2" = "direct" ]; then + use_nailgun=1 +fi + +if [ $use_nailgun -eq 0 ] && [ ! $server_up -eq 0 ]; then log "Starting up nailgun server." $* # try to start nailgun-server, just in case it's not up - ng-server 127.0.0.1:$NAILGUN_PORT >> $NAILGUN/target/nailgun.stdout.log 2>> $NAILGUN/target/nailgun.stderr.log & + ng-server 127.0.0.1:$NAILGUN_PORT >> $nailgun_out 2>> $nailgun_err & fi log "Downloading Scala jars if necessary..." $* @@ -122,42 +147,48 @@ SCALAC="java -Xmx256M -Xms32M\ -deprecation\ -feature" -stage1 () { +stage1 () { log "Checking for changes in cbt/nailgun_launcher" $* NAILGUN_INDICATOR=$NAILGUN$TARGET/cbt/NailgunLauncher.class changed=0 - for file in `ls $NAILGUN/*.java`; do + for file in `ls $NAILGUN/*.java`; do if [ $file -nt $NAILGUN_INDICATOR ]; then changed=1; fi done compiles=0 if [ $changed -eq 1 ]; then - #rm $NAILGUN$TARGET/cbt/*.class 2>/dev/null + rm $NAILGUN$TARGET/cbt/*.class 2>/dev/null # defensive delete of potentially broken class files echo "Compiling cbt/nailgun_launcher" 1>&2 javac -Xlint:deprecation -d $NAILGUN$TARGET `ls $NAILGUN*.java` compiles=$? - if [ $compiles -ne 0 ]; then exit 1; fi - if [ $nailgun_installed -eq 0 ]; then + if [ $compiles -ne 0 ]; then + rm $NAILGUN$TARGET/cbt/*.class 2>/dev/null # triggers recompilation next time. + break + fi + if [ $use_nailgun -eq 0 ]; then echo "Stopping nailgun" 1>&2 - $NG ng-stop >> $NAILGUN/target/nailgun.stdout.log 2>> $NAILGUN/target/nailgun.stderr.log & + $NG ng-stop >> $nailgun_out 2>> $nailgun_err & echo "Restarting nailgun" 1>&2 - ng-server 127.0.0.1:$NAILGUN_PORT >> $NAILGUN/target/nailgun.stdout.log 2>> $NAILGUN/target/nailgun.stderr.log & + ng-server 127.0.0.1:$NAILGUN_PORT >> $nailgun_out 2>> $nailgun_err & fi fi log "Checking for changes in cbt/stage1" $* STAGE1_INDICATOR=$STAGE1$TARGET/cbt/Stage1.class changed2=0 - for file in `ls $STAGE1*.scala`; do + for file in `ls $STAGE1*.scala`; do if [ $file -nt $STAGE1_INDICATOR ]; then changed2=1; fi done compiles2=0 if [ $changed2 -eq 1 ]; then + rm $STAGE1$TARGET/cbt/*.class 2>/dev/null # defensive delete of potentially broken class files echo "Compiling cbt/stage1" 1>&2 - rm $STAGE1$TARGET/cbt/*.class 2>/dev/null $SCALAC -cp $NAILGUN$TARGET -d $STAGE1$TARGET `ls $STAGE1/*.scala` compiles2=$? - if [ $compiles2 -ne 0 ]; then exit 1; fi + if [ $compiles2 -ne 0 ]; then + rm $STAGE1$TARGET/cbt/*.class 2>/dev/null # triggers recompilation next time. + break + fi fi log "run CBT and loop if desired. This allows recompiling CBT itself as part of compile looping." $* @@ -168,34 +199,37 @@ stage1 () { fi CP=$STAGE1$TARGET:$SCALA_CLASSPATH - if [ $nailgun_installed -eq 1 ] || [ "$1" = "publishSigned" ] || [ "$2" = "publishSigned" ] || [ "$1" = "direct" ] || [ "$2" = "direct" ] + if [ $use_nailgun -eq 1 ] then log "Running JVM directly" $* # -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005 java -cp $NAILGUN$TARGET cbt.NailgunLauncher $mainClass $CP "$CWD" $* else log "Running via nailgun." $* - while true; do + for i in 0 1 2 3 4 5 6 7 8 9; do log "Adding classpath." $* - $NG ng-cp $NAILGUN$TARGET >> $NAILGUN/target/nailgun.stdout.log 2>> $NAILGUN/target/nailgun.stderr.log + $NG ng-cp $NAILGUN$TARGET >> $nailgun_out 2>> $nailgun_err log "Checking if nailgun is up yet." $* - $NG cbt.NailgunLauncher cbt.CheckAlive $CP "$CWD" $* >> $NAILGUN/target/nailgun.stdout.log 2>> $NAILGUN/target/nailgun.stderr.log + $NG cbt.NailgunLauncher cbt.CheckAlive $CP "$CWD" $* >> $nailgun_out 2>> $nailgun_err alive=$? - if [[ $alive -eq 131 ]]; then + if [ $alive -eq 131 ]; then echo "Nailgun call failed. Try 'cbt kill' and check the error log cbt/nailgun_launcher/target/nailgun.stderr.log" 1>&2 - elif [[ $alive -eq 33 ]]; then + elif [ $alive -eq 33 ]; then break else - log "Nope. Sleeping for 1 second" $* - echo "Waiting for nailgun to start..." 1>&2 - sleep 1 + log "Nope. Sleeping for 0.5 seconds" $* + if [ "$i" -gt "1" ]; then + echo "Waiting for nailgun to start... (For problems try -Dlog=nailgun or check logs in cbt/nailgun_launcher/target/*.log)" 1>&2 + fi + sleep 0.5 fi done log "Running $mainClass via Nailgun." $* $NG cbt.NailgunLauncher $mainClass $CP "$CWD" $* fi + exitCode=$? log "Done running $mainClass." $* -} +} while true; do stage1 $* @@ -205,4 +239,9 @@ while true; do echo "======= Restarting CBT =======" 1>&2 done +if [ $compiles -ne 0 ] || [ $compiles2 -ne 0 ]; then + exitCode=1 +fi + log "Exiting CBT" $* +exit $exitCode |