All-
I followed up on this on the Rush list and Greg Ercolano posted a very thorough
reply. I thought some of you might be interested in what he had to say. Sounds
like the best all around answer is a /usr/bin script which is similar to the
method Johannes was suggesting. Rush specific stuff at the beginning.
> [posted to rush.general]
>
> On 12/19/11 22:58, Gary Jaeger wrote:
>> So we moved our plug-ins, gizmos scripts etc to a central server.
>> We did this by setting our NUKE_PATH with an environment.plist in
>> ~.MacOSX/environment.plist
>
> Rush isn't going to look at that file, because only
> MacOS can parse it.
>
> For the rush perl render scripts to see the setting,
> add this variable setting to the top of the submit-nuke.pl file
> in with the 'MAC' settings, eg:
>
> elsif ( $G::ismac )
> {
> ### MAC
> $ENV{PATH} =
> "/Applications/Nuke6.3v5/Nuke6.3v5.app:$ENV{PATH}"; # CHANGE THIS
> $ENV{NUKECMD} = "Nuke6.3v5"; # CHANGE THIS
> $ENV{NUKE_PATH} = "/Volumes/nuke_tools"; # ADD THIS
> $ENV{OFX_PLUGIN_PATH} = "/Volumes/nuke_tools/OFX"; # ADD THIS
> $ENV{RLM_LICENSE} = "5053\@corefileserver"; # ADD THIS
> }
>
> This will ensure that when the submit-nuke script runs,
> it runs THAT version of nuke with THAT plugin path, etc.
> and will for sure do what you want at render time,
> .plist and /etc/profile and ~/.bashrc files be damned. ;)
>
>> I also noticed that I got the same errors when I tried to ssh
>> into a workstations and run a render.
>
> I think there's a more centralized plist file that affects
> all users, but Apple keeps moving stuff around each release
> so I can never keep track of it. more recently they started
> making these plist files *binary format* for some fool reason.
> Don't get me started on how Apple has not only ignored the
> wisdom of Unix philosophy: "use text files for everything",
> "avoid binary files and databases", /etc/passwd, /etc/fstab..
> but has often walked in the completely opposite direction:
> use binary formatted xml, use databases and daemons to replace
> /etc/passwd and /etc/fstab, etc.. (*shakes head*)
>
> I think in the newer versions of OSX this might now be part
> of the launchctl/launchd stuff now, not sure.
>
>> On the nuke list it was suggested I try setting a .bash_profile
>> instead of the .plist method. While this worked for the terminal
>> (and presumably ssh though I forgot to try it) it still doesn't
>> work for rush,
>
> The submit-nuke script doesn't read .bashrc files
> because it's a perl script.
>
> The right place to make such changes for Rush is in the
> submit-nuke script, so that (for instance) different
> submit-nuke scripts can run different versions of nuke,
> and/or different renders without getting crosstalk
> between all the environment/PATH configs.
>
> You could try having the perl script parse the plist
> file, but that's kinda a nutty route to go.
>
> Perhaps what you want to do to solve the issue for 'everyone'
> is to make a nuke 'wrapper' script called /usr/bin/nuke
> that sets the environment you want before running nuke.
>
> Then you can have rush renders AND users just invoke 'nuke'.
> A *simple* example:
>
> #!/bin/sh
>
> # Force these environment settings
> export PATH="/Applications/Nuke6.3v5/Nuke6.3v5.app:$PATH"
> export NUKE_PATH="/Volumes/nuke_tools"
> export OFX_PLUGIN_PATH="/Volumes/nuke_tools/OFX"
> export RLM_LICENSE="5053@corefileserver"
>
> # Run nuke with args that were passed to this script
> exec Nuke6.3v5 "$@" # <-- quotes important around $@
>
> Then you can have both users and rush run 'nuke' instead,
> so that everyone gets the same version of nuke, with plugins
> and license variables set to what's needed.
>
> You might want to add logic to that script to check to see
> if these variables are already set, and optionally include
> those settings in addition to your own, so that user's scripts
> can add other plugin dirs besides the ones you supply.
>
> Or, have the above script simply run a script on your server
> so that you can centrally manage the variable settings, and not
> have to update all /usr/bin/nuke scripts whenever you want to
> make a small change to the script. eg:
>
> #!/bin/sh
> exec /Volumes/somewhere/nuke "$@" # <-- quotes important around $@
>
> Whatever you do, DON'T do the seemingly obvious thing
> by making /usr/bin/nuke a symlink to the script on your NFS
> server. Symlinks to NFS servers in /usr/bin will cause
> *all* logins to hang if the NFS server is acting up,
> so you won't be able to login as root to fix things.
> (whenever the root login walks the /usr/bin dir, it'll
> hit that NFS link and freeze up)
>
>> and if I want to also be able to launch nuke by double clicking
>> the icon (which I do) it would mean keeping both .bash_profile
>> AND environment.plist files. This seems wrong to me.
>
> I can't advise, because IIRC the default profile for bash
> in /etc/profile overwrites the PATH with a static string,
> blowing away anything MacOS/plist files might have provided, eg:
>
> $ more /etc/profile
>
> # System-wide .profile for sh(1)
>
> PATH="/bin:/sbin:/usr/bin:/usr/sbin" <-- BLOWS AWAY PREVIOUS PATH
> SETTINGS (!)
> export PATH
> [..]
>
> It's because of that PATH line in /etc/profile that any
> PATH settings in a .plist will be overridden whenever
> a sh(1) login is started.
>
> You could try jamming your settings in there, but then
> you'll affect all users (including root), and again,
> putting anything into root's path that includes NFS
> or remote drives is a Bad Idea.
>
>> Could this be something about users? i.e. rush running as something other
>> than the current user?
>
> There's many things at play here; ssh+sh is probably not
> looking at .plist files all all, whereas a GUI environment
> with terminal+sh(1) will (with the above exception for PATH)
>
> Anyway, it gets messy fast.
>
> If you want to reign in control over all this, you might
> try the above 'nuke wrapper' technique, where you jam
> a script in /usr/bin called 'nuke' that forces the variables
> the way you want, and have everything (nuke, ssh, terminal, icons)
> run that.
>
> To get an icon to run a bash script involves making a .app
> wrapper for it, fodder for a whole other message thread.
>
>> Anyway, so I'm asking here. How do Mac facilities keep a central
>> install of all their 3rd party tools and init.py etc for both
>> workstations and renderfarms?
>
> I'll let folks respond, but it's tricky if you try to use
> global plist and bashrc files because these aren't always
> going to be in effect; perl scripts don't read bashrc files,
> bash/ssh doesn't read plists, and lord knows when these
> plist files get sourced and by what.
>
> My advice is to change as little global stuff as possible,
> esp when it comes to centrally managed programs, so that
> you don't get the whole OS addicted to your NFS servers.
>
> --
> Greg Ercolano, [email protected]
> Seriss Corporation
> Rush Render Queue, http://seriss.com/rush/
> Tel: +1 626-576-0010 ext.23
> Fax: +1 626-576-0020
> Cel: +1 310-266-8906
On Dec 19, 2011, at 12:32 AM, Johannes Hezer wrote:
> I forgot to mention that you need to chmod +x yourfilename.command to make it
> executable...
Gary Jaeger // Core Studio
249 Princeton Avenue
Half Moon Bay, CA 94019
650 728 7060
http://corestudio.com
_______________________________________________
Nuke-users mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users