summaryrefslogtreecommitdiffstats
path: root/bin/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-09-26 04:25:25 +0000
committerZac Medico <zmedico@gentoo.org>2007-09-26 04:25:25 +0000
commit7296a1443316d2ab09aa993ad5be69c3bb953c19 (patch)
tree3b61628f0dec2196ca4dc81174071103f26f5a65 /bin/emerge
parentb67aa895a83eae2a6139ba77a252285c18ea379d (diff)
downloadportage-7296a1443316d2ab09aa993ad5be69c3bb953c19.tar.gz
portage-7296a1443316d2ab09aa993ad5be69c3bb953c19.tar.bz2
portage-7296a1443316d2ab09aa993ad5be69c3bb953c19.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. (trunk r7793) svn path=/main/branches/2.1.2/; revision=7823
Diffstat (limited to 'bin/emerge')
-rwxr-xr-xbin/emerge22
1 files changed, 16 insertions, 6 deletions
diff --git a/bin/emerge b/bin/emerge
index 3fa56ee69..5764e84bc 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1433,11 +1433,20 @@ class depgraph:
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. """
@@ -1446,7 +1455,8 @@ class depgraph:
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