usage () { cat <<END
-usage: .../jpctb /path/to/dir/with/PCTB*.jar /path/to/yohoho/yohoho [...]
+usage: .../jpctb /path/to/yohoho/yohoho [...]
END
}
exit 127
}
-if [ $# -lt 2 ]; then usage; fail 'bad usage'; exit 127; fi
+nojre () {
+ fail "couldn't find the right jre: $*
+ perhaps you should make ypp's java symlink (normally yohoho/java)
+ point to your jre, eg to /usr/lib/jvm/java-6-sun"
+}
+
+badusage () {
+ fail "bad usage: $*"
+}
+
+while [ $# -ge 1 ]; do
+ case "$1" in
+ -) shift; break;;
+ --jpctb)
+ shift
+ srcjardir="$1"
+ shift || badusage "--jpctb needs a value"
+ ;;
+ -*) badusage "unknown option \`$1'"
+ ;;
+ *)
+ break
+ esac
+done
+
+if [ $# -lt 1 ]; then usage; badusage "need path to yohoho"; exit 127; fi
-srcjardir="$1"; shift
yohoho="$1"; shift
#---------- find ourselves ----------
*) jpctbdir="$PWD/$jpctbdir" ;;
esac
+if [ x"$srcjardir" = x ]; then
+ srcjardir="$jpctbdir"
+fi
+
#---------- find YPP client and the Java installation it uses ----------
yppdir="${yohoho%/*}"
+# this replicates the java-searching logic from yohoho/yohoho:
if [ -x "$yppdir/java/bin/java" ]; then
- javadir="$yppdir/java"
-elif [ x"$JAVA_HOME" != x ] && [ -x "$JAVA_HOME/bin/java" ]; then
- javadir="$JAVA_HOME"
+ yppjava="$yppdir/java/bin/java"
+elif [ -x "$JAVA_HOME/bin/java" ]; then
+ yppjava="$JAVA_HOME/bin/java"
+else
+ set +e
+ yppjava=`type -p java 2>&1`
+ set -e
+fi
+
+cat <<END
+jpctb:
+ jpctb tree: "$jpctbdir"
+ yohoho: "$yohoho"
+ ypp dir: "$yppdir"
+ ypp uses: "$yppjava"
+END
+
+if ! [ -x "$yppjava" ]; then
+ nojre "bad java ypp"
+fi
+
+javadir="${yppjava%/bin/java}"
+if [ -x "$javadir/jre/bin/java" ]; then
+ echo " java/ points to the jre, good"
else
- fail "could not find java runtime system"
+ echo " java/ has just the executable bin/java, trying readlink"
+ absjava=`readlink -f "$yppjava"`
+ echo " abs. java: \"$absjava\""
+ case "$absjava" in
+ */jre/bin/java)
+ echo " found jre directory, good"
+ javadir="${absjava%/jre/bin/java}"
+ ;;
+ *)
+ nojre "java binary not in jre dir"
+ ;;
+ esac
fi
case "$javadir" in
-/*) ;;
-*) javadir="$PWD/$javadir" ;;
+''|/|/usr) nojre "javadir is $javadir (and even found $javadir/jre!)" ;;
+/*) ;;
+*) javadir="$PWD/$javadir" ;;
esac
jtmp="$jpctbdir/tmp"
linkfarm="$jtmp/linkfarm"
extdir="$jtmp/ext"
+export JPCTB_JRE="$javadir/jre"
+
#---------- confirm for the user which paths we're using ----------
cat <<END
-jpctb:
- jpctb tree: "$jpctbdir"
- yohoho: "$yohoho"
java: "$javadir"
+ JRE: "$JPCTB_JRE"
PCTB jars: "$srcjardir"
jpctb tmpdir: "$jtmp"
END
#---------- run the control panel ----------
-"$javadir/bin/java" -jar "$srcjardir/PCTB-ControlPanel.jar"
+set +e
+"$javadir/bin/java" \
+ -Dcom.tedpearson.ypp.market.controlpanel.exitstatus=12 \
+ -jar "$srcjardir/PCTB-ControlPanel.jar"
+rc=$?
+set -e
+
+case $rc in
+0) echo "launcher dialogue closed, quitting"; exit 0 ;;
+12) ;;
+*) echo >&2 "control panel failed with exit status $rc"; exit "$rc" ;;
+esac
+
#---------- create the temporary are and link farm ----------
mkdir -- "$jtmp" "$extdir" "$linkfarm"
cp "$srcjardir"/PCTB*.jar "$extdir"
-lndir -silent "$javadir" "$linkfarm"
+cp -Rs "$javadir"/. "$linkfarm"/.
#---------- edit the linkfarm to have our jvm wrapper ----------
rm -- "$wrapper"
export JPCTB_EXTDIR="$extdir"
-export JPCTB_JRE="$javadir/jre"
cat <<'END' >"$wrapper"
#!/bin/bash