package.bbclass: Avoid copying the datastore for FILES handling
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 29 Jan 2013 13:51:06 +0000 (13:51 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 1 Feb 2013 15:54:01 +0000 (15:54 +0000)
There is no real point in adjusting overrides and creating a copy of the datastore,
just to access a single variable. We can do this just as easily with a slightly
more complicated getVar call. This improves performance.

(From OE-Core rev: 69f4351809359a0c7c38e8f233f3e3f7680ed2e2)

(From OE-Core rev: b5d65f5d5e5b26d3a2c673e899114c90bcaf6bc8)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/package.bbclass

index 51ab009..4e7db9a 100644 (file)
@@ -949,18 +949,10 @@ python populate_packages () {
     seen = []
 
     for pkg in package_list:
-        localdata = bb.data.createCopy(d)
         root = os.path.join(pkgdest, pkg)
         bb.mkdirhier(root)
 
-        localdata.setVar('PKG', pkg)
-        overrides = localdata.getVar('OVERRIDES', True)
-        if not overrides:
-            raise bb.build.FuncFailed('OVERRIDES not defined')
-        localdata.setVar('OVERRIDES', overrides + ':' + pkg)
-        bb.data.update_data(localdata)
-
-        filesvar = localdata.getVar('FILES', True) or ""
+        filesvar = d.getVar('FILES_%s' % pkg, True) or d.getVar('FILES', True) or ""
         if "//" in filesvar:
             bb.warn("FILES variable for package %s contains '//' which is invalid. Attempting to fix this but you should correct the metadata.\n" % pkg)
             filesvar.replace("//", "/")
@@ -1023,7 +1015,6 @@ python populate_packages () {
             if ret is False or ret == 0:
                 raise bb.build.FuncFailed("File population failed")
 
-        del localdata
     os.chdir(workdir)
 
     unshipped = []