From 3f0c9f2c954c23422a14d17a13684361c5128582 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 4 Apr 2008 04:52:21 +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. (trunk r9698:9700) svn path=/main/branches/2.1.2/; revision=9701 --- bin/emerge | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'bin') diff --git a/bin/emerge b/bin/emerge index 6d698e744..d8247d0a3 100755 --- a/bin/emerge +++ b/bin/emerge @@ -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): -- cgit v1.2.3-1-g7c22