diff --git a/builder/frameworks/espidf.py b/builder/frameworks/espidf.py index 5b85f51b8..9d9c0686d 100644 --- a/builder/frameworks/espidf.py +++ b/builder/frameworks/espidf.py @@ -76,6 +76,7 @@ config = env.GetProjectConfig() board = env.BoardConfig() +pio_orig_frwrk = env.GetProjectOption("framework") mcu = board.get("build.mcu", "esp32") chip_variant = board.get("build.chip_variant", "").lower() chip_variant = chip_variant if chip_variant else mcu @@ -181,7 +182,7 @@ def create_silent_action(action_func): ARDUINO_FRMWRK_LIB_DIR_PATH = arduino_lib_dir.resolve() ARDUINO_FRMWRK_LIB_DIR = str(ARDUINO_FRMWRK_LIB_DIR_PATH) - if mcu == "esp32c2": + if mcu == "esp32c2" and "espidf" not in pio_orig_frwrk: ARDUINO_FRMWRK_C2_LIB_DIR = str(ARDUINO_FRMWRK_LIB_DIR_PATH / chip_variant) if not os.path.exists(ARDUINO_FRMWRK_C2_LIB_DIR): _arduino_c2_dir = platform.get_package_dir("framework-arduino-c2-skeleton-lib") @@ -192,7 +193,7 @@ def create_silent_action(action_func): ARDUINO_C2_DIR = str(arduino_c2_dir / chip_variant) shutil.copytree(ARDUINO_C2_DIR, ARDUINO_FRMWRK_C2_LIB_DIR, dirs_exist_ok=True) - if mcu == "esp32c61": + if mcu == "esp32c61" and "espidf" not in pio_orig_frwrk: ARDUINO_FRMWRK_C61_LIB_DIR = str(ARDUINO_FRMWRK_LIB_DIR_PATH / chip_variant) if not os.path.exists(ARDUINO_FRMWRK_C61_LIB_DIR): _arduino_c61_dir = platform.get_package_dir("framework-arduino-c61-skeleton-lib") @@ -233,6 +234,10 @@ def contains_path_traversal(url): if "espidf.custom_sdkconfig" in board: flag_custom_sdkonfig = True +# Disable HybridCompile for espidf and arduino, espidf projects +# HybridCompile is always "framework = arduino" ! +if "espidf" in pio_orig_frwrk: + flag_custom_sdkonfig = False # Check for board-specific configurations that require sdkconfig generation def has_board_specific_config(): diff --git a/platform.py b/platform.py index 2fae9d533..c4677d7ee 100644 --- a/platform.py +++ b/platform.py @@ -557,7 +557,7 @@ def _handle_existing_tool(self, tool_name: str, paths: Dict[str, str]) -> bool: return self.install_tool(tool_name) - def _configure_arduino_framework(self, frameworks: List[str]) -> None: + def _configure_arduino_framework(self, frameworks: List[str], mcu: str) -> None: """Configure Arduino framework dependencies.""" if "arduino" not in frameworks: return @@ -566,7 +566,6 @@ def _configure_arduino_framework(self, frameworks: List[str]) -> None: safe_remove_directory_pattern(Path(self.packages_dir), f"framework-arduinoespressif32.*") self.packages["framework-arduinoespressif32"]["optional"] = False self.packages["framework-arduinoespressif32-libs"]["optional"] = False - if is_internet_available(): try: response = requests.get(ARDUINO_ESP32_PACKAGE_URL, timeout=30) @@ -576,6 +575,10 @@ def _configure_arduino_framework(self, frameworks: List[str]) -> None: self.packages["framework-arduinoespressif32-libs"]["version"] = dyn_lib_url except (requests.RequestException, KeyError, IndexError) as e: logger.error(f"Failed to fetch Arduino framework library URL: {e}") + if mcu == "esp32c2": + self.packages["framework-arduino-c2-skeleton-lib"]["optional"] = False + if mcu == "esp32c61": + self.packages["framework-arduino-c61-skeleton-lib"]["optional"] = False def _configure_espidf_framework( self, frameworks: List[str], variables: Dict, board_config: Dict, mcu: str @@ -592,10 +595,6 @@ def _configure_espidf_framework( safe_remove_directory_pattern(Path(self.packages_dir), f"framework-espidf@*") safe_remove_directory_pattern(Path(self.packages_dir), f"framework-espidf.*") self.packages["framework-espidf"]["optional"] = False - if mcu == "esp32c2": - self.packages["framework-arduino-c2-skeleton-lib"]["optional"] = False - if mcu == "esp32c61": - self.packages["framework-arduino-c61-skeleton-lib"]["optional"] = False def _get_mcu_config(self, mcu: str) -> Optional[Dict]: """Get MCU configuration with optimized caching and search.""" @@ -831,7 +830,7 @@ def configure_default_packages(self, variables: Dict, targets: List[str]) -> Any self._esptool_path = esptool_path # Configuration steps (now with penv available) - self._configure_arduino_framework(frameworks) + self._configure_arduino_framework(frameworks, mcu) self._configure_espidf_framework(frameworks, variables, board_config, mcu) self._configure_mcu_toolchains(mcu, variables, targets) self._handle_littlefs_tool(for_download=False) # Ensure mklittlefs is installed