sbin/res/ant/bin/runant.pl
changeset 1072 ac1eacb3aa33
parent 1071 02c04d2c8fd8
child 1073 687133dc13cf
equal deleted inserted replaced
1071:02c04d2c8fd8 1072:ac1eacb3aa33
     1 #!/usr/bin/perl
       
     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 #######################################################################
       
    19 #
       
    20 # runant.pl
       
    21 #
       
    22 # wrapper script for invoking ant in a platform with Perl installed
       
    23 # this may include cgi-bin invocation, which is considered somewhat daft.
       
    24 # (slo: that should be a separate file which can be derived from this
       
    25 # and returns the XML formatted output)
       
    26 #
       
    27 # the code is not totally portable due to classpath and directory splitting
       
    28 # issues. oops. (NB, use File::Spec::Functions  will help and the code is
       
    29 # structured for the catfile() call, but because of perl version funnies
       
    30 # the code is not included. 
       
    31 #
       
    32 # created:         2000-8-24
       
    33 # author:          Steve Loughran steve_l@sourceforge.net
       
    34 #######################################################################
       
    35 #
       
    36 # Assumptions:
       
    37 #
       
    38 # - the "java" executable/script is on the command path
       
    39 # - ANT_HOME has been set
       
    40 # - target platform uses ":" as classpath separator or perl indicates it is dos/win32
       
    41 # - target platform uses "/" as directory separator.
       
    42 
       
    43 #be fussy about variables
       
    44 use strict;
       
    45 
       
    46 #platform specifics (disabled)
       
    47 #use File::Spec::Functions;
       
    48 
       
    49 #turn warnings on during dev; generates a few spurious uninitialised var access warnings
       
    50 #use warnings;
       
    51 
       
    52 #and set $debug to 1 to turn on trace info
       
    53 my $debug=1;
       
    54 
       
    55 #######################################################################
       
    56 #
       
    57 # check to make sure environment is setup
       
    58 #
       
    59 
       
    60 my $HOME = $ENV{ANT_HOME};
       
    61 if ($HOME eq "")
       
    62         {
       
    63     die "\n\nANT_HOME *MUST* be set!\n\n";
       
    64         }
       
    65 
       
    66 my $JAVACMD = $ENV{JAVACMD};
       
    67 $JAVACMD = "java" if $JAVACMD eq "";
       
    68 
       
    69 my $onnetware = 0;
       
    70 if ($^O eq "NetWare")
       
    71 {
       
    72   $onnetware = 1;
       
    73 }
       
    74 
       
    75 my $oncygwin = ($^O eq "cygwin");
       
    76 
       
    77 #ISSUE: what java wants to split up classpath varies from platform to platform 
       
    78 #and perl is not too hot at hinting which box it is on.
       
    79 #here I assume ":" 'cept on win32, dos, and netware. Add extra tests here as needed.
       
    80 my $s=":";
       
    81 if(($^O eq "MSWin32") || ($^O eq "dos") || ($^O eq "cygwin") ||
       
    82    ($onnetware == 1))
       
    83         {
       
    84         $s=";";
       
    85         }
       
    86 
       
    87 #build up standard classpath
       
    88 my $localpath = "$HOME/lib/ant-launcher.jar";
       
    89 #set JVM options and Ant arguments, if any
       
    90 my @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
       
    91 my @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
       
    92 
       
    93 #jikes
       
    94 if($ENV{JIKESPATH} ne "")
       
    95         {
       
    96         push @ANT_OPTS, "-Djikes.class.path=$ENV{JIKESPATH}";
       
    97         }
       
    98 
       
    99 #construct arguments to java
       
   100 my @ARGS;
       
   101 push @ARGS, @ANT_OPTS;
       
   102 
       
   103 my $CYGHOME = "";
       
   104 
       
   105 my $classpath=$ENV{CLASSPATH};
       
   106 if ($oncygwin == 1) {
       
   107   $localpath = `cygpath --path --windows $localpath`;
       
   108   chomp ($localpath);
       
   109   if (! $classpath eq "")
       
   110   {
       
   111     $classpath = `cygpath --path --windows "$classpath"`;
       
   112     chomp ($classpath);
       
   113   }
       
   114   $HOME = `cygpath --path --windows $HOME`;
       
   115   chomp ($HOME);
       
   116   $CYGHOME = `cygpath --path --windows $ENV{HOME}`;
       
   117   chomp ($CYGHOME);
       
   118 }
       
   119 push @ARGS, "-classpath", "$localpath";
       
   120 push @ARGS, "-Dant.home=$HOME";
       
   121 if ( ! $CYGHOME eq "" )
       
   122 {
       
   123   push @ARGS, "-Dcygwin.user.home=\"$CYGHOME\""
       
   124 }
       
   125 push @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
       
   126 push @ARGS, @ARGV;
       
   127 if (! $classpath eq "")
       
   128 {
       
   129   if ($onnetware == 1)
       
   130   {
       
   131     # make classpath literally $CLASSPATH
       
   132     # this is to avoid pushing us over the 512 character limit
       
   133     # even skip the ; - that is already in $localpath
       
   134     push @ARGS, "-lib", "\$CLASSPATH";
       
   135   }
       
   136   else
       
   137   {
       
   138     push @ARGS, "-lib", "$classpath";
       
   139   }
       
   140 }
       
   141 print "\n $JAVACMD @ARGS\n\n" if ($debug);
       
   142 
       
   143 my $returnValue = system $JAVACMD, @ARGS;
       
   144 if ($returnValue eq 0)
       
   145         {
       
   146         exit 0;
       
   147         }
       
   148 else
       
   149         {
       
   150         # only 0 and 1 are widely recognized as exit values
       
   151         # so change the exit value to 1
       
   152         exit 1;
       
   153         }