chiark / gitweb /
jpctb: cope if java binary is in jre1.yada
[jarrg-ian.git] / jpctb
diff --git a/jpctb b/jpctb
index ee1482ab97c0cffbac76e3d348abe7e2b0843c71..3557cd234bcf175845016e7ded7feab13dcb57c0 100755 (executable)
--- a/jpctb
+++ b/jpctb
@@ -43,6 +43,10 @@ badusage () {
        fail "bad usage: $*"
 }
 
+check_only=false
+setup_only=false
+setup_only_simulate=''
+
 while [ $# -ge 1 ]; do
        case "$1" in
        -)              shift; break;;
@@ -51,6 +55,15 @@ while [ $# -ge 1 ]; do
                        srcjardir="$1"
                        shift || badusage "--jpctb needs a value"
                        ;;
+       --check-only)
+                       check_only=true
+                       shift
+                       ;;
+       --setup-only)
+                       setup_only=true
+                       setup_only_simulate=echo
+                       shift
+                       ;;
        -*)             badusage "unknown option \`$1'"
                        ;;
        *)
@@ -111,13 +124,19 @@ else
        absjava=`readlink -f "$yppjava"`
        echo "   abs. java:    \"$absjava\""
        case "$absjava" in
-       */jre/bin/java)
-               echo "   found jre directory, good"
-               javadir="${absjava%/jre/bin/java}"
+       */*/bin/java)
+               javadir="${absjava%/bin/java}"
+               jreleaf="${javadir##*/}"
+               javadir="${javadir%/*}"
+               echo "   jre leaf dir: \"$jreleaf\""
+               case "$jreleaf" in
+               jre)    echo "   found jre directory, good";;
+               jre1.*) echo "   found versioned jre directory $jreleaf, ok";;
+               *)      nojre "java binary not in jre dir ($jreleaf)";;
+               esac
                ;;
        *)
-               nojre "java binary not in jre dir"
-               ;;
+               nojre "real java binary not in ../bin/java dir";;
        esac
 fi
 
@@ -131,7 +150,7 @@ jtmp="$jpctbdir/tmp"
 linkfarm="$jtmp/linkfarm"
 extdir="$jtmp/ext"
 
-export JPCTB_JRE="$javadir/jre"
+export JPCTB_JRE="$javadir/$jreleaf"
 
 #---------- confirm for the user which paths we're using ----------
 
@@ -144,17 +163,21 @@ END
 
 #---------- run the control panel ----------
 
+if $check_only; then echo "Check successful."; exit 0; fi
+
 set +e
-"$javadir/bin/java" \
+$setup_only_simulate "$javadir/bin/java" \
  -Dcom.tedpearson.ypp.market.controlpanel.exitstatus=12 \
  -jar "$srcjardir/PCTB-ControlPanel.jar"
 rc=$?
 set -e
 
+if $setup_only; then rc=12; fi
+
 case $rc in
 0)     echo "launcher dialogue closed, quitting"; exit 0 ;;
 12)    ;;
-*)     echo >&2 "control panel failed with exit status $rc" ;;
+*)     echo >&2 "control panel failed with exit status $rc"; exit "$rc" ;;
 esac
 
 
@@ -168,7 +191,7 @@ cp -Rs "$javadir"/. "$linkfarm"/.
 
 #---------- edit the linkfarm to have our jvm wrapper ----------
 
-wrapper="$linkfarm"/jre/bin/java
+wrapper="$linkfarm"/$jreleaf/bin/java
 rm -- "$wrapper"
 
 export JPCTB_EXTDIR="$extdir"
@@ -217,4 +240,4 @@ chmod +x -- "$wrapper"
 
 #---------- now run it ----------
 
-exec "$yohoho" -Djava.home="$linkfarm/jre"
+exec $setup_only_simulate "$yohoho" -Djava.home="$linkfarm/$jreleaf"