From f8bef1d1a43b9d0d7bbd5160a6361d17b4083da0 Mon Sep 17 00:00:00 2001 From: David Montero Crespo Date: Mon, 24 Aug 2026 05:44:35 +0200 Subject: [PATCH] feat(espidf): LVGL and esp_lvgl_port, the layer every official demo's UI sits on Probed against staging the same way as the previous commit: lvgl.h and esp_lvgl_port.h both died at "No such file or directory", so a visitor could not paste a single screen of esp-dev-kits UI code. Declared only when the source includes the header, so no other build pays for it. --- backend/app/services/espidf_compiler.py | 6 ++++++ test/backend/unit/test_espidf_pure_mode.py | 2 ++ 2 files changed, 8 insertions(+) diff --git a/backend/app/services/espidf_compiler.py b/backend/app/services/espidf_compiler.py index a94830a2..fe104383 100644 --- a/backend/app/services/espidf_compiler.py +++ b/backend/app/services/espidf_compiler.py @@ -909,6 +909,12 @@ class ESPIDFCompiler: (r'iot_knob\.h', 'espressif/knob', '*'), (r'esp_lcd_touch_gt911\.h', 'espressif/esp_lcd_touch_gt911', '*'), (r'esp_codec_dev\.h', 'espressif/esp_codec_dev', '*'), + # LVGL and its BSP glue: every official board demo's UI is built on + # them, so without these a visitor cannot paste a single screen of + # esp-dev-kits code. The dependency is only declared when the source + # includes the header, so nothing else pays for the bigger build. + (r'lvgl\.h', 'lvgl/lvgl', '*'), + (r'esp_lvgl_port\.h', 'espressif/esp_lvgl_port', '*'), ) def _detect_managed_components(self, code: str) -> dict: diff --git a/test/backend/unit/test_espidf_pure_mode.py b/test/backend/unit/test_espidf_pure_mode.py index 43b5db52..a3c0e374 100644 --- a/test/backend/unit/test_espidf_pure_mode.py +++ b/test/backend/unit/test_espidf_pure_mode.py @@ -166,6 +166,8 @@ class ManagedComponentDetectionTests(unittest.TestCase): '#include "esp_lcd_st77916.h"': 'espressif/esp_lcd_st77916', '#include "esp_lcd_touch_cst816s.h"': 'espressif/esp_lcd_touch_cst816s', '#include "esp_lcd_ek79007.h"': 'espressif/esp_lcd_ek79007', + '#include "lvgl.h"': 'lvgl/lvgl', + '#include "esp_lvgl_port.h"': 'espressif/esp_lvgl_port', } for line, component in cases.items(): with self.subTest(line=line):