When the user has given --depclean a list of atoms to clean, pull all
authorZac Medico <zmedico@gentoo.org>
Fri, 4 Apr 2008 04:48:49 +0000 (04:48 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 4 Apr 2008 04:48:49 +0000 (04:48 -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.

svn path=/main/trunk/; revision=9699

pym/_emerge/__init__.py

index 531a08d0f2b6610ad862417601229a6a0ee87860..ead6766abc96f389013fcb8e88692f05ef909a64 100644 (file)
@@ -6548,12 +6548,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(
+                               ("="+atom, '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):