When --with-bdeps=y is enabled for built packages, pull in build time deps as
authorZac Medico <zmedico@gentoo.org>
Sat, 22 Sep 2007 02:30:04 +0000 (02:30 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 22 Sep 2007 02:30:04 +0000 (02:30 -0000)
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

pym/emerge/__init__.py

index 48d1c27d1fd3e056b1f5668cda461970bd3a8f03..652a3d355835ce567414effd249c2cd0a7b42b52 100644 (file)
@@ -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