| #!/usr/bin/python |
| """ |
| |
| runant.py |
| |
| This script is a translation of the runant.pl written by Steve Loughran. |
| It runs ant with/out arguments, it should be quite portable (thanks to |
| the python os library) |
| This script has been tested with Python2.0/Win2K |
| |
| created: 2001-04-11 |
| author: Pierre Dittgen pierre.dittgen@criltelecom.com |
| |
| Assumptions: |
| |
| - the "java" executable/script is on the command path |
| - ANT_HOME has been set |
| """ |
| import os, os.path, string, sys |
| |
| # Change it to 1 to get extra debug information |
| debug = 0 |
| |
| ####################################################################### |
| # |
| # check to make sure environment is setup |
| # |
| if not os.environ.has_key('ANT_HOME'): |
| print '\n\nANT_HOME *MUST* be set!\n\n' |
| sys.exit(1) |
| else: |
| ANT_HOME = os.environ['ANT_HOME'] |
| |
| if not os.environ.has_key('JAVACMD'): |
| JAVACMD = 'java' |
| else: |
| JAVACMD = os.environ['JAVACMD'] |
| |
| # Sets the separator char for CLASSPATH |
| SEPARATOR = ':' |
| if os.name == 'dos' or os.name == 'nt': |
| SEPARATOR = ';' |
| |
| # Build up standard classpath |
| localpath = '' |
| if os.environ.has_key('CLASSPATH'): |
| localpath = os.environ['CLASSPATH'] |
| else: |
| if debug: |
| print 'Warning: no initial classpath\n' |
| |
| # Add jar files |
| LIBDIR = os.path.join(ANT_HOME, 'lib') |
| jarfiles = [] |
| for file in os.listdir(LIBDIR): |
| if file[-4:] == '.jar': |
| jarfiles.append(os.path.join(LIBDIR,file)) |
| if debug: |
| print 'Jar files:' |
| for jar in jarfiles: |
| print jar |
| localpath = localpath + SEPARATOR + string.join(jarfiles, SEPARATOR) |
| |
| # If JAVA_HOME is defined, look for tools.jar & classes.zip |
| # and add to classpath |
| if os.environ.has_key('JAVA_HOME') and os.environ['JAVA_HOME'] != '': |
| JAVA_HOME = os.environ['JAVA_HOME'] |
| TOOLS = os.path.join(JAVA_HOME, os.path.join('lib', 'tools.jar')) |
| if os.path.exists(TOOLS): |
| localpath = localpath + SEPARATOR + TOOLS |
| CLASSES = os.path.join(JAVA_HOME, os.path.join('lib', 'classes.zip')) |
| if os.path.exists(CLASSES): |
| localpath = localpath + SEPARATOR + CLASSES |
| else: |
| print '\n\nWarning: JAVA_HOME environment variable is not set.\n', \ |
| 'If the build fails because sun.* classes could not be found\n', \ |
| 'you will need to set the JAVA_HOME environment variable\n', \ |
| 'to the installation directory of java\n' |
| |
| # Jikes |
| ANT_OPTS = [] |
| if os.environ.has_key('ANT_OPTS'): |
| ANT_OPTS = string.split(os.environ['ANT_OPTS']) |
| if os.environ.has_key('JIKESPATH'): |
| ANT_OPTS.append('-Djikes.class.path=' + os.environ['JIKESPATH']) |
| |
| # Builds the commandline |
| cmdline = '%s -classpath %s -Dant.home=%s %s org.apache.tools.ant.Main %s' \ |
| % (JAVACMD, localpath, ANT_HOME, string.join(ANT_OPTS,' '), \ |
| string.join(sys.argv[1:], ' ')) |
| |
| if debug: |
| print '\n%s\n\n' % (cmdline) |
| |
| # Run the biniou! |
| os.system(cmdline) |