1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#!/usr/bin/python
2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Licensed to the Apache Software Foundation (ASF) under one or more
3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  contributor license agreements.  See the NOTICE file distributed with
4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  this work for additional information regarding copyright ownership.
5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  The ASF licenses this file to You under the Apache License, Version 2.0
6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  (the "License"); you may not use this file except in compliance with
7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  the License.  You may obtain a copy of the License at
8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#      http://www.apache.org/licenses/LICENSE-2.0
10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  Unless required by applicable law or agreed to in writing, software
12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  distributed under the License is distributed on an "AS IS" BASIS,
13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  See the License for the specific language governing permissions and
15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#  limitations under the License.
16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#
17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll"""
19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll runant.py
21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    This script is a translation of the runant.pl written by Steve Loughran.
23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    It runs ant with/out arguments, it should be quite portable (thanks to
24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    the python os library)
25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    This script has been tested with Python2.0/Win2K
26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll created:         2001-04-11
28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll author:          Pierre Dittgen pierre.dittgen@criltelecom.com
29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Assumptions:
31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll - the "java" executable/script is on the command path
33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll"""
34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport os, os.path, string, sys
35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Change it to 1 to get extra debug information
37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Molldebug = 0
38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll#######################################################################
40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# If ANT_HOME is not set default to script's parent directory
42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif os.environ.has_key('ANT_HOME'):
43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    ANT_HOME = os.environ['ANT_HOME']
44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollelse:
45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    ANT_HOME = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# set ANT_LIB location
48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollANT_LIB = os.path.join(ANT_HOME, 'lib')
49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# set JAVACMD (check variables JAVACMD and JAVA_HOME)
51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollJAVACMD = None
52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif not os.environ.has_key('JAVACMD'):
53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    if os.environ.has_key('JAVA_HOME'):
54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll        if not os.path.exists(os.environ['JAVA_HOME']):
55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll            print "Warning: JAVA_HOME is not defined correctly."
56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll        else:
57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll            JAVACMD = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    else:
59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll        print "Warning: JAVA_HOME not set."
60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollelse:
61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    JAVACMD = os.environ['JAVACMD']
62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif not JAVACMD:
63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    JAVACMD = 'java'
64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Molllauncher_jar = os.path.join(ANT_LIB, 'ant-launcher.jar')
66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif not os.path.exists(launcher_jar):
67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    print 'Unable to locate ant-launcher.jar. Expected to find it in %s' % \
68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll        ANT_LIB
69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Build up standard classpath (LOCALCLASSPATH)
71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollLOCALCLASSPATH = launcher_jar
72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif os.environ.has_key('LOCALCLASSPATH'):
73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    LOCALCLASSPATH += os.pathsep + os.environ['LOCALCLASSPATH']
74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollANT_OPTS = ""
76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif os.environ.has_key('ANT_OPTS'):
77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    ANT_OPTS = os.environ['ANT_OPTS']
78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollOPTS = ""
80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif os.environ.has_key('JIKESPATH'):
81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    OPTS = '-Djikes.class.path=\"%s\"' % os.environ['JIKESPATH']
82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
83402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollANT_ARGS = ""
84402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif os.environ.has_key('ANT_ARGS'):
85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    ANT_ARGS = os.environ['ANT_ARGS']
86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael MollCLASSPATH = ""
88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif os.environ.has_key('CLASSPATH'):
89402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    CLASSPATH = os.environ['CLASSPATH']
90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
91402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Builds the commandline
92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollcmdline = ('%s %s -classpath %s -Dant.home=%s %s ' + \
93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    'org.apache.tools.ant.launch.Launcher %s -lib %s %s') \
94402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll     % (JAVACMD, ANT_OPTS, LOCALCLASSPATH, ANT_HOME, OPTS, ANT_ARGS, \
95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll        CLASSPATH, string.join(sys.argv[1:], ' '))
96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollif debug:
98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll    print '\n%s\n\n' % (cmdline)
99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollsys.stdout.flush()
100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll
101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll# Run the biniou!
102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollos.system(cmdline)
103