From: Marius Mauch Date: Tue, 4 Dec 2007 09:28:00 +0000 (-0000) Subject: make sure we only remove files that were previously preserved X-Git-Tag: v2.2_pre1~230 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ee72bf14ea642df6077db3a1fa78c449909a12e6;p=portage.git make sure we only remove files that were previously preserved svn path=/main/trunk/; revision=8837 --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 8162b9d11..ee71bb855 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1159,7 +1159,11 @@ class dblink(object): break else: unlink_list.append(f) - f = os.readlink(f) + # only follow symlinks if the target is also a preserved lib object + if os.readlink(f) in plib_dict[cpv]: + f = os.readlink(f) + else: + break if not os.path.islink(f) and not os.path.basename(f) in self.vartree.dbapi.libmap.get(): unlink_list.append(f) for obj in unlink_list: @@ -1168,8 +1172,8 @@ class dblink(object): obj_type = "sym" else: obj_type = "obj" - writemsg_stdout("<<< !needed %s %s\n" % (obj_type, obj)) os.unlink(obj) + writemsg_stdout("<<< !needed %s %s\n" % (obj_type, obj)) except OSError, e: if e.errno == errno.ENOENT: pass