summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-08-31 23:45:01 -0700
committerZac Medico <zmedico@gentoo.org>2011-08-31 23:45:01 -0700
commit0d79d130c27af4ba9676c9297639e064d18d9528 (patch)
treec04e3be8a9071ccac387bf342a7f6f6fa02bc745 /pym
parent1df7fc5c8c1295aec7bf3c91863432ebac0caae5 (diff)
downloadportage-0d79d130c27af4ba9676c9297639e064d18d9528.tar.gz
portage-0d79d130c27af4ba9676c9297639e064d18d9528.tar.bz2
portage-0d79d130c27af4ba9676c9297639e064d18d9528.zip
unmerge: never unmerge outside of EROOT
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/dbapi/vartree.py9
1 files changed, 8 insertions, 1 deletions
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)