When the user has given --depclean a list of atoms to clean, pull all
authorZac Medico <zmedico@gentoo.org>
Fri, 4 Apr 2008 04:52:21 +0000 (04:52 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 4 Apr 2008 04:52:21 +0000 (04:52 -0000)
installed packages into the graph (not just those traversable from system
or world) to ensure that packages can not be uninstalled unless nothing
requires them. (trunk r9698:9700)

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

bin/emerge

index 6d698e744aa953dbe84266718c4635b65da65e1b..d8247d0a3407608aff2be21d74add9e2e4733a67 100755 (executable)
@@ -6096,12 +6096,18 @@ def action_depclean(settings, trees, ldpath_mtimes,
 
        remaining_atoms = []
        if action == "depclean":
-               for atom in worldlist:
-                       if vardb.match(atom):
-                               remaining_atoms.append((atom, 'world', runtime))
                for atom in syslist:
                        if vardb.match(atom):
                                remaining_atoms.append((atom, 'system', runtime))
+               if myfiles:
+                       # Pull in everything that's installed since we don't want
+                       # to clean any package if something depends on it.
+                       remaining_atoms.extend(
+                               ("="+cpv, 'world', runtime) for cpv in vardb.cpv_all())
+               else:
+                       for atom in worldlist:
+                               if vardb.match(atom):
+                                       remaining_atoms.append((atom, 'world', runtime))
        elif action == "prune":
                for atom in syslist:
                        if vardb.match(atom):