From 3e58ee21304082fce8ca37cf40ffcb596682a58c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Fri, 1 Sep 2023 10:13:00 +1200 Subject: [PATCH] Allow patching esp-idf with esp-adf files --- esphome/components/esp_adf/__init__.py | 12 ++++++++++ .../esp_adf/apply_adf_patches.py.script | 23 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 esphome/components/esp_adf/apply_adf_patches.py.script diff --git a/esphome/components/esp_adf/__init__.py b/esphome/components/esp_adf/__init__.py index bfe524c1cd..bff7753657 100644 --- a/esphome/components/esp_adf/__init__.py +++ b/esphome/components/esp_adf/__init__.py @@ -1,3 +1,5 @@ +import os + import esphome.config_validation as cv import esphome.codegen as cg @@ -59,3 +61,13 @@ async def to_code(config): "board_build.embed_txtfiles", "components/dueros_service/duer_profile" ) esp32.add_idf_sdkconfig_option(SUPPORTED_BOARDS[esp32.get_board()], True) + + esp32.add_extra_script( + "pre", + "apply_adf_patches.py", + os.path.join(os.path.dirname(__file__), "apply_adf_patches.py.script"), + ) + esp32.add_extra_build_file( + "esp_adf_patches/idf_v4.4_freertos.patch", + "https://github.com/espressif/esp-adf/raw/v2.5/idf_patches/idf_v4.4_freertos.patch", + ) diff --git a/esphome/components/esp_adf/apply_adf_patches.py.script b/esphome/components/esp_adf/apply_adf_patches.py.script new file mode 100644 index 0000000000..736a7fb219 --- /dev/null +++ b/esphome/components/esp_adf/apply_adf_patches.py.script @@ -0,0 +1,23 @@ +from os.path import join, isfile + +Import("env") + +FRAMEWORK_DIR = env.PioPlatform().get_package_dir("framework-espidf") +patchflag_path = join(FRAMEWORK_DIR, ".adf-patching-done") + +PROJECT_DIR = env.get('PROJECT_DIR') + +PATCH_FILE = join(PROJECT_DIR, "esp_adf_patches", "idf_v4.4_freertos.patch") + +# patch file only if we didn't do it before +if not isfile(patchflag_path): + print(PATCH_FILE) + assert isfile(PATCH_FILE) + + env.Execute("patch -p1 -d %s -i %s" % (FRAMEWORK_DIR, PATCH_FILE)) + + def _touch(path): + with open(path, "w") as fp: + fp.write("") + + env.Execute(lambda *args, **kwargs: _touch(patchflag_path))