Move the AUTOCLEAN code into dblink.treewalk since it's already partially
authorZac Medico <zmedico@gentoo.org>
Sun, 30 Mar 2008 06:33:22 +0000 (06:33 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 30 Mar 2008 06:33:22 +0000 (06:33 -0000)
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. (trunk r9621)

svn path=/main/branches/2.1.2/; revision=9622

bin/emerge
pym/portage.py

index 15196cb72b44dfac71a82881b4a2edc902dc6c30..f62ff44c1e294bdaee3efd1ebd76bb170982c6e8 100755 (executable)
@@ -4450,19 +4450,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(pkgsettings, self.myopts, vartree,
-                                                       "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])
index 7db532787d780231b3d1fa1bc1cfbe10ca0080d0..5844bef4b8f0dbb1642ebe48898f2b448242d972 100644 (file)
@@ -9219,11 +9219,11 @@ class dblink:
                        "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
@@ -9232,8 +9232,11 @@ class dblink:
                        # 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:
+                       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