From: Greg Ercolano <erco@(email surpressed)>
Subject: [Q+A] Managing multiple Nuke versions, and how do submit scripts
   Date: Fri, 05 Aug 2011 11:42:44 -0400
Msg# 2115
View Complete Thread (1 article) | All Threads
Last Next
> Is there a way to have the rush submit scripts run different
> versions of Nuke?

	I would suggest instead making separate copies of the
	submit-nuke script (eg. submit-nuke-63v2, submit-nuke-62v1, etc),
	and modify the env variable settings at the top of each
	to run that particular version of nuke.

	This way the user can control which version of nuke is used
	by running the appropriate submit script.

> We use different versions of Nuke for different productions,
> but all running on the farm concurrently. Is there a way to
> have it run the version of Nuke the user is using?

	If you've hot wired nuke to have a 'Rush' pulldown menu
	in it for submitting jobs, eg:

	http://seriss.com/cgi-bin/rush/newsgroup-threaded.cgi?-view+1973+1971+1972+1973+1974+1991+1992+1993

	..then you can include logic in that code to determine
	the current nuke version, and to then invoke the correct
	submit-nuke-xxx script (described above).

> I was looking at the submit-nuke example program, and am curious
> how Rush identifies the job being submitted is a 'Maya' job,
> and not a Nuke job, or some other renderer. Does it check
> the extensions for .ma and .nk to determine this?

	The submit-maya script submits itself to run on the farm,
	so it's constructed to run maya.

	'Rush' itself (the C++ code) does not know about any of
	the renderers; it just runs commands and manages the queue.

	The submit scripts do all the work of running the different
	renderers. These scripts submit themselves (ie. use recursion)
	to do the work, and therefore are self contained to handle
	all the logic for both submitting and rendering jobs.

	So no, it does not look at the extension, but rather,
	it depends on which submit script the user invoked
	that determines what type of job is being rendered,
	and what renderer to use.

	Here's some info on how the mechanics of these submit
	scripts work.

	The submit scripts for maya (both perl and python) work
	the same way, and have several sections (functions) that
	do different types of work:

def MAIN_Input():	-- this brings up the submit form
def MAIN_Submit():	-- this handles when the user hits 'Submit' in the form
def MAIN_Render():	-- this handles rendering frames on all the machines

	When you run the submit script to bring up the interface,
	it runs MAIN_Input(). This constructs a form, and sets up
	the 'Submit' button to run itself with "-submit" as a command
	line option.

	When the user hits 'Submit', it invokes the script again
	with the -submit flag which invokes the MAIN_Submit() code.
	This parses the form and tells rush to submit the job,
	using itself as the command to run on all the machines,
	but passing a "-render" flag (instead of -submit).

	Whenever a processor becomes available on the remotes, rush
	invokes the script with the -render flag which runs the
	MAIN_Render() code, which in the case of submit-maya
	constructs a maya command to render the scene, and uses the
	RUSH_FRAME environment variable (passed from rush) to determine
	which frame(s) to render.

	The script has a few other routines, like MAIN_ImgCommand()
	which is invoked whenever someone middle-clicks on a frame
	in irush, which determines how to bring up an image viewer
	to show the rendered image. There's also MAIN_Defaults()
	which is invoked when the user hits the 'Defaults' button
	in the submit form to clear out the form.

	Rush itself knows nothing about the submit scripts. The
	scripts use rush the way a csh script might use rsh(1)
	to run itself on some other machine. 'Rush' is just a
	glorified rsh(1) with priorities and the concept of
	frames, error logging, and some other goodies tied in.

	This is why you can write your own submit scripts that
	are very simple and use other scripting languages. Rush
	(the core utility) has no ties to any specific scripting
	language; you can use csh, python, ruby, etc. For examples
	of simple submit scripts in other scripting languages, see:
	http://www.seriss.com/rush-current/rush/rush-submit.html


Last Next