bitbake: use layer priority when applying bbappends

If the priority of a layer has been specified with BBFILE_PRIORITY_ then
use that to sort the list of BBFILES entries, which will affect the order
in which .bbappend files are applied.

Fixes [YOCTO #1125]

(Bitbake rev: a8ab0af776ba20c83832215054180fbd15c274c0)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2011-06-01 11:09:34 +01:00 committed by Richard Purdie
parent dc65caa889
commit 58bdecbc43
1 changed files with 14 additions and 10 deletions

View File

@ -405,6 +405,15 @@ class BBCooker:
print("}", file=tdepends_file)
logger.info("Task dependencies saved to 'task-depends.dot'")
def calc_bbfile_priority( self, filename, matched = None ):
for _, _, regex, pri in self.status.bbfile_config_priorities:
if regex.match(filename):
if matched != None:
if not regex in matched:
matched.add(regex)
return pri
return 0
def buildDepgraph( self ):
all_depends = self.status.all_depends
pn_provides = self.status.pn_provides
@ -413,15 +422,6 @@ class BBCooker:
bb.data.update_data(localdata)
bb.data.expandKeys(localdata)
matched = set()
def calc_bbfile_priority(filename):
for _, _, regex, pri in self.status.bbfile_config_priorities:
if regex.match(filename):
if not regex in matched:
matched.add(regex)
return pri
return 0
# Handle PREFERRED_PROVIDERS
for p in (bb.data.getVar('PREFERRED_PROVIDERS', localdata, 1) or "").split():
try:
@ -434,8 +434,9 @@ class BBCooker:
self.status.preferred[providee] = provider
# Calculate priorities for each file
matched = set()
for p in self.status.pkg_fn:
self.status.bbfile_priority[p] = calc_bbfile_priority(p)
self.status.bbfile_priority[p] = self.calc_bbfile_priority(p, matched)
# Don't show the warning if the BBFILE_PATTERN did match .bbappend files
unmatched = set()
@ -950,6 +951,9 @@ class BBCooker:
files = (data.getVar( "BBFILES", self.configuration.data, 1 ) or "").split()
data.setVar("BBFILES", " ".join(files), self.configuration.data)
# Sort files by priority
files.sort( key=lambda fileitem: self.calc_bbfile_priority(fileitem) )
if not len(files):
files = self.get_bbfiles()