From: "Abraham Schneider" <aschneider@(email surpressed)> Subject: adding windows hosts to my mac/linux nuke farm Date: Thu, 20 Jan 2011 09:15:48 -0500 |
Msg# 1994 View Complete Thread (2 articles) | All Threads Last Next |
Hi there! I have a mixed Mac and Linux farm here which renders Shake and especially Nuke. On some other machines we are running Windows with 3DS Max. These machines aren't rendering all the time. So my idea was to install Rush and Nuke on them and add them to my Nuke farm. I tried it on one machine, installed Rush, Nuke, Perl, etc. Nuke and Rush are working fine. And I already added the Filepath fix to Nuke (as mentioned in the Nuke user guide), so I can directly open existing scripts from my Linux/Macs workstations and they will work out of the box without searching and replacing the file path to change something like /mnt/server1/project/... to X:\\project\... So Nuke seems to work fine. Problem is: how/where do I tell the rush daemon/submit script on my windows machine to also change the file path, so it can save the log files etc. at the right location? At the moment, the windows machine tries to save the logs to /mnt/server1/ project/etc. instead of using X\:\... What's the correct way of doing that? Thanks for any help, Abraham Abraham Schneider Senior VFX Compositor ARRI Film & TV Services GmbH Tuerkenstr. 89 D-80799 Muenchen / Germany Phone (Tel# suppressed) EMail aschneider@(email surpressed) www.arri.de/filmtv ________________________________ ARRI Film & TV Services GmbH Sitz: München Registergericht: Amtsgericht München Handelsregisternummer: HRB 69396 Geschäftsführer: Franz Kraus; Dr. Martin Prillmann; Thomas Till |
From: Greg Ercolano <erco@(email surpressed)> Subject: Re: adding windows hosts to my mac/linux nuke farm Date: Thu, 20 Jan 2011 10:05:11 -0800 |
Msg# 1995 View Complete Thread (2 articles) | All Threads Last Next |
Abraham Schneider wrote: > how/where do I tell the rush > daemon/submit script on my windows machine to also change the file > path, so it can save the log files etc. at the right location? At the > moment, the windows machine tries to save the logs to /mnt/server1/ > project/etc. instead of using X\:\... What's the correct way of doing > that? I would instead strongly suggest standardizing on UNC paths so that you can get single pathnames that work on both platforms. For instance, instead of /mnt/server1/foo and X:/foo, use instead //server1/project/foo which would work on both. OK, here we go: UNC PATHS --------- To implement UNC paths: let's assume on windows you have X: mapped to //server1/project. This means that to access X:/foo you could just as easily access it with the UNC path //server1/project/foo. In fact, that's better (see links below) So to make that work on unix, you'd setup your mounts as /server1/project, so that the following would work: ls -la //server1/project ..unix will ignore the extra leading slash, and treat it as one. Have a look at these two links for details: Under Windows, why are UNC paths better than drive letters? http://www.seriss.com/rush-current/rush/rush-td-faq.html#TDFAQ-UNC How do I make UNC paths work the same on Windows and Unix? http://www.seriss.com/rush-current/rush/rush-td-faq.html#TDFAQ-UNC2 Also: the .common.pl script (that is in the same directory as all your submit scripts) has a useful function called FixPath() that can help enforce proper filename conventions across the platforms. So if a user happens to use X:/foo/bar.nk for a nuke pathname, when they submit their job, the FixPath() function can be used to convert that path into the UNC equivalent //server1/project/foo/bar.nk. Have a look at the function, and if you have questions, let me know. In general, you can use perl regex to make the conversions, eg: $path =~ s%^x:%//server1/project%i; # x:/foo -> //server1/project/foo Similarly, paths like "/mnt/server1" could be converted into "//server1/project", eg: $path =~ s%^/mnt/server1%//server1/project%i; # /mnt/server1/foo -> //server1/project/foo WINDOWS SYMBOLIC LINKS With the advent of Windows Vista and Windows 7, there's a new option where you can make windows machines match unix using windows symbolic links. So let's say you want to keep your unix pathnames /mnt/server1, and want windows to be able to resolve that as //server1/project. To do this, you can use the DOS "mklink" command (Vista and Win7 *only*!) C:\> mkdir \mnt C:\> mklink /d \mnt\project1 \\server1\project With that, you should be able to do: C:\> dir \mnt\project1 ..and be able to see the contents of \\server1\project..! For more info on windows symbolic links, see 'mklink /?', and these Rush newsgroup articles where I explored the command: http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-viewthread+1553+1554+1555+1556+1557+1566 IMBALANCED PATHNAMES ACROSS PLATFORMS If you /really/ need to have pathnames different across platforms, you can do it (but I think you'll run into all kinds of trouble with your other software I think). If you are running Rush 102.42a9 (and up), then in the rush.conf file you can use the currently undocumented command 'logdir_convert' to tell rush to convert log directory pathnames. So for instance if you want windows machines to convert logdir pathnames from "/mnt/server1" to "x:/", you can use: os=windows logdir_convert "/mnt/server1" "x:/" os=linux logdir_convert "x:/" "/mnt/server1" With a combo of this, and in the FixPath() function doing a similar platform-specific reflexive conversion, you can get rush to flip the pathnames back and forth. eg: if ( -d "x:/" ) { $path =~ s%^/mnt/server1/%x:/%i; } # WINDOWS? /mnt/server1 -> x:/ if ( -d "/mnt" ) { $path =~ s%^x/:/%/mnt/server1/%i; } # UNIX? x:/ -> /mnt/server1 Thing is, any scene files you have with hardcoded pathnames in them rush won't see or be able to fix.. so you'll have to look to similar functions in your software for this kind of conversion. Maya has the 'dirmap' mel command which is the equivalent of the above conversions.. more on that here: Using 'dirmap' in Maya: http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-view+1312+1312 Also, I believe nuke has something for this as well.. see this thread: http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-viewthread+1943+1946+1947+1948 IN CLOSING.. I /really/ think you'll have better overall luck by standardizing on one pathname style that works across all platforms; either making everything look like windows UNC paths, or if you have Visa or Win7, then you have the option of making everything look like unix paths by using windows symbolic links. Then you don't have to go around hacking maya and nuke, and all your other software to try to do pathname conversions. |