If dep calculation time exceeds 20 seconds then automatically
authorZac Medico <zmedico@gentoo.org>
Sun, 17 Aug 2008 23:03:06 +0000 (23:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 17 Aug 2008 23:03:06 +0000 (23:03 -0000)
enable "complete" mode since any performance difference is
not as likely to be noticed by the user after this much time
has passed. (trunk r10773)

svn path=/main/branches/2.1.2/; revision=11429

bin/emerge

index 51bcdcad67df9198b6e67e6efc25e556cd2ef98a..b90501314e5e5cb09d0c874bef03a271e33d4f4c 100755 (executable)
@@ -2015,7 +2015,14 @@ class depgraph(object):
 
        _dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"]
 
+       # If dep calculation time exceeds this value then automatically
+       # enable "complete" mode since any performance difference is
+       # not as likely to be noticed by the user after this much time
+       # has passed.
+       _complete_thresold = 20
+
        def __init__(self, settings, trees, myopts, myparams, spinner):
+               self._creation_time = time.time()
                self.settings = settings
                self.target_root = settings["ROOT"]
                self.myopts = myopts
@@ -3444,16 +3451,20 @@ class depgraph(object):
                intially satisfied.
 
                Since this method can consume enough time to disturb users, it is
-               currently only enabled by the --complete-graph option.
+               currently only enabled by the --complete-graph option, or when
+               dep calculation time exceeds self._complete_thresold.
                """
-               if "complete" not in self.myparams:
-                       # Skip this to avoid consuming enough time to disturb users.
-                       return 1
-
                if "--buildpkgonly" in self.myopts or \
                        "recurse" not in self.myparams:
                        return 1
 
+               if "complete" not in self.myparams:
+                       if time.time() - self._creation_time > self._complete_thresold:
+                               self.myparams.add("complete")
+                       else:
+                               # Skip this to avoid consuming enough time to disturb users.
+                               return 1
+
                # Put the depgraph into a mode that causes it to only
                # select packages that have already been added to the
                # graph or those that are installed and have not been