aboutsummaryrefslogtreecommitdiff
path: root/cbt
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2016-03-07 01:37:35 -0500
committerJan Christopher Vogt <oss.nsp@cvogt.org>2016-03-07 01:37:35 -0500
commit6d5095e217a8c6e989a9df7cb62a6b2d5a857297 (patch)
treeae69fe093eb69624638db44763023de394704098 /cbt
parent757b585522233c610dd021810fc8f1189103948c (diff)
parente958dec0dbbcf7f7a28cd21641e76390fb3dba6a (diff)
downloadcbt-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-xcbt95
1 files changed, 67 insertions, 28 deletions
diff --git a/cbt b/cbt
index ab01819..603ec23 100755
--- a/cbt
+++ b/cbt
@@ -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