From 97b3e8be9b5b63c4476c6a76c3aecb8bf9e20725 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 24 Oct 2008 20:28:57 +0000 Subject: Fix preserve-libs code inside dblink.unmerge() so that it will join paths correctly when ROOT != /. svn path=/main/trunk/; revision=11724 --- pym/portage/dbapi/vartree.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'pym') diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index fb5b28e33..141585fe0 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1935,6 +1935,8 @@ class dblink(object): # their real target before the object is found not to be # in the reverse NEEDED map def symlink_compare(x, y): + x = os.path.join(self.myroot, x.lstrip(os.path.sep)) + y = os.path.join(self.myroot, y.lstrip(os.path.sep)) if os.path.islink(x): if os.path.islink(y): return 0 @@ -1947,20 +1949,23 @@ class dblink(object): plib_dict[cpv].sort(symlink_compare) for f in plib_dict[cpv]: - if not os.path.exists(f): + f_abs = os.path.join(self.myroot, f.lstrip(os.path.sep)) + if not os.path.exists(f_abs): continue unlink_list = [] consumers = self.vartree.dbapi.linkmap.findConsumers(f) if not consumers: - unlink_list.append(f) + unlink_list.append(f_abs) else: keep=False for c in consumers: + c = os.path.join(self.myroot, + c.lstrip(os.path.sep)) if c not in self.getcontents(): keep=True break if not keep: - unlink_list.append(f) + unlink_list.append(f_abs) for obj in unlink_list: try: if os.path.islink(obj): -- cgit v1.2.3-1-g7c22