My mistake in downloading an older version. A similar fix has already been implemented in 1.10.2.

Nathan Bell
/Software Engineer/
Action Target Inc.
801-377-8033 x154
[email protected] <mailto:[email protected]>
www.actiontarget.com <http://www.actiontarget.com>
"Better Equipped. Better Prepared"

On 02/11/2011 11:10 PM, Khem Raj wrote:
On (11/02/11 15:01), Nathan Bell wrote:
I'm new to the list, so let me know if I'm completely crazy.

I noticed that the "Resolving any missing task queue dependencies"
step takes quite a while, depending on the size of the environment
(number of .bb files being processed). Stepping into the bitbake
code for the first time I noticed the providers.py
getRuntimeProviders() function calling re.compile() on the same data
over and over again. Provided is a patch that moves this step into
the cache.py Cache::handleData() function so it is ran once for each
package rather than multiple times.

The patch is against the latest source release, 1.8.19.
Do you see this slow down on latest master of bitbake too?
could you try that out

--
Nathan Bell
/Software Engineer/
Action Target Inc.
801-377-8033 x154
[email protected]<mailto:[email protected]>
www.actiontarget.com<http://www.actiontarget.com>
"Better Equipped. Better Prepared"
diff -ruN bitbake-1.8.19.orig/lib/bb/cache.py bitbake-1.8.19/lib/bb/cache.py
--- bitbake-1.8.19.orig/lib/bb/cache.py 2010-12-23 13:26:03.000000000 -0700
+++ bitbake-1.8.19/lib/bb/cache.py      2011-02-11 14:39:57.000000000 -0700
@@ -405,6 +405,12 @@
              if not package in cacheData.packages_dynamic:
                  cacheData.packages_dynamic[package] = []
              cacheData.packages_dynamic[package].append(file_name)
+            if not package in cacheData.packages_dynamic_pattern:
+                try:
+                    cacheData.packages_dynamic_pattern[package] = 
re.compile(package.replace('+', "\+"))
+                except:
+                    bb.msg.error(bb.msg.domain.Provider, "Error parsing re 
expression: %s" % pattern)
+                    raise

          for rprovide in rprovides:
              if not rprovide in cacheData.rproviders:
@@ -503,6 +509,7 @@
          self.rproviders = {}
          self.packages = {}
          self.packages_dynamic = {}
+        self.packages_dynamic_pattern = {}
          self.possible_world = []
          self.pkg_pn = {}
          self.pkg_fn = {}
diff -ruN bitbake-1.8.19.orig/lib/bb/providers.py 
bitbake-1.8.19/lib/bb/providers.py
--- bitbake-1.8.19.orig/lib/bb/providers.py     2010-12-23 13:26:03.000000000 
-0700
+++ bitbake-1.8.19/lib/bb/providers.py  2011-02-11 14:39:51.000000000 -0700
@@ -297,11 +297,7 @@

      # Only search dynamic packages if we can't find anything in other 
variables
      for pattern in dataCache.packages_dynamic:
-        try:
-            regexp = re.compile(pattern.replace('+', "\+"))
-        except:
-            bb.msg.error(bb.msg.domain.Provider, "Error parsing re expression: 
%s" % pattern)
-            raise
+        regexp = dataCache.packages_dynamic_pattern[pattern]
          if regexp.match(rdepend):
              rproviders += dataCache.packages_dynamic[pattern]

_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev
_______________________________________________
Bitbake-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bitbake-dev

Reply via email to