don't try to copy manually removed libraries (bug #208946)
authorMarius Mauch <genone@gentoo.org>
Tue, 5 Feb 2008 21:29:15 +0000 (21:29 -0000)
committerMarius Mauch <genone@gentoo.org>
Tue, 5 Feb 2008 21:29:15 +0000 (21:29 -0000)
svn path=/main/trunk/; revision=9277

pym/portage/dbapi/vartree.py
pym/portage/util.py

index 3ce61424a5c9ac23a1097e8b526fca0e3c5bb0ff..3b11823b635a39069646279575c844ca04723081 100644 (file)
@@ -1594,11 +1594,16 @@ class dblink(object):
                # get the real paths for the libs
                preserve_paths = [x for x in old_contents if os.path.basename(x) in preserve_libs]
                del old_contents, old_libs, mylibs, preserve_libs
-                       
+
                # inject files that should be preserved into our image dir
                import shutil
+               missing_paths = []
                for x in preserve_paths:
                        print "injecting %s into %s" % (x, srcroot)
+                       if not os.path.exists(os.path.join(destroot, x.lstrip(os.sep))):
+                               print "%s does not exist so can't be preserved"
+                               missing_paths.append(x)
+                               continue
                        mydir = os.path.join(srcroot, os.path.dirname(x).lstrip(os.sep))
                        if not os.path.exists(mydir):
                                os.makedirs(mydir)
@@ -1616,6 +1621,10 @@ class dblink(object):
                                shutil.copy2(os.path.join(destroot, x.lstrip(os.sep)),
                                        os.path.join(srcroot, x.lstrip(os.sep)))
 
+               preserve_paths = [x for x in preserve_paths if x not in missing_paths]
+
+               del missing_paths
+
                # keep track of the libs we preserved
                self.vartree.dbapi.plib_registry.register(self.mycpv, self.settings["SLOT"], counter, preserve_paths)
 
index 39abcd81ec0226ab957ea2ca57903cd17bf18c00..deda2e2c30b8c7c75956cc2ba3b591ef342f1339 100644 (file)
@@ -1058,3 +1058,17 @@ def new_protect_filename(mydest, newmd5=None):
                        os.path.join(real_dirname, last_pfile)) == newmd5:
                        return old_pfile
        return new_pfile
+
+def getlibpaths():
+       """ Return a list of paths that are used for library lookups """
+
+       # the following is based on the information from ld.so(8)
+       rval = os.environ.get("LD_LIBRARY_PATH", "").split(":")
+       rval.extend(grabfile("/etc/ld.so.conf"))
+       rval.append("/usr/lib")
+       rval.append("/lib")
+
+       rval = [normalize_path(x) for x in rval if x != ""]
+       
+       return rval
+