Merge branch 'bugfix/idfpy_global_action_callbacks_order_v4.2' into 'release/v4.2'

idf.py: Run global_action_callbacks in predictable order (v4.2)

See merge request espressif/esp-idf!13682
This commit is contained in:
Ivan Grokhotkov
2021-06-07 06:06:54 +00:00

View File

@ -657,7 +657,7 @@ def init_cli(verbose_output=None):
if path not in extension_dirs: if path not in extension_dirs:
extension_dirs.append(path) extension_dirs.append(path)
extensions = {} extensions = []
for directory in extension_dirs: for directory in extension_dirs:
if directory and not os.path.exists(directory): if directory and not os.path.exists(directory):
print('WARNING: Directroy with idf.py extensions doesn\'t exist:\n %s' % directory) print('WARNING: Directroy with idf.py extensions doesn\'t exist:\n %s' % directory)
@ -666,20 +666,20 @@ def init_cli(verbose_output=None):
sys.path.append(directory) sys.path.append(directory)
for _finder, name, _ispkg in sorted(iter_modules([directory])): for _finder, name, _ispkg in sorted(iter_modules([directory])):
if name.endswith('_ext'): if name.endswith('_ext'):
extensions[name] = import_module(name) extensions.append((name, import_module(name)))
# Load component manager if available and not explicitly disabled # Load component manager if available and not explicitly disabled
if os.getenv('IDF_COMPONENT_MANAGER', None) != '0': if os.getenv('IDF_COMPONENT_MANAGER', None) != '0':
try: try:
from idf_component_manager import idf_extensions from idf_component_manager import idf_extensions
extensions['component_manager_ext'] = idf_extensions extensions.append(('component_manager_ext', idf_extensions))
os.environ['IDF_COMPONENT_MANAGER'] = '1' os.environ['IDF_COMPONENT_MANAGER'] = '1'
except ImportError: except ImportError:
pass pass
for name, extension in extensions.items(): for name, extension in extensions:
try: try:
all_actions = merge_action_lists(all_actions, extension.action_extensions(all_actions, project_dir)) all_actions = merge_action_lists(all_actions, extension.action_extensions(all_actions, project_dir))
except AttributeError: except AttributeError: