@@ -702,15 +702,36 @@ def coredump_analysis(target, source, env):
702702 # Use defaults: --chip <mcu> info_corefile <elf_file>
703703 cmd .extend (["--chip" , mcu , "info_corefile" , elf_file ])
704704
705- # Set up ESP-IDF environment variables when ESP-IDF framework is used
705+ # Set up ESP-IDF environment variables and ensure required packages are installed
706706 coredump_env = os .environ .copy ()
707- if env .get ("PIOFRAMEWORK" ) and "espidf" in env .get ("PIOFRAMEWORK" , []):
708- _framework_pkg_dir = platform .get_package_dir ("framework-espidf" )
709- _rom_elfs_dir = platform .get_package_dir ("tool-esp-rom-elfs" )
710- if _framework_pkg_dir and os .path .isdir (_framework_pkg_dir ):
711- coredump_env ['IDF_PATH' ] = str (Path (_framework_pkg_dir ).resolve ())
712- if _rom_elfs_dir and os .path .isdir (_rom_elfs_dir ):
713- coredump_env ['ESP_ROM_ELF_DIR' ] = str (Path (_rom_elfs_dir ).resolve ())
707+
708+ # Check if ESP-IDF packages are available, install if missing
709+ _framework_pkg_dir = platform .get_package_dir ("framework-espidf" )
710+ _rom_elfs_dir = platform .get_package_dir ("tool-esp-rom-elfs" )
711+
712+ # Install framework-espidf if not available
713+ if not _framework_pkg_dir or not os .path .isdir (_framework_pkg_dir ):
714+ print ("ESP-IDF framework not found, installing..." )
715+ try :
716+ platform .install_package ("framework-espidf" )
717+ _framework_pkg_dir = platform .get_package_dir ("framework-espidf" )
718+ except Exception as e :
719+ print (f"Warning: Failed to install framework-espidf: { e } " )
720+
721+ # Install tool-esp-rom-elfs if not available
722+ if not _rom_elfs_dir or not os .path .isdir (_rom_elfs_dir ):
723+ print ("ESP ROM ELFs tool not found, installing..." )
724+ try :
725+ platform .install_package ("tool-esp-rom-elfs" )
726+ _rom_elfs_dir = platform .get_package_dir ("tool-esp-rom-elfs" )
727+ except Exception as e :
728+ print (f"Warning: Failed to install tool-esp-rom-elfs: { e } " )
729+
730+ # Set environment variables if packages are available
731+ if _framework_pkg_dir and os .path .isdir (_framework_pkg_dir ):
732+ coredump_env ['IDF_PATH' ] = str (Path (_framework_pkg_dir ).resolve ())
733+ if _rom_elfs_dir and os .path .isdir (_rom_elfs_dir ):
734+ coredump_env ['ESP_ROM_ELF_DIR' ] = str (Path (_rom_elfs_dir ).resolve ())
714735
715736 # Debug-Info if wanted
716737 if env .GetProjectOption ("custom_esp_coredump_verbose" , False ):
0 commit comments