src/jdk.packager/unix/scripts/jpackager
author herrick
Wed, 17 Oct 2018 13:50:11 -0400
branchJDK-8200758-branch
changeset 56982 e094d5483bd6
parent 56821 565d54ca1f41
permissions -rw-r--r--
8212048: Cleanup source code and fix issues discussed in preliminary review Reviewed-by: almatvee

#!/bin/bash
#
# Java Packager tool execution script for Linux and MacOS.
#

# Default values.
DEBUG=""
MEMORY="-Xmx512M"
JAVA_ARGS=""
DEBUG_ARG="-J-Xdebug:";

# Argument parsing.
args=
narg=1
for i in "$@"; do
    if [[ "$i" == "-J-Xmx"* ]]; then
        ARGUMENT=${i:2}
        MEMORY=${ARGUMENT}
    elif [[ "$i" == ${DEBUG_ARG}* ]]; then
        ADDRESS=${i:${#DEBUG_ARG}}
        DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${ADDRESS}"
    elif [[ "$i" == "-J-"* ]]; then
        ARGUMENT=${i:2}
        JAVA_ARGS="${JAVA_ARGS} ${ARGUMENT}"
    else
        args="$args \"$""{"$narg"}\""
    fi
    narg=`expr $narg + 1`
done

# resolve symlinks
PRG=$0
while [ -h "$PRG" ]; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
    if expr "$link" : '^/' 2> /dev/null >/dev/null; then
	PRG="$link"
    else
	PRG="`dirname "$PRG"`/$link"
    fi
done

# detect Darwin and Cygwin environments
darwin=false;
cygwin=false;
case "`uname`" in
  Darwin*) darwin=true;
           if [ -z "$JAVA_HOME" ] ; then
               BIN_DIR=`dirname $PRG`
               JAVA_HOME=`cd $BIN_DIR > /dev/null; pwd`/..
           fi
           ;;
  CYGWIN*) cygwin=true;;
esac

JAVA_PACKAGER_PATH=$(cd $(dirname $0) ; pwd -P)
JAVA_CMD="${JAVA_PACKAGER_PATH}/java"

if [[ ! -f ${JAVA_CMD} ]]; then
  if [ -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/javac" ] ; then
      JAVA_CMD="$JAVA_HOME/bin/java"
      export JAVA_HOME
  else
    JAVAC_CMD=`which javac 2> /dev/null `
    while [ -h "$JAVAC_CMD" ]; do
      ls=`ls -ld "$JAVAC_CMD"`
      link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
      if expr "$link" : '^/' 2> /dev/null >/dev/null; then
        JAVAC_CMD="$link"
      else
        JAVAC_CMD="`dirname "$JAVAC_CMD"`/$link"
      fi
    done

    BIN_DIR=`dirname "$JAVAC_CMD"`
    JAVA_HOME=`dirname "$BIN_DIR"`
    if [ "m$JAVA_HOME" != "m." ]; then
      JAVA_CMD="$JAVA_HOME/bin/java"
      export JAVA_HOME
    else
      unset JAVA_HOME
      JAVA_CMD=`which java 2> /dev/null `
      if [ -z "$JAVA_CMD" ]; then
        JAVA_CMD="java"
      fi
    fi
  fi
fi

if [ ! -x "$JAVA_CMD" ] ; then
  echo 'Error: JAVA_HOME is not defined, cannot find "java" command.'
  exit 1
fi

if $cygwin ; then
    JAVA_CMD=`cygpath --unix "$JAVA_CMD"`
fi

# This is similar to "$@" except we had to strip out some arguments
# that we don't want to be passed to the Java Packager.
eval exec "$JAVA_CMD" ${DEBUG} ${MEMORY} ${JAVA_ARGS} \
    -m jdk.packager/jdk.packager.main.Main $args