only preserve libraries if no copy exists in the libary search path (bug #215242)
authorMarius Mauch <genone@gentoo.org>
Sun, 6 Apr 2008 17:12:41 +0000 (17:12 -0000)
committerMarius Mauch <genone@gentoo.org>
Sun, 6 Apr 2008 17:12:41 +0000 (17:12 -0000)
svn path=/main/trunk/; revision=9728

pym/portage/dbapi/vartree.py

index 5a085f40571247c30f07523127f38838a49e1504..2f8ced89fe04be1870bacb50ad53833f109f4364 100644 (file)
@@ -16,7 +16,7 @@ from portage.output import bold, red, green
 from portage.update import fixdbentries
 from portage.util import apply_secpass_permissions, ConfigProtect, ensure_dirs, \
        writemsg, writemsg_stdout, write_atomic, atomic_ofstream, writedict, \
-       grabfile, grabdict, normalize_path, new_protect_filename
+       grabfile, grabdict, normalize_path, new_protect_filename, getlibpaths
 from portage.versions import pkgsplit, catpkgsplit, catsplit, best, pkgcmp
 
 from portage import listdir, dep_expand, flatten, key_expand, \
@@ -1602,7 +1602,10 @@ class dblink(object):
 
                for lib in list(preserve_libs):
                        if not has_external_consumers(lib, old_contents, preserve_libs):
-                               preserve_libs.remove(lib)                                               
+                               preserve_libs.remove(lib)
+                       for path in getlibpaths():
+                               if os.path.exists(os.path.join(path, lib)):
+                                       preserve_libs.remove(lib)
                        
                # get the real paths for the libs
                preserve_paths = [x for x in old_contents if os.path.basename(x) in preserve_libs]