Arun:
To be honest, I am not sure as I don't know Perl...
However, if I were to execute this in a bash script:
`. /root/.bashrc`;
It wouldn't apply the .bashrc settings to my current shell... Not sure
if this is also true in Perl...
Scot
Arun wrote:
Scot,
Ok,
yes a crontab calls the perl script and executes the ant script.
The line
`ant -logfile build.log` executes the ant. But I sourced the bashrc in perl.
But still the same.
Any ideas.?
On 10/20/07, Scot P. Floess <[EMAIL PROTECTED]> wrote:
Arun:
Sorry I don't know any Perl :(
So what is the problem exactly? You are trying to run this from Perl or
a crontab that calls a Perl script who executes your Ant script?
I'm not following the problem :( Sorry about that...
Arun wrote:
Scot,
Thanks a lot for the reply. You are correct. I was not sourcing it . But
When I echo the variable CATALINA_HOME from perl script it is an empty
string causing the same effect.
Take a peek at my perl script which runs as cron task.
This script updates from sourceforge cvs and redeploys to tomcat using
ant.
#!/usr/bin/perl
my $home="/home/build";
my $tomcathome="/usr/local/bin/apache-tomcat-6.0.13";
my $TRUE='true';
my $checkoutcvs=$ARGV[0];
my $clean=$ARGV[1];
chdir '/home/build/mobchannel';
print "Usage: ./autobuild [checkout] [clean]\n";
print "The values for checkout and clean can be true or false or nothing
for
default\n";
print "Default values are checkout=false and clean=false\n";
print "checkout ? $checkoutcvs \n";
`. /root/.bashrc`;
print "CATALINA_HOME = ${CATALINA_HOME}";
if($clean eq $TRUE)
{
`rm -rf mobchannelWEB`;
}
else
{
$checkoutcvs='false';
}
if($checkoutcvs eq $TRUE)
{
print "Checking out from CVS\n";
`cvs -d ":extssh:[EMAIL PROTECTED]
:/cvsroot/mobchannel"
co mobchannelWEB`;
}
else
{
$clean='false';
}
print "Changed dir to mobchannelWEB\n\n";
chdir 'mobchannelWEB';
print "Starting Build...............\n";
`rm -rf build.log`;
`ant -logfile build.log `;
my $failed=`grep "BUILD FAILED" build.log`;
if($failed)
{
print "BUILD FAILED";
my $tlog=`tail -1000 build.log`;
print "$tlog ";
}
else
{
print "Stopping Server , stand by...............\n";
`catalina stop`;
`pkill -9 java`;
print "Server stopped ...............\n\n\n";
`rm -rf $tomcathome/webapps/mobchannelWEB`;
print "Removing context MobchannelWEB ...............\n";
#`rm -rf $home/temp`;
`mkdir $tomcathome/webapps/mobchannelWEB`;
#`mkdir $home/temp`;
print "Deploying Context mobchannelWEB ...............\n";
`cp -r WebRoot/* $tomcathome/webapps/mobchannelWEB`;
#`cp -r WebRoot/* $home/temp`;
chdir '/usr/local/bin/apache-tomcat-6.0.13/webapps/mobchannelWEB/';
`find . -type f | xargs grep -l '
mobchannel.database.user.password=fiddle'
| xargs sed -i '' -e
's/mobchannel.database.user.password=fiddle/mobchannel.database.user.password=mobchannel/g'`;
print "Starting Server ...............\n";
`catalina start`;
}
print " Sending mail.....\n";
chdir '/home/build/mobchannel/mobchannelWEB';
`/home/build/mobchannel/sendMail.pl $checkoutcvs $clean`;
On 10/20/07, Scot P. Floess <[EMAIL PROTECTED]> wrote:
Sorry, by script I mean something that resembles the cron entry I
listed...
Scot P. Floess wrote:
Arun:
I believe your problem is related to the way in which cron is
running. I don't believe your .bashrc is being sourced. You may need
to either write a script to kick off your ant tasks or perhaps make
the cron entry resemble something like
. ~/.bashrc ; ant -f [dir to build.xml]/build.xml [whatever tasks you
call]
Please note the preceeding dot in
. ~/.bashrc
This will source your bashrc and apply whatever is set there to the
currently running shell...
Arun wrote:
Hi,
have a problem running ant script as a cronjob. The cron tells
BUILD FAILED
/home/build/mobchannel/mobchannelWEB/build.xml:230:
/home/build/mobchannel/mobchannelWEB/${env.CATALINA_HOME}/bin not
found.
But when I directly execute the build.xml using ant this error does
not
occur.
<property environment="env" />
<property name="tomcat.home" value="${env.CATALINA_HOME}" />
<property name="webapp.name" value="mobchannelWEB" />
<property name="java.home" value="${env.JAVA_HOME}" />
<property name="webapp.path" value="WebRoot" />
<target name="jspc">
<taskdef classname="org.apache.jasper.JspC"
name="jasper2">
<classpath id="jspc.classpath">
<pathelement location="${
java.home}/../lib/tools.jar"
/>
<fileset dir="${tomcat.home}/bin">
My CATALIN_HOME points to correctly and so does my JAVA_HOME.
The ${tomcat.home}/bin is getting expanded to path
/home/build/mobchannel/mobchannelWEB/${env.CATALINA_HOME}/bin .
When it should have been /usr/local/bin/apache-tomcat-6.0.13/bin.
Why does my ant script do this when run from a cronjob using perl
script.
Obviously the env property should be empty. I am calling ant -logfile
build.log from my perl script. And I am including the perlscript as a
cron
job.
How can I pass the environment to ant. I have my CATALIN_HOME entry
in
~/.bashrc. And When I echo in console I can see that too.
--
Scot P. Floess
27 Lake Royale
Louisburg, NC 27549
252-478-8087 (Home)
919-754-4592 (Work)
Chief Architect JPlate http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Scot P. Floess
27 Lake Royale
Louisburg, NC 27549
252-478-8087 (Home)
919-754-4592 (Work)
Chief Architect JPlate http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim
--
Scot P. Floess
27 Lake Royale
Louisburg, NC 27549
252-478-8087 (Home)
919-754-4592 (Work)
Chief Architect JPlate http://sourceforge.net/projects/jplate
Chief Architect JavaPIM http://sourceforge.net/projects/javapim