@@ -78,7 +78,7 @@ def getRequestPackages(packagesDelimiter="=="):
7878 return list (reqPackages )
7979
8080
81- def rezWrapCommand (cmd , useCurrentContext = False , useRequestedContext = True , otherRezPkg : list [str ] = None ):
81+ def rezWrapCommand (cmd , useCurrentContext = False , useRequestedContext = True , otherRezPkg : list [str ] = None , additionalEnv : dict = None ):
8282 """ Wrap command to be runned using rez.
8383 :param cmd: command to run
8484 :type cmd: bool
@@ -108,7 +108,11 @@ def rezWrapCommand(cmd, useCurrentContext=False, useRequestedContext=True, other
108108 rezBin = os .path .join (os .environ ["REZ_PACKAGES_ROOT" ], "bin/rez" )
109109 elif shutil .which ("rez" ):
110110 rezBin = shutil .which ("rez" )
111- return f"{ rezBin } env { packagesStr } -- { cmd } "
111+ addEnvCmd = ""
112+ if additionalEnv :
113+ envVars = " " .join ([f'{ k } ="{ v } "' for k , v in additionalEnv .items ()])
114+ addEnvCmd = f"env { envVars } "
115+ return f"{ rezBin } env { packagesStr } -- { addEnvCmd } { cmd } "
112116 return cmd
113117
114118
@@ -236,33 +240,44 @@ def getChunks(chunkParams) -> list[Chunk]:
236240 it = [Chunk (i , item [0 ], item [- 1 ]) for i , item in enumerate (slices ) if i not in ignoreIterations ]
237241 return it
238242
239- @staticmethod
240- def getExpandWrappedCmd (cmdArgs , rezPackages ):
243+ def getExpandWrappedCmd (self , cmdArgs , rezPackages ):
241244 # Wrap with create_chunks
242245 cmdBin = wrapMeshroomBin ("meshroom_createChunks" )
243246 cmd = f"{ cmdBin } --submitter LocalFarm { cmdArgs } "
244247 # Wrap with rez
245- cmd = rezWrapCommand (cmd , otherRezPkg = rezPackages )
248+ cmd = rezWrapCommand (cmd , otherRezPkg = rezPackages , additionalEnv = self . jobEnv )
246249 return cmd
247250
248251 def createFarmTask (self , meshroomFile : str , orderedTask : OrderedTask , createdTasks : Dict [OrderedTask , Task ]) -> Task :
249252 metadata = dict ()
250253 if orderedTask .node :
251- metadata = {"nodeUid" : orderedTask .node ._uid , "iteration" : orderedTask . iteration }
254+ metadata = {"nodeUid" : orderedTask .node ._uid }
252255
256+ if orderedTask .iteration >= 0 :
257+ metadata ["iteration" ] = orderedTask .iteration
258+ elif orderedTask .taskType == OrderedTaskType .PREPROCESS :
259+ metadata ["iteration" ] = "preprocess"
260+ elif orderedTask .taskType == OrderedTaskType .POSTPROCESS :
261+ metadata ["iteration" ] = "postprocess"
262+
253263 if orderedTask .taskType == OrderedTaskType .PLACEHOLDER :
254264 return Task (name = orderedTask .node .name if orderedTask .node else "" , command = "" , metadata = metadata )
255265
256266 cmdArgs = f"--node { orderedTask .node .name } \" { meshroomFile } \" --extern"
257- metadata = {"nodeUid" : orderedTask .node ._uid , "iteration" : orderedTask .iteration }
258267
259268 if orderedTask .taskType == OrderedTaskType .EXPANDING :
260269 cmd = self .getExpandWrappedCmd (cmdArgs , self .reqPackages )
261270 task = Task (name = orderedTask .node .name , command = cmd , metadata = metadata , env = self .jobEnv )
262271 else :
263272 cmdBin = wrapMeshroomBin ("meshroom_compute" )
264- cmd = f"{ cmdBin } { cmdArgs } --iteration { orderedTask .iteration } "
265- cmd = rezWrapCommand (cmd , otherRezPkg = self .reqPackages )
273+ cmd = f"{ cmdBin } { cmdArgs } "
274+ if orderedTask .taskType == OrderedTaskType .PREPROCESS :
275+ cmd += f" --preprocess"
276+ elif orderedTask .taskType == OrderedTaskType .POSTPROCESS :
277+ cmd += f" --postprocess"
278+ elif orderedTask .taskType == OrderedTaskType .CHUNK :
279+ cmd += f" --iteration { orderedTask .iteration } "
280+ cmd = rezWrapCommand (cmd , otherRezPkg = self .reqPackages , additionalEnv = self .jobEnv )
266281 task = Task (name = orderedTask .node .name , command = cmd , metadata = metadata , env = self .jobEnv )
267282
268283 return task
@@ -272,24 +287,25 @@ def createJob(self, orderedTasks, filepath, submitLabel="{projectName}") -> Loca
272287 name = submitLabel .format (projectName = projectName )
273288 # Create job
274289 job = Job (name )
275-
290+
276291 # Create tasks
277292 orderedTasks .display ()
278293 createdTasks : Dict [OrderedTask , Task ] = dict ()
279294 for taskToCreate in orderedTasks .iterOnTasks ():
280295 if taskToCreate in createdTasks .keys ():
281296 continue
282297 createdTask = self .createFarmTask (filepath , taskToCreate , createdTasks )
298+ job .addTask (createdTask )
283299 createdTasks [taskToCreate ] = createdTask
284-
300+
285301 for orderedTask , task in createdTasks .items ():
286302 print (orderedTask , "->" , task )
287-
303+
288304 for orderedTask , task in createdTasks .items ():
289305 deps = [createdTasks .get (t ) for t in orderedTask .dependencies ]
290306 for dependency in deps :
291- job .addTaskDependency (dependency , task )
292-
307+ job .addTaskDependency (task , dependency )
308+
293309 # Submit job
294310 engine = LocalFarmEngine (self .farmPath )
295311 res = job .submit (engine )
@@ -328,7 +344,7 @@ def createChunkTask(self, node, graphFile, **kwargs):
328344 metadata = {"nodeUid" : node ._uid , "iteration" : chunk .iteration }
329345 cmdBin = wrapMeshroomBin ("meshroom_compute" )
330346 cmd = f"{ cmdBin } { cmdArgs } --iteration { chunk .iteration } "
331- cmd = rezWrapCommand (cmd , otherRezPkg = self .reqPackages )
347+ cmd = rezWrapCommand (cmd , otherRezPkg = self .reqPackages , additionalEnv = self . jobEnv )
332348 print ("Additional chunk task command: " , cmd )
333349 task = Task (name = name , command = cmd , metadata = metadata , env = taskEnv )
334350 engine .create_additional_task (currentJid , currentTid , task )
0 commit comments