Skip to content

Commit 1b258f7

Browse files
authored
Install espidf and rom-elf for core-dump
1 parent 5d72bcb commit 1b258f7

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

builder/main.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)