bitbake/cooker, bitbake-layers: show the .bbappend files that matches no existing .bb recipe

This patch moves the logic of show_appends_with_no_recipes from bitbake-layers
into bitbake. By default, a fatal message is printed; we can also define a variable
BB_DANGLINGAPPENDS_WARNONLY to make the message only a warning(the variables
could be defined in conf/local.conf with a value "yes", "true" or "1").

(Bitbake rev: f5ba7c795df7cbd58124e35970ddc5bd84cbfb8e)

Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Dexuan Cui 2011-07-02 23:15:30 +08:00 committed by Richard Purdie
parent deb14487d1
commit 7a2a24de09
2 changed files with 23 additions and 20 deletions

View File

@ -55,7 +55,7 @@ class Commands(cmd.Cmd):
def prepare_cooker(self):
sys.stderr.write("Parsing recipes..")
logger.setLevel(logging.ERROR)
logger.setLevel(logging.WARNING)
try:
while self.cooker.state in (state.initial, state.parsing):
@ -156,8 +156,6 @@ class Commands(cmd.Cmd):
self.show_appends_for_skipped()
self.show_appends_with_no_recipes()
def show_appends_for_pn(self, pn):
filenames = self.cooker_data.pkg_pn[pn]
@ -204,23 +202,6 @@ class Commands(cmd.Cmd):
notappended.append(basename)
return appended, notappended
def show_appends_with_no_recipes(self):
recipes = set(os.path.basename(f)
for f in self.cooker_data.pkg_fn.iterkeys())
recipes |= set(os.path.basename(f)
for f in self.cooker.skiplist.iterkeys())
appended_recipes = self.cooker_data.appends.iterkeys()
appends_without_recipes = [self.cooker_data.appends[recipe]
for recipe in appended_recipes
if recipe not in recipes]
if appends_without_recipes:
appendlines = (' %s' % append
for appends in appends_without_recipes
for append in appends)
logger.warn('No recipes available for:\n%s',
'\n'.join(appendlines))
self.returncode |= 4
def do_EOF(self, line):
return True

View File

@ -483,6 +483,27 @@ class BBCooker:
return pri
return 0
def show_appends_with_no_recipes( self ):
recipes = set(os.path.basename(f)
for f in self.status.pkg_fn.iterkeys())
recipes |= set(os.path.basename(f)
for f in self.skiplist.iterkeys())
appended_recipes = self.appendlist.iterkeys()
appends_without_recipes = [self.appendlist[recipe]
for recipe in appended_recipes
if recipe not in recipes]
if appends_without_recipes:
appendlines = (' %s' % append
for appends in appends_without_recipes
for append in appends)
msg = 'No recipes available for:\n%s' % '\n'.join(appendlines)
warn_only = data.getVar("BB_DANGLINGAPPENDS_WARNONLY", \
self.configuration.data, False) or "no"
if warn_only.lower() in ("1", "yes", "true"):
bb.warn(msg)
else:
bb.fatal(msg)
def buildDepgraph( self ):
all_depends = self.status.all_depends
pn_provides = self.status.pn_provides
@ -1009,6 +1030,7 @@ class BBCooker:
if not self.parser.parse_next():
collectlog.debug(1, "parsing complete")
self.show_appends_with_no_recipes()
self.buildDepgraph()
self.state = state.running
return None