All pastes #1284419 Raw Edit

Diff

public text v1 · immutable
#1284419 ·published 2008-12-13 19:56 UTC
rendered paste body
=== modified file 'wafadmin/Build.py'--- wafadmin/Build.py	2008-12-13 05:23:28 +0000+++ wafadmin/Build.py	2008-12-13 19:56:01 +0000@@ -589,6 +589,7 @@  		debug('build: delayed operation TaskGen.flush() called') +		posted_objects = [] 		if Options.options.compile_targets: 			debug('task_gen: posting objects listed in compile_targets') @@ -610,6 +611,7 @@ 			for target_obj in target_objects.values(): 				for x in target_obj: 					x.post()+					posted_objects.append(x) 		else: 			debug('task_gen: posting objects (normal)') 			ln = self.launch_node()@@ -620,6 +622,9 @@ 			for obj in self.all_task_gen: 				if not obj.path.is_child_of(ln): continue 				obj.post()+				posted_objects.append(obj)+		self._apply_automatic_deps(posted_objects)+		  	def env_of_name(self, name): 		if not name:@@ -801,3 +806,23 @@ 		f.write(s) 		f.flush() +	def _apply_automatic_deps(self, posted_objects):+		print "apply_automatic_deps", posted_objects+		generating_tasks = {} # map out_node -> task that generates the node+		for taskgen in posted_objects:+			for task in taskgen.tasks:+				variant = task.env.variant()+				for node in task.outputs:+					assert node.id not in generating_tasks+					generating_tasks[(node.id, variant)] = task+		+		for taskgen in posted_objects:+			for task in taskgen.tasks:+				variant = task.env.variant()+				for node in task.inputs:+					try:+						preceding_task = generating_tasks[(node.id, variant)]+					except KeyError:+						continue+					print "task %r generates node %r needed by task %r" % (preceding_task, node, task)+					task.set_run_after(preceding_task)