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