From 7c3ca3064aac2803368e81f576141968e7064bde Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 4 Apr 2008 04:48:49 +0000 Subject: When the user has given --depclean a list of atoms to clean, pull all 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 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'pym') diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 531a08d0f..ead6766ab 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -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): -- cgit v1.2.3-1-g7c22