waf: prevent the global deps list creating depenency loops
authorAndrew Tridgell <tridge@samba.org>
Thu, 21 Oct 2010 02:52:47 +0000 (13:52 +1100)
committerAndrew Tridgell <tridge@samba.org>
Thu, 21 Oct 2010 08:03:25 +0000 (19:03 +1100)
this prevents a loop between SOCKET_WRAPPER and replace in the s3 waf
build

buildtools/wafsamba/samba_deps.py

index 59bb764fb7e121da290de1ef0a423ffdf7092263..5f9f294e56d2a99c1449d44b12bf9c5b62b72ddf 100644 (file)
@@ -414,14 +414,22 @@ def build_direct_deps(bld, tgt_list):
 
     targets  = LOCAL_CACHE(bld, 'TARGET_TYPE')
     syslib_deps  = LOCAL_CACHE(bld, 'SYSLIB_DEPS')
+
     global_deps = bld.env.GLOBAL_DEPENDENCIES
+    global_deps_exclude = set()
+    for dep in global_deps:
+        t = bld.name_to_obj(dep, bld.env)
+        for d in t.samba_deps:
+            # prevent loops from the global dependencies list
+            global_deps_exclude.add(d)
+            global_deps_exclude.add(d + '.objlist')
 
     for t in tgt_list:
         t.direct_objects = set()
         t.direct_libs = set()
         t.direct_syslibs = set()
         deps = t.samba_deps_extended[:]
-        if getattr(t, 'samba_use_global_deps', False):
+        if getattr(t, 'samba_use_global_deps', False) and not t.sname in global_deps_exclude:
             deps.extend(global_deps)
         for d in deps:
             d = EXPAND_ALIAS(bld, d)