mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 11:28:58 +00:00
recipetool: create: set up priority system for recipe handlers
Sometimes we want to force one handler to run before another; if the two handlers are in different plugins that's difficult without some kind of priority number, so add one and sort by it. (From OE-Core rev: 0219d4fb9cefcee635387b46fc1d215f82753d92) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
38803e38d6
commit
6a7661b800
@@ -251,10 +251,22 @@ def create_recipe(args):
|
||||
lines_after.append('')
|
||||
|
||||
# Find all plugins that want to register handlers
|
||||
handlers = []
|
||||
logger.debug('Loading recipe handlers')
|
||||
raw_handlers = []
|
||||
for plugin in plugins:
|
||||
if hasattr(plugin, 'register_recipe_handlers'):
|
||||
plugin.register_recipe_handlers(handlers)
|
||||
plugin.register_recipe_handlers(raw_handlers)
|
||||
# Sort handlers by priority
|
||||
handlers = []
|
||||
for i, handler in enumerate(raw_handlers):
|
||||
if isinstance(handler, tuple):
|
||||
handlers.append((handler[0], handler[1], i))
|
||||
else:
|
||||
handlers.append((handler, 0, i))
|
||||
handlers.sort(key=lambda item: (item[1], -item[2]), reverse=True)
|
||||
for handler, priority, _ in handlers:
|
||||
logger.debug('Handler: %s (priority %d)' % (handler.__class__.__name__, priority))
|
||||
handlers = [item[0] for item in handlers]
|
||||
|
||||
# Apply the handlers
|
||||
classes = []
|
||||
|
||||
Reference in New Issue
Block a user