[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ant-user
Subject:    Re: Error returned using <exec> task
From:       Krzysieq <krzysieq () gazeta ! pl>
Date:       2008-07-25 15:53:30
Message-ID: 1817d5e00807250853t2c912e4al77e66e3d1297b0e5 () mail ! gmail ! com
[Download RAW message or body]


Don't apologize, I was just joking a bit. Bash is a command-interpreting
program (shell). It can interpret an arbitrary number of commands, which
obviously includes one. What You wrote before suggested that You want to
pipe the ouput of the cvs command to grep. This can only be done if You use
a program like bash as the value of executable attribute, and pass it in the
-c parameter the actual command You want to execute. It is in fact a shell
script, albeit a very simple one. Hope it helps.

Cheers,
Chris

2008/7/25 <ray.harper@wachovia.com>

> First, let me apologize for the lengthy code.  I was trying to put in as
> much information as possible.
>
> I'm actually trying to run this on a UNIX server.  I'm new to the UNIX
> environment, so correct me if I am wrong, but if I use the bash command,
> will I not have to create and execute some sort of shell script?  If this
> is the case, I'm not sure if this will work for me.  All I am trying to do
> is execute a the cvs status command.  Below is what I am trying to
> accomplish if I was doing this from the command line:
>
>        cvs -d :pserver:user@mycvsrepository.net:cvs/build/logs status
> opt/usr/bin/testfile.xml
>
> This will return the following info:
>
>  ===================================================================
>        File: Demo.xml          Status: Up-to-date
>
>        Working revision:    1.8
>        Repository revision: 1.8
> /cvs/1LCW-LiveCycle_Workflow/1LCW_Pilot/Customer/Demo/Demo/Demo.xml,v
>        Sticky Tag:          c0467215_1LCW_Demo_07-22-08_1300_ReadyITE
> (revision: 1.8)
>        Sticky Date:         (none)
>        Sticky Options:      (none)
>
> All I am trying to get is the Working revision line and place it into a
> property.  The following line:
>
>        cvs -d :pserver:user@mycvsrepository.net:cvs/build/logs status
> opt/usr/bin/testfile.xml | grep 'Working'
>
> returns this:
>
>        Working revision:    1.8
>
> I'm trying to take the line above and place it into a property so I can
> later parse it to find the latest revision number.  Hopefully, this helps
> and clarifies what I am doing.
>
> Thanks,
>
> Ray Harper, Jr.
> Software Engineer II
> Wachovia Corporation
> 1525 West WT Harris Blvd. Charlotte, NC, 28270
> Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077
>
> CONFIDENTIALITY NOTICE:
> The information accompanying this email transmission may contain
> confidential or legally privileged information that is intended only for
> the use of the individual or entity named in this message. If you are not
> the intended recipient, you are hereby notified that any disclosure,
> copying, distribution or reliance upon the contents of this email is
> strictly prohibited. If you receive this email in error, please notify the
> sender immediately.
>
>
>
>
> Krzysieq <krzysieq@gazeta.pl>
> 07/25/2008 10:33 AM
> Please respond to
> "Ant Users List" <user@ant.apache.org>
>
>
> To
> "Ant Users List" <user@ant.apache.org>
> cc
>
> Subject
> Re: Error returned using <exec> task
>
>
>
>
>
>
> The code pieces You pasted are quite lenghty, and most of my experience
> comes from unix boxes, but I guess there might be a similarity.
>
>
> <exec executable="cvs" failonerror="true"
> outputproperty="build.xml.
> >
> > version.line">
> >                       <arg line="-d${common.setup.cvsRoot} status
> > ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
> > 'Working'"/>
>
>
> This has no right to do whatever it is You want it to - at least on linux
> it
> wouldn't. There's an explanation on the ant website somewhere, so I won't
> repeat all of it. In brief - if You want to pipe output to another
> program,
> You'd have to exec not the command You want, but the command environment.
> So
> in my case this usually was something like:
>
> <exec executable="bash"><arg line="-c 'do_stuff |
> do_some_more_stuff'"/></exec>
>
> Otherwise the redirection of output/error streams doesn't work. At least
> that's on linux, but I imagine it will be the same on windows. Besides
> this,
> I don't see why You might not be getting what You want. Hope I helped a
> little.
>
> Cheers,
> Chris
>
> 2008/7/25 <ray.harper@wachovia.com>
>
> > Hi,
> >
> > I am having an issue trying to execute the cvs command in an Ant script
> > using the built in <cvs> task element.  In using this, I didn't know how
> > to place the status information into a property.  So, I decided to use
> the
> > <exec> task element.  Below is the code I am executing:
> >
> >        <if>
> >            <or>
> >                <equals arg1="${os.name}" arg2="Windows 2000"/>
> >                <equals arg1="${os.name}" arg2="Windows XP"/>
> >            </or>
> >            <then>
> >                  <exec executable="cmd" failonerror="true"
> > outputproperty="build.xml.version.line">
> >                       <arg line='/c "cvs status
> >
> ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
> > | findstr Working | findstr revision"'/>
> >                  </exec>
> >            </then>
> >            <else>
> >                  <exec executable="cvs" failonerror="true"
> > outputproperty="build.xml.version.line">
> >                       <arg line="-d${common.setup.cvsRoot} status
> > ${app.lar.source.clientpath/${prop.cust.xml.basename}.xml | grep
> > 'Working'"/>
> >              </exec>
> >            </else>
> >        </if>
> >        <propertyregex property="build.xml.version"
> >              input="${build.xml.version.line}"
> >              regexp="([0-9\.]*)$"
> >              select="\1"
> >              casesensitive="false"
> >        />
> >        <echo message="XML file version info LINE =
> > '${build.xml.version.line}'"/>
> >        <echo message="XML file version info = '${build.xml.version}'"/>
> >
> > When I run the code, I get the following error:
> >
> >        cvs.get.wfversion:
> >                [echo] 2008/07/25 09:00:22 Get CVS version information to
> > generate the wfversion value.
> >                [echo] CVS Get the XML file version info:
> > '${common.setup.source.clientpath}/Demo/Demo/Demo.xml'
> >
> >        BUILD FAILED
> >  /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:1364:
> > Following error occured while executing this line
> >  /scratch/srm/customer/build/CVSTest_ray/CustomerLar_build.xml:498: exec
> > returned: 1
> >
> > I have been looking at the Ant book I purchased (Pro Apache Ant) and
> > several websites for error codes returned from the <exec> task element,
> > but have come up short.  As stated earlier, when I tried to use the
> <cvs>
> > task element, I get stuck when I try to place the information into
> > property.  Below is the code using the <cvs> task:
> >
> >       <if>
> >            <or>
> >                <equals arg1="${os.name}" arg2="Windows 2000"/>
> >                <equals arg1="${os.name}" arg2="Windows XP"/>
> >            </or>
> >            <then>
> >                  <exec executable="cmd" failonerror="true"
> > outputproperty="build.xml.version.line">
> >                       <arg line='/c "cvs status
> >
> ${quote}${app.lar.source.clientpath}/${prop.cust.xml.basename}.xml${quote}
> > | findstr Working | findstr revision"'/>
> >                  </exec>
> >            </then>
> >            <else>
> >                  <cvs
> >                 cvsRoot="${common.setup.cvsRoot}"
> >                 command="status
> > ${app.lar.client.path}/${app.lar.client.source.filename} | grep
> 'Working'"
> >                 failonerror="true"
> >              />
> >            </else>
> >        </if>
> >        <propertyregex property="build.xml.version"
> >              input="${build.xml.version.line}"
> >              regexp="([0-9\.]*)$"
> >              select="\1"
> >              casesensitive="false"
> >        />
> >        <echo message="XML file version info LINE =
> > '${build.xml.version.line}'"/>
> >        <echo message="XML file version info = '${build.xml.version}'"/>
> >
> > At this point, I didn't know how to put the info returned into a
> property.
> >  I know I could send it to a temp file, but I didn't want to add another
> > step into the process.  Any help would be greatly appreciated.
> >
> > Thanks,
> >
> > Ray Harper, Jr.
> > Software Engineer II
> > Wachovia Corporation
> > 1525 West WT Harris Blvd. Charlotte, NC, 28270
> > Tel: 704-427-1717 ? Fax: 704-427-3234 ? Mailcode: NC1077
> >
> > CONFIDENTIALITY NOTICE:
> > The information accompanying this email transmission may contain
> > confidential or legally privileged information that is intended only for
> > the use of the individual or entity named in this message. If you are
> not
> > the intended recipient, you are hereby notified that any disclosure,
> > copying, distribution or reliance upon the contents of this email is
> > strictly prohibited. If you receive this email in error, please notify
> the
> > sender immediately.
> >
>
>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic