build: added ENFORCE_GROUP_ORDERING()
authorAndrew Tridgell <tridge@samba.org>
Mon, 8 Mar 2010 09:34:15 +0000 (20:34 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:26:46 +0000 (20:26 +1000)
buildtools/wafsamba/samba_utils.py

index 069d578847d9d3083a51a68c749b74e368854c4f..40a7536b4ca919354472204aca70d1ec1f6109cd 100644 (file)
@@ -241,3 +241,31 @@ def to_list(str):
 def SUBST_ENV_VAR(conf, varname):
     '''Substitute an environment variable for any embedded variables'''
     return Utils.subst_vars(conf.env[varname], conf.env)
+
+
+def ENFORCE_GROUP_ORDERING(bld):
+    '''enforce group ordering for the project. This
+       makes the group ordering apply even when you specify
+       a target with --target'''
+    if Options.options.compile_targets:
+        @feature('*')
+        def force_previous_groups(self):
+            my_id = id(self)
+
+            bld = self.bld
+            stop = None
+            for g in bld.task_manager.groups:
+                for t in g.tasks_gen:
+                    if id(t) == my_id:
+                        stop = id(g)
+                        break
+                if stop is None:
+                    return
+
+                for g in bld.task_manager.groups:
+                    if id(g) == stop:
+                        break
+                    for t in g.tasks_gen:
+                        t.post()
+Build.BuildContext.ENFORCE_GROUP_ORDERING = ENFORCE_GROUP_ORDERING
+