diff options
Diffstat (limited to 'dev-java/ant/files/1.10.9-launch.patch')
-rw-r--r-- | dev-java/ant/files/1.10.9-launch.patch | 361 |
1 files changed, 361 insertions, 0 deletions
diff --git a/dev-java/ant/files/1.10.9-launch.patch b/dev-java/ant/files/1.10.9-launch.patch new file mode 100644 index 000000000000..7babe6740fa9 --- /dev/null +++ b/dev-java/ant/files/1.10.9-launch.patch @@ -0,0 +1,361 @@ +diff --git a/src/script/ant b/src/script/ant +index 81107b5..a501081 100644 +--- a/src/script/ant ++++ b/src/script/ant +@@ -1,4 +1,4 @@ +-#! /bin/sh ++#!@GENTOO_PORTAGE_EPREFIX@/bin/bash + + # Licensed to the Apache Software Foundation (ASF) under one or more + # contributor license agreements. See the NOTICE file distributed with +@@ -15,6 +15,10 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + ++# Edited for Gentoo Linux ++ ++EPREFIX="@GENTOO_PORTAGE_EPREFIX@" ++ + # Extract launch and ant arguments, (see details below). + ant_exec_args= + no_config=false +@@ -83,9 +87,9 @@ if $no_config; then + usejikes=$use_jikes_default + else + # load system-wide ant configuration (ONLY if ANT_HOME has NOT been set) +- if [ -z "$ANT_HOME" -o "$ANT_HOME" = "/usr/share/ant" ]; then +- if [ -f "/etc/ant.conf" ]; then +- . /etc/ant.conf ++ if [ -z "$ANT_HOME" -o "$ANT_HOME" = "${EPREFIX}/usr/share/ant" ]; then ++ if [ -f "${EPREFIX}/etc/ant.conf" ]; then ++ . "${EPREFIX}"/etc/ant.conf + fi + fi + +@@ -106,69 +110,23 @@ else + fi + fi + +-# Setup Java environment in rpm mode +-if $rpm_mode; then +- if [ -f /usr/share/java-utils/java-functions ]; then +- . /usr/share/java-utils/java-functions +- set_jvm +- set_javacmd +- fi +-fi +- +-# OS specific support. $var _must_ be set to either true or false. +-cygwin=false; +-darwin=false; +-mingw=false; +-case "`uname`" in +- CYGWIN*) +- cygwin=true +- ;; +- Darwin*) +- darwin=true +- if [ -z "$JAVA_HOME" ]; then +- if [ -x '/usr/libexec/java_home' ]; then +- JAVA_HOME=`/usr/libexec/java_home` +- elif [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then +- JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home +- fi +- fi +- ;; +- MINGW*) +- mingw=true +- ;; +-esac +- +-if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ]; then +- ## resolve links - $0 may be a link to ant's home +- PRG="$0" +- progname=`basename "$0"` +- +- # need this for relative symlinks +- while [ -h "$PRG" ]; do +- ls=`ls -ld "$PRG"` +- link=`expr "$ls" : '.*-> \(.*\)$'` +- if expr "$link" : '/.*' > /dev/null; then +- PRG="$link" +- else +- PRG=`dirname "$PRG"`"/$link" +- fi +- done +- +- ANT_HOME=`dirname "$PRG"`/.. ++export WANT_JAVA_CONFIG=2 + +- # make it fully qualified +- ANT_HOME=`cd "$ANT_HOME" > /dev/null && pwd` ++# Always get JAVA_HOME from java-config, unless ANT_RESPECT_JAVA_HOME is set ++# Use GENTOO_VM to change which VM is used instead. ++if [[ -z "${ANT_RESPECT_JAVA_HOME}" || -z "${JAVA_HOME}" ]]; then ++ export JAVA_HOME="$(java-config -g JAVA_HOME)" + fi + +-# For Cygwin and Mingw, ensure paths are in UNIX format before +-# anything is touched +-if $cygwin; then +- [ -n "$ANT_HOME" ] && ANT_HOME=`cygpath --unix "$ANT_HOME"` +- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` ++if [ -z $JAVA_HOME ] ; then ++ echo 'Error: No JDK found!' ++ echo "Try using java-config script to set your JDK" ++ echo "Remember that you need a JDK not a JRE" ++ exit 1 + fi +-if $mingw; then +- [ -n "$ANT_HOME" ] && ANT_HOME="`(cd "$ANT_HOME"; pwd)`" +- [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" ++ ++if [[ -z "${ANT_HOME}" ]] ; then ++ ANT_HOME="${EPREFIX}"/usr/share/ant + fi + + # set ANT_LIB location +@@ -176,14 +134,7 @@ ANT_LIB="${ANT_HOME}/lib" + + if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then +- # IBM's JDK on AIX uses strange locations for the executables +- if [ -x "$JAVA_HOME/jre/sh/java" ]; then +- JAVACMD="$JAVA_HOME/jre/sh/java" +- elif [ -x "$JAVA_HOME/jre/bin/java" ]; then +- JAVACMD="$JAVA_HOME/jre/bin/java" +- else + JAVACMD="$JAVA_HOME/bin/java" +- fi + else + JAVACMD=`which java 2> /dev/null ` + if [ -z "$JAVACMD" ]; then +@@ -200,88 +151,61 @@ if [ ! -x "$JAVACMD" ]; then + exit 1 + fi + +-# Build local classpath using just the launcher in non-rpm mode or +-# use the Jpackage helper in rpm mode with basic and default jars +-# specified in the ant.conf configuration. Because the launcher is +-# used, libraries linked in ANT_HOME/lib will also be included, but this +-# is discouraged as it is not java-version safe. A user should +-# request optional jars and their dependencies via the OPT_JAR_LIST +-# variable +-if $rpm_mode && [ -x /usr/bin/build-classpath ]; then +- LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)" +- +- # If no optional jars have been specified then build the default list +- if [ -z "$OPT_JAR_LIST" ]; then +- for file in /etc/ant.d/*; do +- if [ -f "$file" ]; then +- case "$file" in +- *~|*#*|*.rpmsave|*.rpmnew) +- ;; +- *) +- for dep in `cat "$file"`; do +- OPT_JAR_LIST="$OPT_JAR_LIST${OPT_JAR_LIST:+ }$dep" +- done +- ;; +- esac +- fi +- done +- fi +- +- # If the user requested to try to add some other jars to the classpath +- if [ -n "$OPT_JAR_LIST" ]; then +- _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)" +- if [ -n "$_OPTCLASSPATH" ]; then +- LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH" +- fi +- fi +- +- # Explicitly add javac path to classpath, assume JAVA_HOME set +- # properly in rpm mode +- if [ -f "$JAVA_HOME/lib/tools.jar" ]; then +- LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar" +- fi +- if [ -f "$JAVA_HOME/lib/classes.zip" ]; then +- LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" +- fi ++if [ -z "$LOCALCLASSPATH" ] ; then ++ LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar ++else ++ LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH ++fi ++ ++# if ANT_TASKS is not set, default to "all" ++ANT_TASKS="${ANT_TASKS:-all}" ++ ++# if ANT_TASKS is set to "all", get the tasks list from /usr/share/ant/tasks/ ++if [[ "${ANT_TASKS}" == "all" ]]; then ++ ANT_TASKS="" ++ # but only if it exists ++ if [[ -d "${EPREFIX}"/usr/share/ant/tasks ]]; then ++ ANT_TASKS="${ANT_TASKS} ${EPREFIX}"/usr/share/ant/tasks/* ++ fi ++ if [[ -d "${EPREFIX}"/usr/share/ant/tasks-1.8.2 ]]; then ++ ANT_TASKS="${ANT_TASKS} ${EPREFIX}"/usr/share/ant/tasks-1.8.2/* ++ fi ++# if set to "none", make ANT_TASKS empty list ++elif [[ "${ANT_TASKS}" == "none" ]]; then ++ ANT_TASKS="" ++fi ++# otherwise ANT_TASKS defines explicit task list ++ ++# construct the tasks list separated with commas to pass to java-config ++TASKS_LIST="" ++for task in $ANT_TASKS; do ++ TASKS_LIST="${TASKS_LIST},$(basename $task)" ++done ++TASKS_LIST=${TASKS_LIST#,} + +- # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be +- # user CLASSPATH first and ant-found jars after. +- # In that case, the user CLASSPATH will override ant-found jars +- # +- # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour +- # with ant-found jars first and user CLASSPATH after +- if [ -n "$CLASSPATH" ]; then +- # merge local and specified classpath +- if [ -z "$LOCALCLASSPATH" ]; then +- LOCALCLASSPATH="$CLASSPATH" +- elif [ -n "$CLASSPATH_OVERRIDE" ]; then +- LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH" +- else +- LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH" +- fi ++# get the classpath for optional tasks and their dependency .jar files ++if [[ -n "${TASKS_LIST}" ]] ; then ++ ANT_TASKS_CLASSPATH="-lib \"$(java-config -dp ${TASKS_LIST})\"" ++ ANT_TASKS_LIBPATH="-Djava.library.path=\"$(java-config -di ${TASKS_LIST})\"" ++else ++ ANT_TASKS_CLASSPATH="" ++ ANT_TASKS_LIBPATH="" ++fi + +- # remove class path from launcher -cp option +- CLASSPATH="" +- fi ++# determine where to get tools.jar from ++if [[ -n "${ANT_RESPECT_JAVA_HOME}" ]]; then ++ TOOLS_JAR="${JAVA_HOME}/lib/tools.jar" + else +- # not using rpm_mode; use launcher to determine classpaths +- if [ -z "$LOCALCLASSPATH" ]; then +- LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar +- else +- LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH +- fi ++ TOOLS_JAR="$(java-config --tools)" + fi + +-if [ -n "$JAVA_HOME" ]; then +- # OSX hack to make Ant work with jikes +- if $darwin; then +- OSXHACK="${JAVA_HOME}/../Classes" +- if [ -d "${OSXHACK}" ]; then +- for i in "${OSXHACK}"/*.jar; do +- JIKESPATH="$JIKESPATH:$i" +- done +- fi +- fi ++if [[ -n "${TOOLS_JAR}" ]] ; then ++ LOCALCLASSPATH="$LOCALCLASSPATH:${TOOLS_JAR}" ++elif [[ $(java-config -f) != apple-jdk-bin* ]] ; then ++ echo "Warning: Unable to determine tools.jar location." ++ echo " If build fails because sun.* classes could not be found," ++ echo " Make sure you are using a JDK, not JRE as your user/system VM." ++ echo " and that you have java-config version 2.0.30 or above installed." + fi + + # Allow Jikes support (off by default) +@@ -289,29 +213,6 @@ if $usejikes; then + ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes" + fi + +-# For Cygwin, switch paths to appropriate format before running java +-# For PATHs convert to unix format first, then to windows format to ensure +-# both formats are supported. Probably this will fail on directories with ; +-# in the name in the path. Let's assume that paths containing ; are more +-# rare than windows style paths on cygwin. +-if $cygwin; then +- if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null; then +- format=mixed +- else +- format=windows +- fi +- [ -n "$ANT_HOME" ] && ANT_HOME=`cygpath --$format "$ANT_HOME"` +- ANT_LIB=`cygpath --$format "$ANT_LIB"` +- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --$format "$JAVA_HOME"` +- LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"` +- LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"` +- if [ -n "$CLASSPATH" ]; then +- CP_TEMP=`cygpath --path --unix "$CLASSPATH"` +- CLASSPATH=`cygpath --path --$format "$CP_TEMP"` +- fi +- CYGHOME=`cygpath --$format "$HOME"` +-fi +- + # Show script help if requested + if $show_help; then + echo $0 '[script options] [options] [target [target2 [target3] ..]]' +@@ -326,49 +227,20 @@ if $show_help; then + echo ' launch script' + echo '' + fi +-# add a second backslash to variables terminated by a backslash under cygwin +-if $cygwin; then +- case "$ANT_HOME" in +- *\\ ) +- ANT_HOME="$ANT_HOME\\" +- ;; +- esac +- case "$CYGHOME" in +- *\\ ) +- CYGHOME="$CYGHOME\\" +- ;; +- esac +- case "$JIKESPATH" in +- *\\ ) +- JIKESPATH="$JIKESPATH\\" +- ;; +- esac +- case "$LOCALCLASSPATH" in +- *\\ ) +- LOCALCLASSPATH="$LOCALCLASSPATH\\" +- ;; +- esac +- case "$CLASSPATH" in +- *\\ ) +- CLASSPATH="$CLASSPATH\\" +- ;; +- esac +-fi ++ + # Execute ant using eval/exec to preserve spaces in paths, + # java options, and ant args + ant_sys_opts= +-if [ -n "$CYGHOME" ]; then +- if [ -n "$JIKESPATH" ]; then +- ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\"" +- else +- ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\"" +- fi +-else +- if [ -n "$JIKESPATH" ]; then +- ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\"" +- fi ++ ++if [ -n "$JIKESPATH" ]; then ++ ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\"" + fi +-ant_exec_command="exec \"\$JAVACMD\" $ANT_OPTS -classpath \"\$LOCALCLASSPATH\" -Dant.home=\"\$ANT_HOME\" -Dant.library.dir=\"\$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"\$CLASSPATH\"" ++ ++ant_exec_command="exec \"${JAVACMD}\" ${ANT_OPTS} -classpath \"${LOCALCLASSPATH}\" \ ++ -Dant.home=\"${ANT_HOME}\" -Dant.library.dir=\"${ANT_LIB}\" ${ant_sys_opts} \ ++ ${ANT_TASKS_LIBPATH} org.apache.tools.ant.launch.Launcher \ ++ ${ANT_TASKS_CLASSPATH} ${ANT_ARGS} -cp \"${CLASSPATH}\"" ++ + if $ant_exec_debug; then + # using printf to avoid echo line continuation and escape interpretation confusion + printf "%s\n" "$ant_exec_command $ant_exec_args" |