summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-19 06:03:38 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-19 06:03:38 +0000
commitc1a3d7b49f487ec6865d57697efd9ec750d2bc7f (patch)
tree77d0a7ac7462c84e745073995cef7e1dcb1b769f /pym
parent8dbcc983b98ecc78a4396ae98c4219ed5128d5ae (diff)
downloadportage-c1a3d7b49f487ec6865d57697efd9ec750d2bc7f.tar.gz
portage-c1a3d7b49f487ec6865d57697efd9ec750d2bc7f.tar.bz2
portage-c1a3d7b49f487ec6865d57697efd9ec750d2bc7f.zip
Fix bugs in action_deselect() and add --pretend support.
svn path=/main/trunk/; revision=13364
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/__init__.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index f8dfaee02..004d13fdf 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -14065,8 +14065,9 @@ def action_deselect(settings, trees, opts, atoms):
writemsg_level("World set does not appear to be mutable.\n",
level=logging.ERROR, noiselevel=-1)
return 1
+ pretend = '--pretend' in opts
locked = False
- if not hasattr(world_set, 'lock'):
+ if not pretend and hasattr(world_set, 'lock'):
world_set.lock()
locked = True
try:
@@ -14078,16 +14079,18 @@ def action_deselect(settings, trees, opts, atoms):
# nested set
continue
for arg_atom in atoms:
- if arg_atom.intersects(atom):
+ if arg_atom.intersects(atom) and \
+ not (arg_atom.slot and not atom.slot):
discard_atoms.add(atom)
- break
+ break
if discard_atoms:
for atom in sorted(discard_atoms):
print ">>> Removing %s from \"world\" favorites file..." % \
colorize("INFORM", str(atom))
remaining = set(world_set)
remaining.difference_update(discard_atoms)
- world_set.replace(remaining)
+ if not pretend:
+ world_set.replace(remaining)
else:
print ">>> No matching atoms found in \"world\" favorites file..."
finally:
@@ -16102,7 +16105,7 @@ def emerge_main():
if portage.secpass < 2:
# We've already allowed "--version" and "--help" above.
if "--pretend" not in myopts and myaction not in ("search","info"):
- need_superuser = not \
+ need_superuser = myaction in ('deselect',) or not \
(fetchonly or \
(buildpkgonly and secpass >= 1) or \
myaction in ("metadata", "regen") or \