summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-03-30 06:18:15 +0000
committerZac Medico <zmedico@gentoo.org>2008-03-30 06:18:15 +0000
commit42a51c2c73649cf2c120ea57549cdf290ff92bd0 (patch)
treed111e1f324269c33eff10deaad15eca478d523d8
parent8622eb84d84a666d3a541f0b1fcd39f7b0b2da24 (diff)
downloadportage-42a51c2c73649cf2c120ea57549cdf290ff92bd0.tar.gz
portage-42a51c2c73649cf2c120ea57549cdf290ff92bd0.tar.bz2
portage-42a51c2c73649cf2c120ea57549cdf290ff92bd0.zip
Move the AUTOCLEAN code into dblink.treewalk since it's already partially
supported there anyway (for replacement of identical cpv). This has the benefit of guaranteeing that the order of installation and removal phases is always the same. svn path=/main/trunk/; revision=9621
-rw-r--r--pym/_emerge/__init__.py14
-rw-r--r--pym/portage/dbapi/vartree.py12
2 files changed, 8 insertions, 18 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 63ca57dc1..91ec5dd0f 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -4792,20 +4792,6 @@ class MergeTask(object):
if "--pretend" not in self.myopts and \
"--fetchonly" not in self.myopts and \
"--fetch-all-uri" not in self.myopts:
- # Clean the old package that we have merged over top of it.
- if pkgsettings.get("AUTOCLEAN", "yes") == "yes":
- xsplit=portage.pkgsplit(x[2])
- emergelog(xterm_titles, " >>> AUTOCLEAN: " + xsplit[0])
- retval = unmerge(self.trees[myroot]["root_config"],
- self.myopts,
- "clean", [xsplit[0]], ldpath_mtimes, autoclean=1)
- if not retval:
- emergelog(xterm_titles,
- " --- AUTOCLEAN: Nothing unmerged.")
- else:
- portage.writemsg_stdout(colorize("WARN", "WARNING:")
- + " AUTOCLEAN is disabled. This can cause serious"
- + " problems due to overlapping packages.\n")
# Figure out if we need a restart.
mysplit=portage.pkgsplit(x[2])
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index 3a692680d..7970c0a4b 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -2126,11 +2126,11 @@ class dblink(object):
"portage" == pkgsplit(self.pkg)[0]:
reinstall_self = True
+ autoclean = self.settings.get("AUTOCLEAN", "yes") == "yes"
for dblnk in list(others_in_slot):
if dblnk is self:
continue
- if dblnk.mycpv != self.mycpv and \
- not reinstall_self:
+ if not (autoclean or dblnk.mycpv == self.mycpv or reinstall_self):
continue
writemsg_stdout(">>> Safely unmerging already-installed instance...\n")
others_in_slot.remove(dblnk) # dblnk will unmerge itself now
@@ -2139,8 +2139,12 @@ class dblink(object):
# TODO: Check status and abort if necessary.
dblnk.delete()
writemsg_stdout(">>> Original instance of package unmerged safely.\n")
- if not reinstall_self:
- break
+
+ if len(others_in_slot) > 1:
+ from portage.output import colorize
+ writemsg_stdout(colorize("WARN", "WARNING:")
+ + " AUTOCLEAN is disabled. This can cause serious"
+ + " problems due to overlapping packages.\n")
# We hold both directory locks.
self.dbdir = self.dbpkgdir