Skip to content

try-toolchain crashes EasyBuild if toolchain is not known #5069

@Thyre

Description

@Thyre

Easy one to reproduce:

$ eb --try-toolchain=impi,2025b Valgrind-3.25.1-gompi-2025b.eb
== Temporary log file in case of crash /tmp/eb-r73kbz6u/easybuild-8a9rczzk.log
EasyBuild crashed! Please consider reporting a bug, this should not happen...

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/main.py", line 855, in <module>
    main_with_hooks()
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/main.py", line 841, in main_with_hooks
    main(args=args, prepared_cfg_data=(init_session_state, eb_go, cfg_settings))
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/main.py", line 793, in main
    do_cleanup = process_eb_args(orig_paths, eb_go, cfg_settings, modtool, testing, init_session_state,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/main.py", line 475, in process_eb_args
    easyconfigs, tweak_map = tweak(easyconfigs, build_specs, modtool, targetdirs=tweaked_ecs_paths, return_map=True)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/framework/easyconfig/tweak.py", line 146, in tweak
    src_to_dst_tc_mapping = map_toolchain_hierarchies(source_toolchain, target_toolchain, modtool)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/framework/easyconfig/tweak.py", line 840, in map_toolchain_hierarchies
    target_tc_hierarchy = get_toolchain_hierarchy(target_toolchain, incl_capabilities=True)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/framework/easyconfig/easyconfig.py", line 234, in cache_aware_func
    toolchain_hierarchy = func(toolchain, incl_capabilities)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/EasyBuild/prog/local/lib/python3.12/dist-packages/easybuild/framework/easyconfig/easyconfig.py", line 335, in get_toolchain_hierarchy
    subtoolchain_names = subtoolchains[current_tc_name]
                         ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'impi'

Trying a toolchain which does not exist, e.g. impi (easy typo), EasyBuild crashes. Instead, it should complain that the toolchain does not exist.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions