diff options
author | Paweł Tomulik <ptomulik@meil.pw.edu.pl> | 2015-09-20 17:55:34 (GMT) |
---|---|---|
committer | Paweł Tomulik <ptomulik@meil.pw.edu.pl> | 2015-09-20 17:55:34 (GMT) |
commit | ffcb8963212db0e83b79c9cbb584ed6ff3da837a (patch) | |
tree | 0071f376ef6153dd9f2c0c8f0bc814a0c73827a4 /src | |
parent | 26f6e3f56d9741cc91cbe034a0e43d91e0fac6a3 (diff) | |
download | SCons-ffcb8963212db0e83b79c9cbb584ed6ff3da837a.zip SCons-ffcb8963212db0e83b79c9cbb584ed6ff3da837a.tar.gz SCons-ffcb8963212db0e83b79c9cbb584ed6ff3da837a.tar.bz2 |
cyglink: fix for shlib symlink not being cleaned correctly
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/SCons/Tool/__init__.py | 8 | ||||
-rw-r--r-- | src/engine/SCons/Tool/cyglink.py | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index 96b9d98..7374687 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -596,19 +596,23 @@ def StringizeLibSymlinks(symlinks): else: return symlinks -def EmitLibSymlinks(env, symlinks, libnode): +def EmitLibSymlinks(env, symlinks, libnode, **kw): """Used by emitters to handle (shared/versioned) library symlinks""" Verbose = False # nodes involved in process... all symlinks + library nodes = list(set([ x for x,y in symlinks ] + [libnode])) + + clean_targets = kw.get('clean_targets', []) + if not SCons.Util.is_List(clean_targets): + clean_targets = [ clean_targets ] for link, linktgt in symlinks: env.SideEffect(link, linktgt) if(Verbose): print "EmitLibSymlinks: SideEffect(%r,%r)" % (link.get_path(), linktgt.get_path()) clean_list = filter(lambda x : x != linktgt, nodes) - env.Clean(linktgt, clean_list) + env.Clean(list(set([linktgt] + clean_targets)), clean_list) if(Verbose): print "EmitLibSymlinks: Clean(%r,%r)" % (linktgt.get_path(), map(lambda x : x.get_path(), clean_list)) diff --git a/src/engine/SCons/Tool/cyglink.py b/src/engine/SCons/Tool/cyglink.py index e05e85f..deeb410 100644 --- a/src/engine/SCons/Tool/cyglink.py +++ b/src/engine/SCons/Tool/cyglink.py @@ -111,7 +111,7 @@ def _lib_emitter(target, source, env, **kw): if Verbose: print "_lib_emitter: implib symlinks=%r" % SCons.Tool.StringizeLibSymlinks(symlinks) if symlinks: - SCons.Tool.EmitLibSymlinks(env, symlinks, implib_target) + SCons.Tool.EmitLibSymlinks(env, symlinks, implib_target, clean_targets = target[0]) implib_target.attributes.shliblinks = symlinks return (target, source) |