Luke Cole wrote:
OK, I've updated my code as you suggested, and it seems to submit OK
now, so when I tried it out originally, there must have been something
wrong with my escaping in the system() call.
Good..
I still encounter the issue where the rush job runs forever however,
even though the cleaner render is finished according to the output in
the log file - I just checked the windows task manager on the machine
and have noticed that "Cleaner XL.com" is still running, so this would
explain why the rush job is still going. I'm not sure why Cleaner is
not exiting when it is launched from the rush perl script - when I run
the command ("C:\Program Files\ etc) directly in the win32 console, it
exits after the render is done.
OK, now that we're sure cleaner is the one that's hanging,
I have a suggestion. It's going to sound silly, but change
all your I: specifications to a UNC equivalent if possible.
Assuming the I: drive is a network drive and has a UNC equivalent
(and is not a SAN or local drive), be careful with the double
slashes of the UNC; you'll need to use \\\\ to get a double slash,
but just use singles for the single slashes, eg:
my $err = system('"C:\Program Files\Autodesk\Cleaner XL 1.5\Cleaner XL" '.
'/I \\\\someserver\somevol\TVC_Tools\CleanerToolkit\profiles\input\DV_PAL_4x3.ip '.
'/O \\\\someserver\somevol\TVC_Tools\CleanerToolkit\profiles\output\3GP_PAL_4x3.opt '.
'/D \\\\someserver\somevol\TVC_Tools\CleanerToolkit\renders '.
'/sources \\\\someserver\somevol\TVC_Tools\CleanerToolkit\test_data\test.mov');
I know it looks weird, but the reasoning is that '\\' *even*
inside single quotes is still a special case. So you only
double up on the escaping for the first slashes, not the rest.
Something I noticed when I run the Cleaner command in the windows
console - it launches the Cleaner GUI and then closes it all down again
when it exits after the render, however this does not happen when I
submit through rush, so I am guessing that this output is redirected
somehow.
Yes; windows services are assigned a 'virtual desktop'
where stuff like that gets redirected as you say.
They really need to get rid of all GUI stuff though
for their command line app -- that can cause lots of
trouble.
Additionally, one other thing that I have noticed is that if I now try
to run the modified perl script directly in the windows console (as
opposed to submitting it via rush), I now receive the Cleaner error
dialog that I referred to before. This does not seem to occur however
when I launch the job from rush, so I guess it isn't really a problem.
Weird.
If you'd like to try to replicate outside of rush, and
assuming the above UNC technique either doesn't help
or is not relevant, try this:
1) Enable the Windows telnet service on this machine. See:
WINXP TELNET: http://www.seriss.com/rush-current/misc/windows-telnet.html#WinXP
WIN2K TELNET: http://www.seriss.com/rush-current/misc/windows-telnet.html#Win2K
WIN2K3 TELNET: http://www.seriss.com/rush-current/misc/windows-telnet.html#Win2K3
2) Telnet into the machine, and run your command.
Does it hang? If so, you have a way to replicate the problem
for Autodesk.
And while you're at it, definitely report two bugs to Autodesk:
a) Having spaces in executable names is just really bad practice.
b) Using front slashes for option flags is also REALLY BAD.
Besides making porting impossible, it disables the use
of front slash UNC pathnames, which IS supported by Windows.
Regarding (b), just because Microsoft made that mistake in 1985
with DOS (which we now have to live with) doesn't mean Autodesk
should follow their lead in 2007 to make life doubly miserable
for command line scripting. GRR!
--
Greg Ercolano, erco@(email surpressed)
Rush Render Queue, http://seriss.com/rush/
Tel: (Tel# suppressed)
Fax: (Tel# suppressed)
Cel: (Tel# suppressed)
|