summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/emerge/__init__.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py
index 48d1c27d1..652a3d355 100644
--- a/pym/emerge/__init__.py
+++ b/pym/emerge/__init__.py
@@ -1355,11 +1355,20 @@ class depgraph(object):
if "--buildpkgonly" in self.myopts:
edepend["RDEPEND"] = ""
edepend["PDEPEND"] = ""
- if not (arg and "--onlydeps" in self.myopts and \
- mytype == "ebuild") and \
- self.myopts.get("--with-bdeps", "n") == "n" and \
- (mytype == "binary" or mybigkey[3] == "nomerge"):
- edepend["DEPEND"] = ""
+ bdeps_satisfied = False
+ if mytype in ("installed", "binary"):
+ if self.myopts.get("--with-bdeps", "n") == "y":
+ # Pull in build time deps as requested, but marked them as
+ # "satisfied" since they are not strictly required. This allows
+ # more freedom in the merge order calculation for solving
+ # circular dependencies. Don't convert to PDEPEND since that
+ # could make --with-bdeps=y less effective if it is used to
+ # adjust merge order to prevent built_with_use() calls from
+ # failing.
+ bdeps_satisfied = True
+ else:
+ # built packages do not have build time dependencies.
+ edepend["DEPEND"] = ""
""" We have retrieve the dependency information, now we need to recursively
process them. DEPEND gets processed for root = "/", {R,P}DEPEND in myroot. """
@@ -1368,7 +1377,8 @@ class depgraph(object):
try:
if not self.select_dep("/", edepend["DEPEND"], myparent=mp,
- myuse=myuse, priority=DepPriority(buildtime=True),
+ myuse=myuse, priority=DepPriority(buildtime=True,
+ satisfied=bdeps_satisfied),
parent_arg=arg):
return 0
"""RDEPEND is soft by definition. However, in order to ensure