depgraph: traverse bdeps in complete mode
authorZac Medico <zmedico@gentoo.org>
Sun, 1 May 2011 21:17:06 +0000 (14:17 -0700)
committerZac Medico <zmedico@gentoo.org>
Sun, 1 May 2011 21:17:06 +0000 (14:17 -0700)
This makes the graph as complete as possible, and can help --rebuild to
find more rebuilds.

pym/_emerge/create_depgraph_params.py
pym/_emerge/depgraph.py

index 09863479afa06f397dcf03cefa5aebb30fa503db..ae7a8aed62b91ee9b920443bc6bd98fc769452cd 100644 (file)
@@ -17,6 +17,10 @@ def create_depgraph_params(myopts, myaction):
        # rebuilt_binaries: replace installed packages with rebuilt binaries
        myparams = {"recurse" : True}
 
+       bdeps = myopts.get("--with-bdeps")
+       if bdeps is not None:
+               myparams["bdeps"] = bdeps
+
        if myaction == "remove":
                myparams["remove"] = True
                myparams["complete"] = True
index f1c111fb19e3ca163258950f9a938ca3735ce7cc..4753bd24a8c6a791e356642bc64812725127be78 100644 (file)
@@ -1245,7 +1245,7 @@ class depgraph(object):
 
                ignore_build_time_deps = False
                if pkg.built and not removal_action:
-                       if self._frozen_config.myopts.get("--with-bdeps", "n") == "y":
+                       if self._dynamic_config.myparams.get("bdeps", "n") == "y":
                                # Pull in build time deps as requested, but marked them as
                                # "optional" since they are not strictly required. This allows
                                # more freedom in the merge order calculation for solving
@@ -1257,7 +1257,7 @@ class depgraph(object):
                        else:
                                ignore_build_time_deps = True
 
-               if removal_action and self._frozen_config.myopts.get("--with-bdeps", "y") == "n":
+               if removal_action and self._dynamic_config.myparams.get("bdeps", "y") == "n":
                        ignore_build_time_deps = True
 
                if removal_action:
@@ -3854,6 +3854,9 @@ class depgraph(object):
                        self._select_package = self._select_pkg_from_installed
                else:
                        self._select_package = self._select_pkg_from_graph
+                       # Make the graph as complete as possible by traversing build-time
+                       # dependencies if they happen to be installed already.
+                       self._dynamic_config.myparams["bdeps"] = "y"
                already_deep = self._dynamic_config.myparams.get("deep") is True
                if not already_deep:
                        self._dynamic_config.myparams["deep"] = True