aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/_emerge/depgraph.py')
-rw-r--r--lib/_emerge/depgraph.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py
index 1127a6234..6d8e73172 100644
--- a/lib/_emerge/depgraph.py
+++ b/lib/_emerge/depgraph.py
@@ -495,6 +495,7 @@ class _dynamic_depgraph_config(object):
self._backtrack_infos = {}
self._buildpkgonly_deps_unsatisfied = False
+ self._quickpkg_direct_deps_unsatisfied = False
self._autounmask = self.myparams['autounmask']
self._displayed_autounmask = False
self._success_without_autounmask = False
@@ -4526,6 +4527,16 @@ class depgraph(object):
self._dynamic_config._skip_restart = True
return False, myfavorites
+ if (self._frozen_config.myopts.get('--quickpkg-direct', 'n') == 'y' and
+ self._frozen_config.target_root is not self._frozen_config._running_root):
+ running_root = self._frozen_config._running_root.root
+ for node in self._dynamic_config.digraph:
+ if (isinstance(node, Package) and node.operation in ('merge', 'uninstall') and
+ node.root == running_root):
+ self._dynamic_config._quickpkg_direct_deps_unsatisfied = True
+ self._dynamic_config._skip_restart = True
+ return False, myfavorites
+
if (not self._dynamic_config._prune_rebuilds and
self._ignored_binaries_autounmask_backtrack()):
config = self._dynamic_config._backtrack_infos.setdefault("config", {})
@@ -9062,6 +9073,14 @@ class depgraph(object):
writemsg("!!! Cannot merge requested packages. "
"Merge deps and try again.\n\n", noiselevel=-1)
+ if self._dynamic_config._quickpkg_direct_deps_unsatisfied:
+ self._show_merge_list()
+ writemsg("\n!!! --quickpkg-direct requires all "
+ "dependencies to be merged for root '{}'.\n".format(
+ self._frozen_config._running_root.root), noiselevel=-1)
+ writemsg("!!! Cannot merge requested packages. "
+ "Merge deps and try again.\n\n", noiselevel=-1)
+
def saveNomergeFavorites(self):
"""Find atoms in favorites that are not in the mergelist and add them
to the world file if necessary."""