From 5c5fc5dde45618b9ec9f41fbb4aa090b161ebf35 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 19 Oct 2011 16:34:32 +1100 Subject: [PATCH] build: added deletion of stale .so and .o files when we change our build rules to move a C file, we need to remove the old ('stale') .so and .o files from the build directory, or they may be used as part of the new build, which means that old code will be linked in. This expands the list of stale files that we remove on rule changes to include .so and .o files Pair-Programmed-With: Amitay Isaacs Autobuild-User: Andrew Tridgell Autobuild-Date: Wed Oct 19 09:02:23 CEST 2011 on sn-devel-104 --- buildtools/wafsamba/stale_files.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/buildtools/wafsamba/stale_files.py b/buildtools/wafsamba/stale_files.py index 2b94f0823e6..1ee1ff9d447 100644 --- a/buildtools/wafsamba/stale_files.py +++ b/buildtools/wafsamba/stale_files.py @@ -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