diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-06-01 01:41:04 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-06-01 01:41:04 +0000 |
commit | ca3c06f074d1d9904a55b4e3c65668f1bd293064 (patch) | |
tree | a77f98978543f6c22d175256fb3aba6a357d6a80 /bin | |
parent | 35d0496da473d3e680f2ad73aa43d09e0b8f44b1 (diff) | |
download | portage-ca3c06f074d1d9904a55b4e3c65668f1bd293064.tar.gz portage-ca3c06f074d1d9904a55b4e3c65668f1bd293064.tar.bz2 portage-ca3c06f074d1d9904a55b4e3c65668f1bd293064.zip |
Make --skipfirst tolerate masked packages by dropping them (similar to
how it would drop a package that has an unsatisfied dependency).
(trunk r10526)
svn path=/main/branches/2.1.2/; revision=10527
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/emerge | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/bin/emerge b/bin/emerge index 818cf11c6..c99710821 100755 --- a/bin/emerge +++ b/bin/emerge @@ -5362,9 +5362,18 @@ class depgraph(object): if not isinstance(mergelist, list): mergelist = [] + favorites = resume_data.get("favorites") + args_set = self._sets["args"] + if isinstance(favorites, list): + args = self._load_favorites(favorites) + else: + args = [] + + skipfirst = "--skipfirst" in self.myopts fakedb = self.mydbapi trees = self.trees serialized_tasks = [] + masked_tasks = [] for x in mergelist: if not (isinstance(x, list) and len(x) == 4): continue @@ -5398,8 +5407,13 @@ class depgraph(object): root_config = self.roots[pkg.root] if "merge" == pkg.operation and \ not visible(root_config.settings, pkg): - self._unsatisfied_deps_for_display.append( - ((pkg.root, "="+pkg.cpv), {"myparent":None})) + if skipfirst: + atom = args_set.findAtomForPackage(pkg) + masked_tasks.append(Dependency(atom=atom, + root=pkg.root, parent=pkg)) + else: + self._unsatisfied_deps_for_display.append( + ((pkg.root, "="+pkg.cpv), {"myparent":None})) fakedb[myroot].cpv_inject(pkg) serialized_tasks.append(pkg) @@ -5414,12 +5428,6 @@ class depgraph(object): self._select_package = self._select_pkg_from_graph self.myparams.add("selective") - favorites = resume_data.get("favorites") - if isinstance(favorites, list): - args = self._load_favorites(favorites) - else: - args = [] - for task in serialized_tasks: if isinstance(task, Package) and \ task.operation == "merge": @@ -5443,13 +5451,13 @@ class depgraph(object): # masked. if not self._create_graph(allow_unsatisfied=True): return False - if self._unsatisfied_deps: + if masked_tasks or self._unsatisfied_deps: # This probably means that a required package # was dropped via --skipfirst. It makes the # resume list invalid, so convert it to a # UnsatisfiedResumeDep exception. raise self.UnsatisfiedResumeDep( - self._unsatisfied_deps) + masked_tasks + self._unsatisfied_deps) self._serialized_tasks_cache = None try: self.altlist() |