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:
parent
deb14487d1
commit
7a2a24de09
|
@ -55,7 +55,7 @@ class Commands(cmd.Cmd):
|
||||||
|
|
||||||
def prepare_cooker(self):
|
def prepare_cooker(self):
|
||||||
sys.stderr.write("Parsing recipes..")
|
sys.stderr.write("Parsing recipes..")
|
||||||
logger.setLevel(logging.ERROR)
|
logger.setLevel(logging.WARNING)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while self.cooker.state in (state.initial, state.parsing):
|
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_for_skipped()
|
||||||
|
|
||||||
self.show_appends_with_no_recipes()
|
|
||||||
|
|
||||||
def show_appends_for_pn(self, pn):
|
def show_appends_for_pn(self, pn):
|
||||||
filenames = self.cooker_data.pkg_pn[pn]
|
filenames = self.cooker_data.pkg_pn[pn]
|
||||||
|
|
||||||
|
@ -204,23 +202,6 @@ class Commands(cmd.Cmd):
|
||||||
notappended.append(basename)
|
notappended.append(basename)
|
||||||
return appended, notappended
|
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):
|
def do_EOF(self, line):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -483,6 +483,27 @@ class BBCooker:
|
||||||
return pri
|
return pri
|
||||||
return 0
|
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 ):
|
def buildDepgraph( self ):
|
||||||
all_depends = self.status.all_depends
|
all_depends = self.status.all_depends
|
||||||
pn_provides = self.status.pn_provides
|
pn_provides = self.status.pn_provides
|
||||||
|
@ -1009,6 +1030,7 @@ class BBCooker:
|
||||||
|
|
||||||
if not self.parser.parse_next():
|
if not self.parser.parse_next():
|
||||||
collectlog.debug(1, "parsing complete")
|
collectlog.debug(1, "parsing complete")
|
||||||
|
self.show_appends_with_no_recipes()
|
||||||
self.buildDepgraph()
|
self.buildDepgraph()
|
||||||
self.state = state.running
|
self.state = state.running
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue