build: added deletion of stale .so and .o files
[obnox/samba/samba-obnox.git] / buildtools / wafsamba / stale_files.py
index 2b94f0823e69ea487f23b453f71ba28dbda258cd..1ee1ff9d4471197234d7950207b56fbd8dd3c517 100644 (file)
@@ -58,7 +58,20 @@ def replace_refill_task_list(self):
             try:
                 if getattr(x, 'target'):
                     tlist = samba_utils.TO_LIST(getattr(x, 'target'))
+                    ttype = getattr(x, 'samba_type', None)
+                    task_list = getattr(x, 'compiled_tasks', [])
+                    if task_list:
+                        # this gets all of the .o files, including the task
+                        # ids, so foo.c maps to foo_3.o for idx=3
+                        for tsk in task_list:
+                            for output in tsk.outputs:
+                                objpath = os.path.normpath(output.abspath(bld.env))
+                                expected.append(objpath)
                     for t in tlist:
+                        if ttype in ['LIBRARY','MODULE']:
+                            t = samba_utils.apply_pattern(t, bld.env.shlib_PATTERN)
+                        if ttype == 'PYTHON':
+                            t = samba_utils.apply_pattern(t, bld.env.pyext_PATTERN)
                         p = os.path.join(x.path.abspath(bld.env), t)
                         p = os.path.normpath(p)
                         expected.append(p)
@@ -78,13 +91,14 @@ def replace_refill_task_list(self):
                     p = link
             if f in ['config.h']:
                 continue
-            if f[-2:] not in [ '.c', '.h' ]:
+            (froot, fext) = os.path.splitext(f)
+            if fext not in [ '.c', '.h', '.so', '.o' ]:
                 continue
             if f[-7:] == '.inst.h':
                 continue
             if p.find("/.conf") != -1:
                 continue
-            if not p in expected:
+            if not p in expected and os.path.exists(p):
                 Logs.warn("Removing stale file: %s" % p)
                 os.unlink(p)
     return iit