summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-09-22 02:30:04 +0000
committerZac Medico <zmedico@gentoo.org>2007-09-22 02:30:04 +0000
commitc79e2c7c841e3175a4f1b10c8cde8f73f3d10fe7 (patch)
tree77979a1eb3c726c52e003cfc1b221840a385323b
parent153e3d641545fab537bee32c5390dc1a738cd34c (diff)
downloadportage-c79e2c7c841e3175a4f1b10c8cde8f73f3d10fe7.tar.gz
portage-c79e2c7c841e3175a4f1b10c8cde8f73f3d10fe7.tar.bz2
portage-c79e2c7c841e3175a4f1b10c8cde8f73f3d10fe7.zip
When --with-bdeps=y is enabled for built packages, 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. svn path=/main/trunk/; revision=7793
-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