runant.pl revision 0
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan#!/usr/bin/perl
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan#
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# Copyright 2000-2004 The Apache Software Foundation
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
23bd88d6bfcb5a6d1140e68c159d14264cb5d41bJason Vincent# Licensed under the Apache License, Version 2.0 (the "License");
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# you may not use this file except in compliance with the License.
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# You may obtain a copy of the License at
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# http://www.apache.org/licenses/LICENSE-2.0
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# Unless required by applicable law or agreed to in writing, software
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# distributed under the License is distributed on an "AS IS" BASIS,
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# See the License for the specific language governing permissions and
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# limitations under the License.
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#######################################################################
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# runant.pl
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# wrapper script for invoking ant in a platform with Perl installed
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# this may include cgi-bin invocation, which is considered somewhat daft.
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# (slo: that should be a separate file which can be derived from this
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos# and returns the XML formatted output)
9414015dda290f99570edc01b6dbe98f0f4c49c7Laszlo Hordos#
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan# the code is not totally portable due to classpath and directory splitting
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan# issues. oops. (NB, use File::Spec::Functions will help and the code is
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan# structured for the catfile() call, but because of perl version funnies
95a1999c80b3861230dabc65b91d0b802a3b62f0Paul Bryan# the code is not included.
5d968e809e05272e10f85f43b2e4d230af912fecBrendan Miller#
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan# created: 2000-8-24
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan# author: Steve Loughran steve_l@sourceforge.net
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan#######################################################################
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan#
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos# Assumptions:
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos# - the "java" executable/script is on the command path
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos# - ANT_HOME has been set
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos# - target platform uses ":" as classpath separator or perl indicates it is dos/win32
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos# - target platform uses "/" as directory separator.
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#be fussy about variables
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordosuse strict;
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#platform specifics (disabled)
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#use File::Spec::Functions;
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#turn warnings on during dev; generates a few spurious uninitialised var access warnings
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#use warnings;
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordos#and set $debug to 1 to turn on trace info
e9aaa1f1adc6f718befc047fe7177bdf52198c3aLaszlo Hordosmy $debug=1;
fd25b99368235181964a13861fbd7bb0a210ddc8Bruno Lavit
fd25b99368235181964a13861fbd7bb0a210ddc8Bruno Lavit#######################################################################
fd25b99368235181964a13861fbd7bb0a210ddc8Bruno Lavit#
0389b442e8bd8d112b977faae238cc8bb66201e2Bruno Lavit# check to make sure environment is setup
0389b442e8bd8d112b977faae238cc8bb66201e2Bruno Lavit#
0389b442e8bd8d112b977faae238cc8bb66201e2Bruno Lavit
f1aa66113fa700d874f2c4c38e87c6ce44dae232Bruno Lavitmy $HOME = $ENV{ANT_HOME};
f1aa66113fa700d874f2c4c38e87c6ce44dae232Bruno Lavitif ($HOME eq "")
fd25b99368235181964a13861fbd7bb0a210ddc8Bruno Lavit {
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan die "\n\nANT_HOME *MUST* be set!\n\n";
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan }
1965c5d21403c3d66eb1efa29c670378311b1077Paul Bryan
29b501990ace032d7b959ac1afd1ec75533e8baePaul Bryanmy $JAVACMD = $ENV{JAVACMD};
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit$JAVACMD = "java" if $JAVACMD eq "";
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos
43689602ee8a67deb29ea8412c48410dcaa6b30aLaszlo Hordosmy $onnetware = 0;
376d1bf8f8ca562eecccbf0a0d34aa7c7352e152Laszlo Hordosif ($^O eq "NetWare")
376d1bf8f8ca562eecccbf0a0d34aa7c7352e152Laszlo Hordos{
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit $onnetware = 1;
bf3adaa7953ef4d249670fa82f2a0f7f17ee4b7bLaszlo Hordos}
bf3adaa7953ef4d249670fa82f2a0f7f17ee4b7bLaszlo Hordos
bf3adaa7953ef4d249670fa82f2a0f7f17ee4b7bLaszlo Hordosmy $oncygwin = ($^O eq "cygwin");
bf3adaa7953ef4d249670fa82f2a0f7f17ee4b7bLaszlo Hordos
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit#ISSUE: what java wants to split up classpath varies from platform to platform
376d1bf8f8ca562eecccbf0a0d34aa7c7352e152Laszlo Hordos#and perl is not too hot at hinting which box it is on.
4a3638f833b6a5b87f5979857fb774ca53385cefChad Kienle#here I assume ":" 'cept on win32, dos, and netware. Add extra tests here as needed.
43689602ee8a67deb29ea8412c48410dcaa6b30aLaszlo Hordosmy $s=":";
43689602ee8a67deb29ea8412c48410dcaa6b30aLaszlo Hordosif(($^O eq "MSWin32") || ($^O eq "dos") || ($^O eq "cygwin") ||
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit ($onnetware == 1))
4a3638f833b6a5b87f5979857fb774ca53385cefChad Kienle {
4b93fff6cbed4e2ae34e954b9b9bd4f318d34cd4Andi Egloff $s=";";
5fc4ae486aef7fabd30ff1d12e8324ca9077b394Andi Egloff }
5fc4ae486aef7fabd30ff1d12e8324ca9077b394Andi Egloff
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit#build up standard classpath
5fc4ae486aef7fabd30ff1d12e8324ca9077b394Andi Egloffmy $localpath = "$HOME/lib/ant-launcher.jar";
fa9b7593e9e156060babbf3a9b06de8d6b5da5a3Laszlo Hordos#set JVM options and Ant arguments, if any
11584e05cc53d957ed964dfba41dd3d716f28480Gael Alliouxmy @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
11584e05cc53d957ed964dfba41dd3d716f28480Gael Alliouxmy @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
11584e05cc53d957ed964dfba41dd3d716f28480Gael Allioux
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit#jikes
11584e05cc53d957ed964dfba41dd3d716f28480Gael Alliouxif($ENV{JIKESPATH} ne "")
dedea1c74ef770604ee181088cedc7bd891486baAndi Egloff {
dedea1c74ef770604ee181088cedc7bd891486baAndi Egloff push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
dedea1c74ef770604ee181088cedc7bd891486baAndi Egloff }
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit
dedea1c74ef770604ee181088cedc7bd891486baAndi Egloff#construct arguments to java
fa9b7593e9e156060babbf3a9b06de8d6b5da5a3Laszlo Hordosmy @ARGS;
3032add8d51a0dcb46e076c4dc6105e78a7c9150Jake Feaselpush @ARGS, @ANT_OPTS;
3032add8d51a0dcb46e076c4dc6105e78a7c9150Jake Feasel
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavitmy $CYGHOME = "";
3032add8d51a0dcb46e076c4dc6105e78a7c9150Jake Feasel
f2f8138695e157f9ce4a11fa2f93d7d44a36d243Laszlo Hordosmy $classpath=$ENV{CLASSPATH};
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordosif ($oncygwin == 1) {
0fdda69ce3627d501e4bb3103765f676bb1ab061Laszlo Hordos $localpath = `cygpath --path --windows $localpath`;
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit chomp ($localpath);
f2f8138695e157f9ce4a11fa2f93d7d44a36d243Laszlo Hordos if (! $classpath eq "")
7586bb16914a8a62557e2e56c74a637a451fdd4eAndi Egloff {
7586bb16914a8a62557e2e56c74a637a451fdd4eAndi Egloff $classpath = `cygpath --path --windows "$classpath"`;
29b501990ace032d7b959ac1afd1ec75533e8baePaul Bryan chomp ($classpath);
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit }
7586bb16914a8a62557e2e56c74a637a451fdd4eAndi Egloff $HOME = `cygpath --path --windows $HOME`;
5ca0e3ebbca3f4e6e71a985eaaef02346d81df44Laszlo Hordos chomp ($HOME);
f17bd17365d88d445f029b5859bf524ede9a92f0Andi Egloff $CYGHOME = `cygpath --path --windows $ENV{HOME}`;
f17bd17365d88d445f029b5859bf524ede9a92f0Andi Egloff chomp ($CYGHOME);
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit}
5ca0e3ebbca3f4e6e71a985eaaef02346d81df44Laszlo Hordospush @ARGS, "-classpath", "$localpath";
44e29ab1a81842519755c5d3b9a3403efad35354Laszlo Hordospush @ARGS, "-Dant.home=$HOME";
44e29ab1a81842519755c5d3b9a3403efad35354Laszlo Hordosif ( ! $CYGHOME eq "" )
44e29ab1a81842519755c5d3b9a3403efad35354Laszlo Hordos{
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit push @ARGS, "-Dcygwin.user.home=\"$CYGHOME\""
44e29ab1a81842519755c5d3b9a3403efad35354Laszlo Hordos}
43ac19f28eaa5f298d5534a1f4ac21076399f435Phill Cunningtonpush @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
ae79bf818de74e667aa5484483357212e418a68cJamie Nelsonpush @ARGS, @ARGV;
a4a9bba084e44de2efaad5d022b27673b864fbacAndi Egloffif (! $classpath eq "")
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit{
43ac19f28eaa5f298d5534a1f4ac21076399f435Phill Cunnington if ($onnetware == 1)
bdf1b2b1491da535d3c50421c77fc8b1255e5f0aAndi Egloff {
bdf1b2b1491da535d3c50421c77fc8b1255e5f0aAndi Egloff # make classpath literally $CLASSPATH
8d50d56a56b1ad306c415e4fc0578a22a62ec9a0Laszlo Hordos # this is to avoid pushing us over the 512 character limit
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit # even skip the ; - that is already in $localpath
ae79bf818de74e667aa5484483357212e418a68cJamie Nelson push @ARGS, "-lib", "\$CLASSPATH";
24c6182bad770a4a353900e875b7275789087747Jon Branch }
ae79bf818de74e667aa5484483357212e418a68cJamie Nelson else
ca9cecf8aad26de692a51049e26d3374dc97f975Brendan Mmiller {
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit push @ARGS, "-lib", "$classpath";
37d3ea05cca877010506f556b35795e9c60ce848Andi Egloff }
24c6182bad770a4a353900e875b7275789087747Jon Branch}
37d3ea05cca877010506f556b35795e9c60ce848Andi Egloffprint "\n $JAVACMD @ARGS\n\n" if ($debug);
4a240685d844397ddead5eff4677efe0b7e94c6cAlin Brici
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavitmy $returnValue = system $JAVACMD, @ARGS;
bdf1b2b1491da535d3c50421c77fc8b1255e5f0aAndi Egloffif ($returnValue eq 0)
61dd61caaf4be79c641be16977e53b131cd87de3Laszlo Hordos {
29b501990ace032d7b959ac1afd1ec75533e8baePaul Bryan exit 0;
29b501990ace032d7b959ac1afd1ec75533e8baePaul Bryan }
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavitelse
61dd61caaf4be79c641be16977e53b131cd87de3Laszlo Hordos {
2c51c578e0f48b6ebdca554dbb46b8a6e1379fb1Andi Egloff # only 0 and 1 are widely recognized as exit values
2c51c578e0f48b6ebdca554dbb46b8a6e1379fb1Andi Egloff # so change the exit value to 1
2c51c578e0f48b6ebdca554dbb46b8a6e1379fb1Andi Egloff exit 1;
b7dc48d3b8b0550ab1e178408299bed5185ab4a1Bruno Lavit }
44e29ab1a81842519755c5d3b9a3403efad35354Laszlo Hordos