From 0d79d130c27af4ba9676c9297639e064d18d9528 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 31 Aug 2011 23:45:01 -0700 Subject: unmerge: never unmerge outside of EROOT --- pym/portage/dbapi/vartree.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 1a38d421a..0c0ed6a64 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1980,10 +1980,11 @@ class dblink(object): unmerge_desc["!mtime"] = _("!mtime") unmerge_desc["!obj"] = _("!obj") unmerge_desc["!sym"] = _("!sym") + unmerge_desc["!prefix"] = _("!prefix") real_root = self.settings['ROOT'] real_root_len = len(real_root) - 1 - eroot_split_len = len(self.settings["EROOT"].split(os.sep)) - 1 + eroot = self.settings["EROOT"] # These files are generated by emerge, so we need to remove # them when they are the only thing left in a directory. @@ -2023,6 +2024,12 @@ class dblink(object): file_data = pkgfiles[objkey] file_type = file_data[0] + + # don't try to unmerge the prefix offset itself + if len(obj) <= len(eroot) or not obj.startswith(eroot): + show_unmerge("---", unmerge_desc["!prefix"], file_type, obj) + continue + statobj = None try: statobj = os.stat(obj) -- cgit v1.2.3-1-g7c22