<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Times New Roman; font-size: 12pt; color: #000000'>Ketan, at least from a very brief review of your example, it looks like Swift of forming the command line pretty close to what it should be doing.<br><br>The extra command line options you are observing are flags to the Swift application launching script "_swiftwrap" which runs on the execution host, with its current working directory being the temporary "job directory" as described in the Users Guide.<br><br>If you put in debugging statements in Image_Crop, you'll see that the command line is coming in largely as you would expected. If Image_Crop is a binary, you can put a debugging wrapper script around it just while you are experimenting with how Swift works.<br><br>The one issue you *might* be encountering is the passing of a directory as an argument. One common pitfall is that if you pass a "relative" directory as a string, your application will in fact be running with a different current working dircetory than you expect (ie, the job directory) and will this not be able to open the files.  In fact, once you start running on distributed resources, the application may be running on a system that cant even access that directory.<br><br>An approach to consider is to map all the files in that directory into an array (using for example simple_mapper, array_mapper, or your own external mapper), then pass the array as an argument to your app() function, and on the command line put something like @filename(myFileArray[0]). Then make the actual executable be a wrapper script that does a "dirname" of that argument so that your application gets invoked with a directory, as it requires.<br><br>Its possible we should add an @dirname() primitive that works like @filename() to handle this common case without requiring a user-written wrapper shell script.<br><br>- Mike<br><br><br>----- "Ketan Maheshwari" <ketancmaheshwari@gmail.com> wrote:
<br>> Hello,<div><br>> </div><div>I have difficulty in forming a commandline that can be executed from within Swift. </div><div><br>> </div><div>I have a commandline in the following form:</div><div><br>> </div><div><div>Image_Crop   -dir "Repository to process"     -xmin  someint   -ymin   someint -xmax someint  -ymax someint</div>
</div><div><br>> </div><div><br>> </div><div>I place it in Swiftscript as follows:</div><div><br>> </div><div>type messagefile;</div><div><br>> </div><div><div>(messagefile mf) image_crop (string somedir, int xmin, int ymin, int xmax, int ymax) {</div>
<div>  app {</div><div>     Image_Crop " -dir " somedir " -xmin " xmin " -ymin " ymin " -xmax " xmax  " -ymax " ymax stdout=@filename(mf);</div><div>  }</div><div>}</div></div>
<div><br>> </div><div><br>> </div><div>I call it as follows:</div><div><br>> </div><div>messagefile icoutfile <"icout.txt">;</div><div><br>> </div><div>icoutfile = image_crop ("/home/ketan/MpiReg/dataold/sorted/g_8b1e46671d5733/",20,71,142,169);</div>
<div><br>> </div><div><br>> </div><div>However, the call does not go through as expected. I suppose, Swift creates a wrapper around this call and adds more parameters and switches as shown in the log file inside its directory (*.d) as follows :</div>
<div><br>> </div><div><div>Image_Crop-txp9800k -jobdir t -e /home/ketan/MpiReg/bin/Image_Crop -out icout.txt -err stderr.txt -i -d -if -of icout.txt -k -status files -a -dir /home/ketan/MpiReg/dataold/sorted/g_8b1e46671d5733/ -xmin 20 -ymin 71 -xmax 142 -ymax 169</div>
</div><div><br>> </div><div><br>> </div><div>It seems the binary Image_Crop does not go along well with the additional switches and parameters generated by the wrapper.</div><div><br>> </div><div>Any suggestions to approach this?</div>
<div><br>> </div><div><br>> </div><div>Regards,</div><div><br>> </div><div>Ketan</div><div><br>> </div>
<br>> _______________________________________________
Swift-user mailing list
Swift-user@ci.uchicago.edu
http://mail.ci.uchicago.edu/mailman/listinfo/swift-user<br><br>-- <br>Michael Wilde<br>Computation Institute, University of Chicago<br>Mathematics and Computer Science Division<br>Argonne National Laboratory<br><br></div></body></html>