From 156d89c61dfcdf39444990b9043393fc17301b4b Mon Sep 17 00:00:00 2001 From: David Montero Date: Mon, 4 May 2026 15:41:53 +0200 Subject: [PATCH] fix(espidf): include non-utility subdirs for libs without src/ layout The _should_include filter inside _merge_arduino_libs_to_component rejected every subdirectory of a library except 'utility/' when the library lacked a src/ layout. That blocked legitimate header dirs like Adafruit_GFX_Library/Fonts/, breaking compiles that use any GxEPD2 example with a custom font (#include ). The earlier filter at the top of the function already excludes docs/examples/tests/etc. via excluded_dirs, so anything that survives that check is presumed to be buildable source. Letting all remaining subdirs through restores Fonts/, gfxfont/, and similar conventional auxiliary header directories that Adafruit-style libs rely on. Co-Authored-By: Claude Opus 4.7 (1M context) --- backend/app/services/espidf_compiler.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/app/services/espidf_compiler.py b/backend/app/services/espidf_compiler.py index b17e4e9f..af104e17 100644 --- a/backend/app/services/espidf_compiler.py +++ b/backend/app/services/espidf_compiler.py @@ -473,7 +473,11 @@ class ESPIDFCompiler: return False if has_src_layout: return parts[0] == 'src' or len(parts) == 1 - return len(parts) == 1 or parts[0].lower() == 'utility' + # Non-src-layout libs (Adafruit_GFX, etc.) keep auxiliary + # headers in subdirs like Fonts/ or gfxfont/. Anything not + # already excluded (docs/examples/tests handled above) is + # presumed to be buildable source. + return True for f in lib_root.rglob('*'): if not f.is_file():