From: Zac Medico Date: Fri, 4 Apr 2008 04:52:21 +0000 (-0000) Subject: When the user has given --depclean a list of atoms to clean, pull all X-Git-Tag: v2.1.5~251 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3f0c9f2c954c23422a14d17a13684361c5128582;p=portage.git 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 --- 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):