|
| 1 | +#! /bin/sh |
| 2 | + |
| 3 | +# Licensed to the Apache Software Foundation (ASF) under one or more |
| 4 | +# contributor license agreements. See the NOTICE file distributed with |
| 5 | +# this work for additional information regarding copyright ownership. |
| 6 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 7 | +# (the "License"); you may not use this file except in compliance with |
| 8 | +# the License. You may obtain a copy of the License at |
| 9 | +# |
| 10 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 11 | +# |
| 12 | +# Unless required by applicable law or agreed to in writing, software |
| 13 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 14 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 15 | +# See the License for the specific language governing permissions and |
| 16 | +# limitations under the License. |
| 17 | + |
| 18 | +# Extract launch and ant arguments, (see details below). |
| 19 | +ant_exec_args= |
| 20 | +no_config=false |
| 21 | +use_jikes_default=false |
| 22 | +ant_exec_debug=false |
| 23 | +show_help=false |
| 24 | +for arg in "$@" ; do |
| 25 | + if [ "$arg" = "--noconfig" ] ; then |
| 26 | + no_config=true |
| 27 | + elif [ "$arg" = "--usejikes" ] ; then |
| 28 | + use_jikes_default=true |
| 29 | + elif [ "$arg" = "--execdebug" ] ; then |
| 30 | + ant_exec_debug=true |
| 31 | + elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then |
| 32 | + show_help=true |
| 33 | + ant_exec_args="$ant_exec_args -h" |
| 34 | + else |
| 35 | + if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then |
| 36 | + show_help=true |
| 37 | + fi |
| 38 | + ant_exec_args="$ant_exec_args \"$arg\"" |
| 39 | + fi |
| 40 | +done |
| 41 | + |
| 42 | +# Source/default ant configuration |
| 43 | +if $no_config ; then |
| 44 | + rpm_mode=false |
| 45 | + usejikes=$use_jikes_default |
| 46 | +else |
| 47 | + # load system-wide ant configuration (ONLY if ANT_HOME has NOT been set) |
| 48 | + if [ -z "$ANT_HOME" -o "$ANT_HOME" = "/usr/share/ant" ]; then |
| 49 | + if [ -f "/etc/ant.conf" ] ; then |
| 50 | + . /etc/ant.conf |
| 51 | + fi |
| 52 | + fi |
| 53 | + |
| 54 | + # load user ant configuration |
| 55 | + if [ -f "$HOME/.ant/ant.conf" ] ; then |
| 56 | + . $HOME/.ant/ant.conf |
| 57 | + fi |
| 58 | + if [ -f "$HOME/.antrc" ] ; then |
| 59 | + . "$HOME/.antrc" |
| 60 | + fi |
| 61 | + |
| 62 | + # provide default configuration values |
| 63 | + if [ -z "$rpm_mode" ] ; then |
| 64 | + rpm_mode=false |
| 65 | + fi |
| 66 | + if [ -z "$usejikes" ] ; then |
| 67 | + usejikes=$use_jikes_default |
| 68 | + fi |
| 69 | +fi |
| 70 | + |
| 71 | +# Setup Java environment in rpm mode |
| 72 | +if $rpm_mode ; then |
| 73 | + if [ -f /usr/share/java-utils/java-functions ] ; then |
| 74 | + . /usr/share/java-utils/java-functions |
| 75 | + set_jvm |
| 76 | + set_javacmd |
| 77 | + fi |
| 78 | +fi |
| 79 | + |
| 80 | +# OS specific support. $var _must_ be set to either true or false. |
| 81 | +cygwin=false; |
| 82 | +darwin=false; |
| 83 | +mingw=false; |
| 84 | +case "`uname`" in |
| 85 | + CYGWIN*) cygwin=true ;; |
| 86 | + Darwin*) darwin=true |
| 87 | + if [ -z "$JAVA_HOME" ] ; then |
| 88 | + if [ -x '/usr/libexec/java_home' ] ; then |
| 89 | + JAVA_HOME=`/usr/libexec/java_home` |
| 90 | + elif [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then |
| 91 | + JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home |
| 92 | + fi |
| 93 | + fi |
| 94 | + ;; |
| 95 | + MINGW*) mingw=true ;; |
| 96 | +esac |
| 97 | + |
| 98 | +if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then |
| 99 | + ## resolve links - $0 may be a link to ant's home |
| 100 | + PRG="$0" |
| 101 | + progname=`basename "$0"` |
| 102 | + |
| 103 | + # need this for relative symlinks |
| 104 | + while [ -h "$PRG" ] ; do |
| 105 | + ls=`ls -ld "$PRG"` |
| 106 | + link=`expr "$ls" : '.*-> \(.*\)$'` |
| 107 | + if expr "$link" : '/.*' > /dev/null; then |
| 108 | + PRG="$link" |
| 109 | + else |
| 110 | + PRG=`dirname "$PRG"`"/$link" |
| 111 | + fi |
| 112 | + done |
| 113 | + |
| 114 | + ANT_HOME=`dirname "$PRG"`/.. |
| 115 | + |
| 116 | + # make it fully qualified |
| 117 | + ANT_HOME=`cd "$ANT_HOME" > /dev/null && pwd` |
| 118 | +fi |
| 119 | + |
| 120 | +# For Cygwin and Mingw, ensure paths are in UNIX format before |
| 121 | +# anything is touched |
| 122 | +if $cygwin ; then |
| 123 | + [ -n "$ANT_HOME" ] && |
| 124 | + ANT_HOME=`cygpath --unix "$ANT_HOME"` |
| 125 | + [ -n "$JAVA_HOME" ] && |
| 126 | + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` |
| 127 | +fi |
| 128 | +if $mingw ; then |
| 129 | + [ -n "$ANT_HOME" ] && |
| 130 | + ANT_HOME="`(cd "$ANT_HOME"; pwd)`" |
| 131 | + [ -n "$JAVA_HOME" ] && |
| 132 | + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" |
| 133 | +fi |
| 134 | + |
| 135 | +# set ANT_LIB location |
| 136 | +ANT_LIB="${ANT_HOME}/lib" |
| 137 | + |
| 138 | +if [ -z "$JAVACMD" ] ; then |
| 139 | + if [ -n "$JAVA_HOME" ] ; then |
| 140 | + # IBM's JDK on AIX uses strange locations for the executables |
| 141 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |
| 142 | + JAVACMD="$JAVA_HOME/jre/sh/java" |
| 143 | + elif [ -x "$JAVA_HOME/jre/bin/java" ] ; then |
| 144 | + JAVACMD="$JAVA_HOME/jre/bin/java" |
| 145 | + else |
| 146 | + JAVACMD="$JAVA_HOME/bin/java" |
| 147 | + fi |
| 148 | + else |
| 149 | + JAVACMD=`which java 2> /dev/null ` |
| 150 | + if [ -z "$JAVACMD" ] ; then |
| 151 | + JAVACMD=java |
| 152 | + fi |
| 153 | + fi |
| 154 | +fi |
| 155 | + |
| 156 | +if [ ! -x "$JAVACMD" ] ; then |
| 157 | + echo "Error: JAVA_HOME is not defined correctly." |
| 158 | + echo " We cannot execute $JAVACMD" |
| 159 | + exit 1 |
| 160 | +fi |
| 161 | + |
| 162 | +# Build local classpath using just the launcher in non-rpm mode or |
| 163 | +# use the Jpackage helper in rpm mode with basic and default jars |
| 164 | +# specified in the ant.conf configuration. Because the launcher is |
| 165 | +# used, libraries linked in ANT_HOME/lib will also be included, but this |
| 166 | +# is discouraged as it is not java-version safe. A user should |
| 167 | +# request optional jars and their dependencies via the OPT_JAR_LIST |
| 168 | +# variable |
| 169 | +if $rpm_mode && [ -x /usr/bin/build-classpath ] ; then |
| 170 | + LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)" |
| 171 | + |
| 172 | + # If no optional jars have been specified then build the default list |
| 173 | + if [ -z "$OPT_JAR_LIST" ] ; then |
| 174 | + for file in /etc/ant.d/*; do |
| 175 | + if [ -f "$file" ]; then |
| 176 | + case "$file" in |
| 177 | + *~) ;; |
| 178 | + *#*) ;; |
| 179 | + *.rpmsave) ;; |
| 180 | + *.rpmnew) ;; |
| 181 | + *) |
| 182 | + for dep in `cat "$file"`; do |
| 183 | + OPT_JAR_LIST="$OPT_JAR_LIST${OPT_JAR_LIST:+ }$dep" |
| 184 | + done |
| 185 | + esac |
| 186 | + fi |
| 187 | + done |
| 188 | + fi |
| 189 | + |
| 190 | + # If the user requested to try to add some other jars to the classpath |
| 191 | + if [ -n "$OPT_JAR_LIST" ] ; then |
| 192 | + _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)" |
| 193 | + if [ -n "$_OPTCLASSPATH" ] ; then |
| 194 | + LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH" |
| 195 | + fi |
| 196 | + fi |
| 197 | + |
| 198 | + # Explicitly add javac path to classpath, assume JAVA_HOME set |
| 199 | + # properly in rpm mode |
| 200 | + if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then |
| 201 | + LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar" |
| 202 | + fi |
| 203 | + if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then |
| 204 | + LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" |
| 205 | + fi |
| 206 | + |
| 207 | + # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be |
| 208 | + # user CLASSPATH first and ant-found jars after. |
| 209 | + # In that case, the user CLASSPATH will override ant-found jars |
| 210 | + # |
| 211 | + # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour |
| 212 | + # with ant-found jars first and user CLASSPATH after |
| 213 | + if [ -n "$CLASSPATH" ] ; then |
| 214 | + # merge local and specified classpath |
| 215 | + if [ -z "$LOCALCLASSPATH" ] ; then |
| 216 | + LOCALCLASSPATH="$CLASSPATH" |
| 217 | + elif [ -n "$CLASSPATH_OVERRIDE" ] ; then |
| 218 | + LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH" |
| 219 | + else |
| 220 | + LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH" |
| 221 | + fi |
| 222 | + |
| 223 | + # remove class path from launcher -cp option |
| 224 | + CLASSPATH="" |
| 225 | + fi |
| 226 | +else |
| 227 | + # not using rpm_mode; use launcher to determine classpaths |
| 228 | + if [ -z "$LOCALCLASSPATH" ] ; then |
| 229 | + LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar |
| 230 | + else |
| 231 | + LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH |
| 232 | + fi |
| 233 | +fi |
| 234 | + |
| 235 | +if [ -n "$JAVA_HOME" ] ; then |
| 236 | + # OSX hack to make Ant work with jikes |
| 237 | + if $darwin ; then |
| 238 | + OSXHACK="${JAVA_HOME}/../Classes" |
| 239 | + if [ -d "${OSXHACK}" ] ; then |
| 240 | + for i in "${OSXHACK}"/*.jar |
| 241 | + do |
| 242 | + JIKESPATH="$JIKESPATH:$i" |
| 243 | + done |
| 244 | + fi |
| 245 | + fi |
| 246 | +fi |
| 247 | + |
| 248 | +# Allow Jikes support (off by default) |
| 249 | +if $usejikes; then |
| 250 | + ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes" |
| 251 | +fi |
| 252 | + |
| 253 | +# For Cygwin, switch paths to appropriate format before running java |
| 254 | +# For PATHs convert to unix format first, then to windows format to ensure |
| 255 | +# both formats are supported. Probably this will fail on directories with ; |
| 256 | +# in the name in the path. Let's assume that paths containing ; are more |
| 257 | +# rare than windows style paths on cygwin. |
| 258 | +if $cygwin; then |
| 259 | + if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then |
| 260 | + format=mixed |
| 261 | + else |
| 262 | + format=windows |
| 263 | + fi |
| 264 | + [ -n "$ANT_HOME" ] && ANT_HOME=`cygpath --$format "$ANT_HOME"` |
| 265 | + ANT_LIB=`cygpath --$format "$ANT_LIB"` |
| 266 | + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --$format "$JAVA_HOME"` |
| 267 | + LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"` |
| 268 | + LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"` |
| 269 | + if [ -n "$CLASSPATH" ] ; then |
| 270 | + CP_TEMP=`cygpath --path --unix "$CLASSPATH"` |
| 271 | + CLASSPATH=`cygpath --path --$format "$CP_TEMP"` |
| 272 | + fi |
| 273 | + CYGHOME=`cygpath --$format "$HOME"` |
| 274 | +fi |
| 275 | + |
| 276 | +# Show script help if requested |
| 277 | +if $show_help ; then |
| 278 | + echo $0 '[script options] [options] [target [target2 [target3] ..]]' |
| 279 | + echo 'Script Options:' |
| 280 | + echo ' --help, --h print this message and ant help' |
| 281 | + echo ' --noconfig suppress sourcing of /etc/ant.conf,' |
| 282 | + echo ' $HOME/.ant/ant.conf, and $HOME/.antrc' |
| 283 | + echo ' configuration files' |
| 284 | + echo ' --usejikes enable use of jikes by default, unless' |
| 285 | + echo ' set explicitly in configuration files' |
| 286 | + echo ' --execdebug print ant exec line generated by this' |
| 287 | + echo ' launch script' |
| 288 | + echo ' ' |
| 289 | +fi |
| 290 | +# add a second backslash to variables terminated by a backslash under cygwin |
| 291 | +if $cygwin; then |
| 292 | + case "$ANT_HOME" in |
| 293 | + *\\ ) |
| 294 | + ANT_HOME="$ANT_HOME\\" |
| 295 | + ;; |
| 296 | + esac |
| 297 | + case "$CYGHOME" in |
| 298 | + *\\ ) |
| 299 | + CYGHOME="$CYGHOME\\" |
| 300 | + ;; |
| 301 | + esac |
| 302 | + case "$JIKESPATH" in |
| 303 | + *\\ ) |
| 304 | + JIKESPATH="$JIKESPATH\\" |
| 305 | + ;; |
| 306 | + esac |
| 307 | + case "$LOCALCLASSPATH" in |
| 308 | + *\\ ) |
| 309 | + LOCALCLASSPATH="$LOCALCLASSPATH\\" |
| 310 | + ;; |
| 311 | + esac |
| 312 | + case "$CLASSPATH" in |
| 313 | + *\\ ) |
| 314 | + CLASSPATH="$CLASSPATH\\" |
| 315 | + ;; |
| 316 | + esac |
| 317 | +fi |
| 318 | +# Execute ant using eval/exec to preserve spaces in paths, |
| 319 | +# java options, and ant args |
| 320 | +ant_sys_opts= |
| 321 | +if [ -n "$CYGHOME" ]; then |
| 322 | + if [ -n "$JIKESPATH" ]; then |
| 323 | + ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\"" |
| 324 | + else |
| 325 | + ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\"" |
| 326 | + fi |
| 327 | +else |
| 328 | + if [ -n "$JIKESPATH" ]; then |
| 329 | + ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\"" |
| 330 | + fi |
| 331 | +fi |
| 332 | +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\"" |
| 333 | +if $ant_exec_debug ; then |
| 334 | + echo $ant_exec_command $ant_exec_args |
| 335 | +fi |
| 336 | +eval $ant_exec_command "$ant_exec_args" |
0 commit comments