This is an automated email from the git hooks/post-receive script.

ebourg-guest pushed a commit to branch master
in repository java-wrappers.

commit 434a173484e4652abb275b91c1a245adc4a10d95
Author: Vincent Fourmond <fourm...@debian.org>
Date:   Mon Jan 7 21:17:55 2008 +0000

    [java-common] Integrating to java-wrappers modifications suggested by Eric 
Lavarde
---
 java-wrappers.7  |  45 +++++++++++++++++++++
 java-wrappers.sh | 117 +++++++++++++++++++++++++++++++++++++++++++------------
 2 files changed, 137 insertions(+), 25 deletions(-)

diff --git a/java-wrappers.7 b/java-wrappers.7
index 25a850b..28c48ad 100644
--- a/java-wrappers.7
+++ b/java-wrappers.7
@@ -46,6 +46,20 @@ command that will be run. If this variable is set, it 
disables all
 lookup for a java runtime.
 
 .TP
+.B JAVA_BINDIR
+Specifies a directory that will be looked for a 
+.I java
+or a 
+.I jdb
+executable (depending on the setting of
+.IR JAVA_DEBUGGER ).
+It has precedence over 
+.I JAVA_HOME
+but not over
+.IR JAVA_CMD .
+
+
+.TP
 .B JAVA_HOME
 A path to a java runtime. If this variable is set, all lookup for a
 java runtime is disabled, except that if no 
@@ -84,6 +98,18 @@ This is probably the most important variable; if it set, the 
wrapper
 will print out useful information as it goes by its business, such as
 which runtime it did find, and which command is run eventually.
 
+.TP
+.B JAVA_JARPATH
+The path where the wrappers will go looking for 
+.I jar
+archives. If not set, the wrapper will look into the default
+directory,
+.IR /usr/share/java .
+.B Warning :
+the wrapper will not look anywhere else than in 
+.IR JAVA_JARPATH .
+Setting it incorrectly will most probably result in early crashes.
+
 .SH EXAMPLES
 
 The examples all rely on 
@@ -103,11 +129,30 @@ Force rasterizer to run with
 
 .I JAVA_HOME=/usr/lib/kaffe rasterizer
 
+The same, but using 
+.IR JAVA_BINDIR :
+
+.I JAVA_BINDIR=/usr/lib/kaffe/bin rasterizer
+
 Debug rasterizer with Sun's debugger, while printing debugging
 information from the wrapper:
 
 .I DEBUG_WRAPPER=1 JAVA_CMD=/usr/lib/jvm/java-6-sun/bin/jdb rasterizer
 
+.SH BUGS
+
+Care has been taken to make the wrappers bug-free. If that was not
+the case, please file a bug report against
+.B java-common
+with a java-wrappers in the title.
+
+If you wish to submit any problem with a java executable relying on
+.BR java-wrappers ,
+please also submit the output of the command run with
+.IR DEBUG_WRAPPER=1 .
+It will save one mail exchange and therefore potentially reduce the
+time it will take to fix the bug.
+
 .SH SEE ALSO
 
 .BR java (1),
diff --git a/java-wrappers.sh b/java-wrappers.sh
index faa2152..27d50cd 100644
--- a/java-wrappers.sh
+++ b/java-wrappers.sh
@@ -15,11 +15,6 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-# Some initializations:
-[ "$DESTDIR" ] || DESTDIR=
-[ "$JAVA_CLASSPATH" ] || JAVA_CLASSPATH=
-
-
 # Display a debugging message
 java_debug() {
     if [ "$DEBUG_WRAPPER" ]; then
@@ -38,6 +33,24 @@ java_fail() {
     exit 1;
 }
 
+# Some initializations:
+if [ "$JAVA_CLASSPATH" ]; then
+    java_debug "Building classpath on JAVA_CLASSPATH = '$JAVA_CLASSPATH'"
+else
+    JAVA_CLASSPATH=
+fi
+if [ "$DESTDIR" ]; then
+    java_debug "Using DESTDIR = '$DESTDIR'"
+else
+    DESTDIR=""
+fi
+
+if [ "$JAVA_JARPATH" ]; then
+    java_debug "Jar lookup is done in JAVA_JARPATH = '$JAVA_JARPATH'"
+else
+    JAVA_JARPATH=$DESTDIR/usr/share/java
+fi
+
 
 # Try to find a Java runtime and set JAVA_HOME and JAVA_CMD accordingly.
 # If JAVA_CMD exists, nothing is done. If JAVA_HOME exists, only that
@@ -58,7 +71,13 @@ java_fail() {
 # This information is currently *far from complete* !!!
 find_java_runtime() {
     # First, known runtimes:
-    sun_java="/usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun 
/usr/lib/j2sdk1.4-sun /usr/lib/j2*1.[456]-sun"
+
+    sun5="/usr/lib/jvm/java-1.5.0-sun /usr/lib/j2*1.5-sun"
+    sun4="/usr/lib/j2*1.4-sun"
+    sun6="/usr/lib/jvm/java-6-sun /usr/lib/j2*1.6-sun"
+    
+    sun_java="$sun4 $sun5 $sun6"
+    
     gcj2="/usr/lib/jvm/java-*-gcj-4.* "
     sablevm="/usr/lib/sablevm"
     kaffe="/usr/lib/kaffe /usr/lib/kaffe/pthreads /usr/lib/kaffe/jthreads"
@@ -81,8 +100,27 @@ find_java_runtime() {
     xml_extra="/usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun"
 
     if [ "$JAVA_CMD" ]; then
-       java_debug "Using already set JAVA_CMD = $JAVA_CMD"
-       return 0;               # Nothing to do
+       if which "$JAVA_CMD" > /dev/null; then
+           java_debug "Using already set JAVA_CMD = '$JAVA_CMD' => '"`which 
"$JAVA_CMD"`"'"
+           return 0;           # Nothing to do
+       else
+           java_warning "JAVA_CMD was set to '$JAVA_CMD', but which(1) does 
not find it."
+           java_warning "Therefore ignoring JAVA_CMD"
+       fi
+    fi
+
+    if [ -z "$JAVA_BINDIR" ]; then 
+       if [ "$JAVA_DEBUGGER" ] && [ -x "$JAVA_BINDIR/jdb" ]; then
+           JAVA_CMD="$JAVA_BINDIR/jdb"
+       elif [ -x "$JAVA_BINDIR/java" ]; then
+           JAVA_CMD="$JAVA_BINDIR/java"
+       fi
+       if [ "$JAVA_CMD" ]; then
+           java_debug "Using '$JAVA_CMD' from JAVA_BINDIR = '$JAVA_BINDIR'"
+           return 0;
+       else
+           java_warning "JAVA_BINDIR = '$JAVA_BINDIR' does not point to a java 
binary"
+       fi
     fi
 
     if [ -z "$JAVA_HOME" ]; then
@@ -97,7 +135,11 @@ find_java_runtime() {
                ;;
            sun) DIRS=$sun_java
                ;;
-           sun6) DIRS=/usr/lib/jvm/java-6-sun
+           sunmax5) DIRS="$sun4 $sun5"
+               ;;
+           sunmin5) DIRS="$sun5 $sun6"
+               ;;
+           sun6) DIRS=$sun6
                ;;
            fullxml) DIRS=$xml_extra
                ;;
@@ -111,6 +153,8 @@ find_java_runtime() {
                break;
            fi
        done
+    else
+       java_debug "Using provided JAVA_HOME = '$JAVA_HOME'"
     fi
     if [ "$JAVA_HOME" ] ; then
        if [ "$JAVA_DEBUGGER" ] && [ -x "$JAVA_HOME/bin/jdb" ]; then
@@ -118,8 +162,8 @@ find_java_runtime() {
        else
            JAVA_CMD="$JAVA_HOME/bin/java"
        fi
-       java_debug "Found JAVA_HOME = $JAVA_HOME"
-       java_debug "Found JAVA_CMD = $JAVA_CMD"
+       java_debug "Found JAVA_HOME = '$JAVA_HOME'"
+       java_debug "Found JAVA_CMD = '$JAVA_CMD'"
        return 0                # Fine
     else
        java_warning "No java runtime was found for flavor '${1:-none}'"
@@ -134,16 +178,36 @@ require_java_runtime() {
        java_fail "Unable to find an appropriate java runtime. See 
java_wrappers(7) for help"
 }
 
+# Looks for a jar file and returns its location as the
+# found_jar variable, or fails if no jar was found.
+locate_jar() {
+    jar="$1"
+    if [ -r $JAVA_JARPATH/$jar ]; then
+       found_jar=$JAVA_JARPATH/$jar
+    elif [ -r $JAVA_JARPATH/$jar.jar ]; then
+       found_jar=$JAVA_JARPATH/$jar.jar
+    elif [ -r $jar ]; then
+       # Maybe issue a warning that jars should not be looked
+       # for absolutely ?
+       found_jar=$JAVA_JARPATH/$jar
+    elif [ -r $jar.jar ]; then
+       # Maybe issue a warning that jars should not be looked
+       # for absolutely ?
+       found_jar=$JAVA_JARPATH/$jar.jar
+    else
+       return 1                # Not found
+    fi
+    return 0                   # Found
+}
+
 # Find jars and add them to the classpath
 find_jars() {
     looked_for_jars=1
     for jar in $@ ; do
-       if [ -r $DESTDIR/usr/share/java/$jar ]; then
-           JAVA_CLASSPATH=$JAVA_CLASSPATH:$DESTDIR/usr/share/java/$jar
-       elif [ -r $DESTDIR/usr/share/java/$jar.jar ]; then 
-           JAVA_CLASSPATH=$JAVA_CLASSPATH:$DESTDIR/usr/share/java/$jar.jar
+       if locate_jar $jar; then
+           JAVA_CLASSPATH=$JAVA_CLASSPATH:$found_jar
        else
-           java_warning "Unable to locate $jar in $DESTDIR/usr/share/java/"
+           java_warning "Unable to locate $jar in $JAVA_JARPATH"
        fi
     done
 }
@@ -153,32 +217,30 @@ find_jars() {
 find_one_jar_in() {
     looked_for_jars=1
     for jar in $@ ; do
-       if [ -r $DESTDIR/usr/share/java/$jar ]; then
-           JAVA_CLASSPATH=$JAVA_CLASSPATH:$DESTDIR/usr/share/java/$jar
-           return 0
-       elif [ -r $DESTDIR/usr/share/java/$jar.jar ]; then 
-           JAVA_CLASSPATH=$JAVA_CLASSPATH:$DESTDIR/usr/share/java/$jar.jar
+       if locate_jar $jar; do 
+           JAVA_CLASSPATH=$JAVA_CLASSPATH:$found_jar
            return 0
        fi
     done
-    java_warning "Could fine none of $@ in $DESTDIR/usr/share/java/"
+    java_warning "Could fine none of $@ in $JAVA_JARPATH"
     return 1
 }
 
 # Runs the program !
 run_java() {
     if [ -z "$JAVA_CMD" ]; then
-       java_warning "No JAVA_CMD set for run_java, using JAVA_CMD = java"
+       java_warning "No JAVA_CMD set for run_java, falling back to JAVA_CMD = 
java"
        JAVA_CMD=java
     fi
     if [ "$FORCE_CLASSPATH" ]; then
-       java_debug "Using unmodified classpath : $FORCE_CLASSPATH";
+       java_debug "Using imposed classpath : FORCE_CLASSPATH = 
'$FORCE_CLASSPATH'";
        cp="-classpath $FORCE_CLASSPATH";
     elif [ "$JAVA_CLASSPATH" ]; then
        cp="-classpath $JAVA_CLASSPATH";
     else
        cp="";
     fi
+    java_debug "Environment variable CLASSPATH is '$CLASSPATH'"
     java_debug "Runnning $JAVA_CMD $JAVA_ARGS $cp $@"
     exec $JAVA_CMD $JAVA_ARGS $cp "$@"
 }
@@ -190,5 +252,10 @@ run_jar() {
        java_warning "It is most likely useless to use find_jar when running"
        java_warning "a class with run_jar (-classpath is ignored)"
     fi
-    run_java -jar "$@"
+    if locate_jar $1; then
+       shift
+       run_java -jar "$@"
+    else
+       java_fail "Unable to find jar $1 in $JAVA_JARPATH"
+    fi
 }
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-java/java-wrappers.git

_______________________________________________
pkg-java-commits mailing list
pkg-java-comm...@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to