summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-10-16 22:47:55 +0000
committerZac Medico <zmedico@gentoo.org>2009-10-16 22:47:55 +0000
commit476f06d82b3a199f651b89b83779c723a6980c2b (patch)
tree42511eea224e65e7cb1e3f6fab58b2e36c412ffb /pym/_emerge
parentacbf44ae32b2e30a472accce4bd416db45355207 (diff)
downloadportage-476f06d82b3a199f651b89b83779c723a6980c2b.tar.gz
portage-476f06d82b3a199f651b89b83779c723a6980c2b.tar.bz2
portage-476f06d82b3a199f651b89b83779c723a6980c2b.zip
Bug #266454 - Make @world an all-inclusive set once again, like it was prior
to portage-2.2_rc* releases. In addition to @system, @world now includes a @selected set which represents user-selected "world" packages and sets that saved in /var/lib/portage/world{,sets}. svn path=/main/trunk/; revision=14614
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/Scheduler.py2
-rw-r--r--pym/_emerge/actions.py14
-rw-r--r--pym/_emerge/create_world_atom.py2
-rw-r--r--pym/_emerge/depgraph.py23
-rw-r--r--pym/_emerge/help.py8
-rw-r--r--pym/_emerge/main.py4
-rw-r--r--pym/_emerge/unmerge.py31
7 files changed, 43 insertions, 41 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index eb2f89497..c95003dd7 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -1629,7 +1629,7 @@ class Scheduler(PollScheduler):
logger = self._logger
pkg_count = self._pkg_count
root_config = pkg.root_config
- world_set = root_config.sets["world"]
+ world_set = root_config.sets["selected"]
world_locked = False
if hasattr(world_set, "lock"):
world_set.lock()
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index bc0a518f1..febe3b545 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -566,7 +566,7 @@ def action_depclean(settings, trees, ldpath_mtimes,
msg.append("unless *all* required dependencies have been resolved. As a\n")
msg.append("consequence, it is often necessary to run %s\n" % \
good("`emerge --update"))
- msg.append(good("--newuse --deep @system @world`") + \
+ msg.append(good("--newuse --deep @world`") + \
" prior to depclean.\n")
if action == "depclean" and "--quiet" not in myopts and not myfiles:
@@ -614,7 +614,7 @@ def action_depclean(settings, trees, ldpath_mtimes,
print("Packages installed: " + str(len(vardb.cpv_all())))
print("Packages in world: " + \
- str(len(root_config.sets["world"].getAtoms())))
+ str(len(root_config.sets["selected"].getAtoms())))
print("Packages in system: " + \
str(len(root_config.sets["system"].getAtoms())))
print("Required packages: "+str(req_pkg_count))
@@ -634,7 +634,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
vardb = trees[myroot]["vartree"].dbapi
deselect = myopts.get('--deselect') != 'n'
- required_set_names = ("system", "world")
+ required_set_names = ("world",)
required_sets = {}
set_args = []
@@ -647,7 +647,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
# which excludes packages that are intended to be eligible for
# removal.
world_temp_set = required_sets["world"]
- system_set = required_sets["system"]
+ system_set = root_config.sets["system"]
if not system_set or not world_temp_set:
@@ -787,7 +787,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
msg.append(" %s" % (parent,))
msg.append("")
msg.append("Have you forgotten to run " + \
- good("`emerge --update --newuse --deep @system @world`") + " prior")
+ good("`emerge --update --newuse --deep @world`") + " prior")
msg.append(("to %s? It may be necessary to manually " + \
"uninstall packages that no longer") % action)
msg.append("exist in the portage tree since " + \
@@ -1176,9 +1176,9 @@ def calc_depclean(settings, trees, ldpath_mtimes,
def action_deselect(settings, trees, opts, atoms):
root_config = trees[settings['ROOT']]['root_config']
- world_set = root_config.sets['world']
+ world_set = root_config.sets['selected']
if not hasattr(world_set, 'update'):
- writemsg_level("World set does not appear to be mutable.\n",
+ writemsg_level("World @selected set does not appear to be mutable.\n",
level=logging.ERROR, noiselevel=-1)
return 1
diff --git a/pym/_emerge/create_world_atom.py b/pym/_emerge/create_world_atom.py
index 30ade0acf..7ded8af13 100644
--- a/pym/_emerge/create_world_atom.py
+++ b/pym/_emerge/create_world_atom.py
@@ -68,7 +68,7 @@ def create_world_atom(pkg, args_set, root_config):
if len(matched_slots) == 1:
new_world_atom = slot_atom
- if new_world_atom == sets["world"].findAtomForPackage(pkg):
+ if new_world_atom == sets["selected"].findAtomForPackage(pkg):
# Both atoms would be identical, so there's nothing to add.
return None
if not slotted:
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 525a05296..de60bd801 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -90,7 +90,7 @@ class _frozen_depgraph_config(object):
self.pkgsettings[myroot] = portage.config(
clone=self.trees[myroot]["vartree"].settings)
- self._required_set_names = set(["system", "world"])
+ self._required_set_names = set(["world"])
class _dynamic_depgraph_config(object):
@@ -1756,7 +1756,7 @@ class depgraph(object):
continue
if not (isinstance(arg, SetArg) and \
- arg.name in ("system", "world")):
+ arg.name in ("selected", "system", "world")):
self._dynamic_config._unsatisfied_deps_for_display.append(
((myroot, atom), {}))
return 0, myfavorites
@@ -1783,7 +1783,7 @@ class depgraph(object):
# out here if the atom is not from either the system or
# world set.
if not (isinstance(arg, SetArg) and \
- arg.name in ("system", "world")):
+ arg.name in ("selected", "system", "world")):
return 0, myfavorites
# Add the selected package to the graph as soon as possible
@@ -3486,7 +3486,7 @@ class depgraph(object):
skip = False
try:
for atom in root_config.sets[
- "world"].iterAtomsForPackage(task):
+ "selected"].iterAtomsForPackage(task):
satisfied = False
for pkg in graph_db.match_pkgs(atom):
if pkg == inst_pkg:
@@ -3775,7 +3775,7 @@ class depgraph(object):
if not parent_atoms:
atom = self._dynamic_config._blocked_world_pkgs.get(pkg)
if atom is not None:
- parent_atoms = set([("@world", atom)])
+ parent_atoms = set([("@selected", atom)])
if parent_atoms:
conflict_pkgs[pkg] = parent_atoms
@@ -4428,7 +4428,7 @@ class depgraph(object):
pkg_cp = xs[0]
root_config = self._frozen_config.roots[myroot]
system_set = root_config.sets["system"]
- world_set = root_config.sets["world"]
+ world_set = root_config.sets["selected"]
pkg_system = False
pkg_world = False
@@ -4647,9 +4647,9 @@ class depgraph(object):
if "world" in self._dynamic_config._sets:
# Filter out indirect members of world (from nested sets)
# since only direct members of world are desired here.
- world_set = self._frozen_config.roots[self._frozen_config.target_root].sets["world"]
+ world_set = self._frozen_config.roots[self._frozen_config.target_root].sets["selected"]
for arg, atom in self._dynamic_config._missing_args:
- if arg.name == "world" and atom in world_set:
+ if arg.name in ("selected", "world") and atom in world_set:
world_problems = True
break
@@ -4698,7 +4698,7 @@ class depgraph(object):
ref_string = " pulled in by " + ref_string
msg.append(" %s%s\n" % (colorize("INFORM", str(arg)), ref_string))
msg.append("\n")
- if "world" in problems_sets:
+ if "selected" in problems_sets or "world" in problems_sets:
msg.append("This problem can be solved in one of the following ways:\n\n")
msg.append(" A) Use emaint to clean offending packages from world (if not installed).\n")
msg.append(" B) Uninstall offending packages (cleans them from world).\n")
@@ -4729,7 +4729,7 @@ class depgraph(object):
if x in self._frozen_config.myopts:
return
root_config = self._frozen_config.roots[self._frozen_config.target_root]
- world_set = root_config.sets["world"]
+ world_set = root_config.sets["selected"]
world_locked = False
if hasattr(world_set, "lock"):
@@ -4761,7 +4761,8 @@ class depgraph(object):
del e
all_added = []
for k in self._dynamic_config._sets:
- if k in ("args", "world") or not root_config.sets[k].world_candidate:
+ if k in ("args", "selected", "world") or \
+ not root_config.sets[k].world_candidate:
continue
s = SETPREFIX + k
if s in world_set:
diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py
index e2c7a80ea..50145dad5 100644
--- a/pym/_emerge/help.py
+++ b/pym/_emerge/help.py
@@ -70,8 +70,8 @@ def help(myopts, havecolor=1):
paragraph = "Cleans the system by removing packages that are " + \
"not associated with explicitly merged packages. Depclean works " + \
- "by creating the full dependency tree from the @system and " + \
- "@world sets, then comparing it to installed packages. Packages " + \
+ "by creating the full dependency tree from the " + \
+ "@world set, then comparing it to installed packages. Packages " + \
"installed, but not part of the dependency tree, will be " + \
"uninstalled by depclean. See --with-bdeps for behavior with " + \
"respect to build time dependencies that are not strictly " + \
@@ -80,7 +80,7 @@ def help(myopts, havecolor=1):
"emerge --noreplace <atom>. As a safety measure, depclean " + \
"will not remove any packages unless *all* required dependencies " + \
"have been resolved. As a consequence, it is often necessary to " + \
- "run emerge --update --newuse --deep @system @world " + \
+ "run emerge --update --newuse --deep @world " + \
"prior to depclean."
for line in wrap(paragraph, desc_width):
@@ -312,7 +312,7 @@ def help(myopts, havecolor=1):
print()
print(" "+green("--complete-graph") + "[=%s]" % turquoise("n"))
desc = "This causes emerge to consider the deep dependencies of all" + \
- " packages from the system and world sets. With this option enabled," + \
+ " packages from the world set. With this option enabled," + \
" emerge will bail out if it determines that the given operation will" + \
" break any dependencies of the packages that have been added to the" + \
" graph. Like the --deep option, the --complete-graph" + \
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index 667a811df..3e445b2e8 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -904,8 +904,8 @@ def expand_set_arguments(myfiles, myaction, root_config):
for e in setconfig.errors:
print(colorize("BAD", "Error during set creation: %s" % e))
- # emerge relies on the existance of sets with names "world" and "system"
- required_sets = ("world", "system")
+ # emerge requires existence of "world", "selected", and "system"
+ required_sets = ("selected", "system", "world",)
missing_sets = []
for s in required_sets:
diff --git a/pym/_emerge/unmerge.py b/pym/_emerge/unmerge.py
index 4d2a546c5..967d72478 100644
--- a/pym/_emerge/unmerge.py
+++ b/pym/_emerge/unmerge.py
@@ -283,9 +283,9 @@ def unmerge(root_config, myopts, unmerge_action,
from portage.sets.base import EditablePackageSet
- # generate a list of package sets that are directly or indirectly listed in "world",
+ # generate a list of package sets that are directly or indirectly listed in "selected",
# as there is no persistent list of "installed" sets
- installed_sets = ["world"]
+ installed_sets = ["selected"]
stop = False
pos = 0
while not stop:
@@ -333,7 +333,8 @@ def unmerge(root_config, myopts, unmerge_action,
# skip sets that the user requested to unmerge, and skip world
# unless we're unmerging a package set (as the package would be
# removed from "world" later on)
- if s in root_config.setconfig.active or (s == "world" and not root_config.setconfig.active):
+ if s in root_config.setconfig.active or \
+ (s == "selected" and not root_config.setconfig.active):
continue
if s not in sets:
@@ -510,22 +511,22 @@ def unmerge(root_config, myopts, unmerge_action,
raise UninstallFailure(retval)
sys.exit(retval)
else:
- if clean_world and hasattr(sets["world"], "cleanPackage")\
- and hasattr(sets["world"], "lock"):
- sets["world"].lock()
- if hasattr(sets["world"], "load"):
- sets["world"].load()
- sets["world"].cleanPackage(vartree.dbapi, y)
- sets["world"].unlock()
+ if clean_world and hasattr(sets["selected"], "cleanPackage")\
+ and hasattr(sets["selected"], "lock"):
+ sets["selected"].lock()
+ if hasattr(sets["selected"], "load"):
+ sets["selected"].load()
+ sets["selected"].cleanPackage(vartree.dbapi, y)
+ sets["selected"].unlock()
emergelog(xterm_titles, " >>> unmerge success: "+y)
- if clean_world and hasattr(sets["world"], "remove")\
- and hasattr(sets["world"], "lock"):
- sets["world"].lock()
+ if clean_world and hasattr(sets["selected"], "remove")\
+ and hasattr(sets["selected"], "lock"):
+ sets["selected"].lock()
# load is called inside remove()
for s in root_config.setconfig.active:
- sets["world"].remove(SETPREFIX+s)
- sets["world"].unlock()
+ sets["selected"].remove(SETPREFIX + s)
+ sets["selected"].unlock()
return 1