feat: introduce esp-idf-configdep as a build optimization

The esp-idf-configdep utility works as a compiler wrapper. It lets the
compiler compile the app and checks whether -MF option was used to
generate dependency files. If yes, it checks for sdkconfig.h dependency
in those files.

Target file depending on sdkconfig.h is then scanned for all CONFIG_*
occurrences and the dependency file is altered so that the given target
file is marked as "dirty" only if the config options it actually uses
are changed.

This ensures that after a configuration update, only affected files are
rebuilt, reducing incremental build times.

The compiler launcher mechanism is changed from RULE_LAUNCH_COMPILE
(Makefile-only) to CMAKE_*_COMPILER_LAUNCHER (generator-agnostic),
enabling launcher chaining (configdep -> ccache -> compiler).

Made-with: Cursor
This commit is contained in:
Jan Beran
2026-06-02 01:26:10 +08:00
committed by BOT
parent 2e2909506f
commit 9522af1d8f
10 changed files with 335 additions and 12 deletions
+157 -11
View File
@@ -65,6 +65,7 @@ NINJA = 'ninja'
IDF_EXE = 'idf-exe'
CCACHE = 'ccache'
DFU_UTIL = 'dfu-util'
ESP_IDF_CONFIGDEP = 'esp-idf-configdep'
def get_version_dict():
@@ -98,6 +99,7 @@ NINJA_VERSION = version_dict[NINJA]
IDF_EXE_VERSION = version_dict[IDF_EXE]
CCACHE_VERSION = version_dict[CCACHE]
DFU_UTIL_VERSION = version_dict[DFU_UTIL]
ESP_IDF_CONFIGDEP_VERSION = version_dict[ESP_IDF_CONFIGDEP]
# There are some complex search patterns to detect download snippets
@@ -383,7 +385,7 @@ class TestUsageUnix(TestUsage):
self.assertIn(f'* {CLANGD}:', output)
self.assertIn(f'- {CLANGD_VERSION} (recommended)', output)
required_tools_installed = 8
required_tools_installed = 9
output = self.run_idf_tools_with_action(['install'])
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
self.assert_tool_installed(output, RISCV_ELF, RISCV_ELF_VERSION, RISCV_ELF_ARCHIVE_PATTERN)
@@ -393,6 +395,7 @@ class TestUsageUnix(TestUsage):
self.assert_tool_installed(output, RISCV_ESP_GDB, RISCV_ESP_GDB_VERSION)
self.assert_tool_installed(output, ESP_ROM_ELFS, ESP_ROM_ELFS_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -406,6 +409,7 @@ class TestUsageUnix(TestUsage):
RISCV_ESP_GDB_VERSION,
ESP_ROM_ELFS_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
@@ -424,6 +428,11 @@ class TestUsageUnix(TestUsage):
)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-rom-elfs/{ESP_ROM_ELFS_VERSION}/', output)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-clangd/{CLANGD_VERSION}/esp-clangd/bin', output)
self.assertIn(
f'{self.temp_tools_dir}/tools/{ESP_IDF_CONFIGDEP}/{ESP_IDF_CONFIGDEP_VERSION}/'
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}/bin',
output,
)
output = self.run_idf_tools_with_action(['list', '--outdated'])
self.assertEqual('', output)
@@ -451,7 +460,7 @@ class TestUsageUnix(TestUsage):
self.assertIn((f'{XTENSA_ELF}: version {XTENSA_ELF_VERSION} is outdated by {new_version}'), output)
def test_tools_for_esp32(self):
required_tools_installed = 6
required_tools_installed = 7
output = self.run_idf_tools_with_action(['install', '--targets=esp32'])
self.assert_tool_installed(output, XTENSA_ELF, XTENSA_ELF_VERSION, XTENSA_ELF_ARCHIVE_PATTERN)
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
@@ -461,6 +470,7 @@ class TestUsageUnix(TestUsage):
self.assert_tool_not_installed(output, RISCV_ESP_GDB, RISCV_ESP_GDB_VERSION)
self.assert_tool_installed(output, ESP_ROM_ELFS, ESP_ROM_ELFS_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -472,6 +482,7 @@ class TestUsageUnix(TestUsage):
XTENSA_ESP_GDB_VERSION,
ESP_ROM_ELFS_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
@@ -490,9 +501,14 @@ class TestUsageUnix(TestUsage):
)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-rom-elfs/{ESP_ROM_ELFS_VERSION}/', output)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-clangd/{CLANGD_VERSION}/esp-clangd/bin', output)
self.assertIn(
f'{self.temp_tools_dir}/tools/{ESP_IDF_CONFIGDEP}/{ESP_IDF_CONFIGDEP_VERSION}/'
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}/bin',
output,
)
def test_tools_for_esp32c3(self):
required_tools_installed = 5
required_tools_installed = 6
output = self.run_idf_tools_with_action(['install', '--targets=esp32c3'])
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
self.assert_tool_installed(output, RISCV_ELF, RISCV_ELF_VERSION, RISCV_ELF_ARCHIVE_PATTERN)
@@ -502,11 +518,18 @@ class TestUsageUnix(TestUsage):
self.assert_tool_not_installed(output, XTENSA_ESP_GDB, XTENSA_ESP_GDB_VERSION)
self.assert_tool_installed(output, ESP_ROM_ELFS, ESP_ROM_ELFS_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
output = self.run_idf_tools_with_action(['check'])
for tool_version in [OPENOCD_VERSION, RISCV_ELF_VERSION, RISCV_ESP_GDB_VERSION, ESP_ROM_ELFS_VERSION]:
for tool_version in [
OPENOCD_VERSION,
RISCV_ELF_VERSION,
RISCV_ESP_GDB_VERSION,
ESP_ROM_ELFS_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
output = self.run_idf_tools_with_action(['export'])
@@ -520,9 +543,14 @@ class TestUsageUnix(TestUsage):
)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-rom-elfs/{ESP_ROM_ELFS_VERSION}/', output)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-clangd/{CLANGD_VERSION}/esp-clangd/bin', output)
self.assertIn(
f'{self.temp_tools_dir}/tools/{ESP_IDF_CONFIGDEP}/{ESP_IDF_CONFIGDEP_VERSION}/'
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}/bin',
output,
)
def test_tools_for_esp32s2(self):
required_tools_installed = 7
required_tools_installed = 8
output = self.run_idf_tools_with_action(['install', '--targets=esp32s2'])
self.assert_tool_installed(output, XTENSA_ELF, XTENSA_ELF_VERSION, XTENSA_ELF_ARCHIVE_PATTERN)
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
@@ -532,11 +560,18 @@ class TestUsageUnix(TestUsage):
self.assert_tool_installed(output, ESP_ROM_ELFS, ESP_ROM_ELFS_VERSION)
self.assert_tool_not_installed(output, RISCV_ESP_GDB, RISCV_ESP_GDB_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
output = self.run_idf_tools_with_action(['check'])
for tool_version in [OPENOCD_VERSION, XTENSA_ELF_VERSION, XTENSA_ESP_GDB_VERSION, ESP_ROM_ELFS_VERSION]:
for tool_version in [
OPENOCD_VERSION,
XTENSA_ELF_VERSION,
XTENSA_ESP_GDB_VERSION,
ESP_ROM_ELFS_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
output = self.run_idf_tools_with_action(['export'])
@@ -554,9 +589,14 @@ class TestUsageUnix(TestUsage):
)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-rom-elfs/{ESP_ROM_ELFS_VERSION}/', output)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-clangd/{CLANGD_VERSION}/esp-clangd/bin', output)
self.assertIn(
f'{self.temp_tools_dir}/tools/{ESP_IDF_CONFIGDEP}/{ESP_IDF_CONFIGDEP_VERSION}/'
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}/bin',
output,
)
def test_tools_for_esp32s3(self):
required_tools_installed = 7
required_tools_installed = 8
output = self.run_idf_tools_with_action(['install', '--targets=esp32s3'])
self.assert_tool_installed(output, XTENSA_ELF, XTENSA_ELF_VERSION, XTENSA_ELF_ARCHIVE_PATTERN)
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
@@ -566,6 +606,7 @@ class TestUsageUnix(TestUsage):
self.assert_tool_installed(output, ESP_ROM_ELFS, ESP_ROM_ELFS_VERSION)
self.assert_tool_not_installed(output, RISCV_ESP_GDB, RISCV_ESP_GDB_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -577,6 +618,7 @@ class TestUsageUnix(TestUsage):
RISCV_ESP_GDB_VERSION,
ESP_ROM_ELFS_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
@@ -595,9 +637,14 @@ class TestUsageUnix(TestUsage):
)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-rom-elfs/{ESP_ROM_ELFS_VERSION}/', output)
self.assertIn(f'{self.temp_tools_dir}/tools/esp-clangd/{CLANGD_VERSION}/esp-clangd/bin', output)
self.assertIn(
f'{self.temp_tools_dir}/tools/{ESP_IDF_CONFIGDEP}/{ESP_IDF_CONFIGDEP_VERSION}/'
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}/bin',
output,
)
def test_tools_for_esp32p4(self):
required_tools_installed = 5
required_tools_installed = 6
output = self.run_idf_tools_with_action(['install', '--targets=esp32p4'])
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
self.assert_tool_installed(output, RISCV_ELF, RISCV_ELF_VERSION, RISCV_ELF_ARCHIVE_PATTERN)
@@ -607,10 +654,17 @@ class TestUsageUnix(TestUsage):
self.assert_tool_not_installed(output, ESP32ULP, ESP32ULP_VERSION)
self.assert_tool_not_installed(output, XTENSA_ESP_GDB, XTENSA_ESP_GDB_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertEqual(required_tools_installed, output.count('Done'))
output = self.run_idf_tools_with_action(['check'])
for tool_version in [OPENOCD_VERSION, RISCV_ELF_VERSION, ESP_ROM_ELFS_VERSION, RISCV_ESP_GDB_VERSION]:
for tool_version in [
OPENOCD_VERSION,
RISCV_ELF_VERSION,
ESP_ROM_ELFS_VERSION,
RISCV_ESP_GDB_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn(f'version installed in tools directory: {tool_version}', output)
output = self.run_idf_tools_with_action(['export'])
@@ -623,6 +677,17 @@ class TestUsageUnix(TestUsage):
os.path.join(self.temp_tools_dir, 'tools', RISCV_ESP_GDB, RISCV_ESP_GDB_VERSION, RISCV_ESP_GDB, 'bin'),
output,
)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
self.assertNotIn(
os.path.join(self.temp_tools_dir, 'tools', ESP32ULP, ESP32ULP_VERSION, ESP32ULP, 'bin'), output
)
@@ -637,7 +702,7 @@ class TestUsageUnix(TestUsage):
# a different test for qemu because of "on_request"
def test_tools_for_qemu_with_required(self):
required_tools_installed = 10
required_tools_installed = 11
output = self.run_idf_tools_with_action(['install', 'required', 'qemu-xtensa', 'qemu-riscv32'])
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
self.assert_tool_installed(output, RISCV_ELF, RISCV_ELF_VERSION, RISCV_ELF_ARCHIVE_PATTERN)
@@ -646,6 +711,7 @@ class TestUsageUnix(TestUsage):
self.assert_tool_installed(output, XTENSA_ESP_GDB, XTENSA_ESP_GDB_VERSION)
self.assert_tool_installed(output, RISCV_ESP_GDB, RISCV_ESP_GDB_VERSION)
self.assert_tool_installed(output, ESP_ROM_ELFS, ESP_ROM_ELFS_VERSION)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assert_tool_installed(output, QEMU_RISCV, QEMU_RISCV_VERSION)
self.assert_tool_installed(output, QEMU_XTENSA, QEMU_XTENSA_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
@@ -675,7 +741,8 @@ class TestUsageWin(TestUsage):
self.assertIn(f'- {XTENSA_ELF_VERSION} (recommended)', output)
self.assertIn(f'* {CLANGD}:', output)
self.assertIn(f'- {CLANGD_VERSION} (recommended)', output)
required_tools_installed = 12
required_tools_installed = 13
output = self.run_idf_tools_with_action(['install'])
self.assert_tool_installed(output, OPENOCD, OPENOCD_VERSION)
self.assert_tool_installed(output, RISCV_ELF, RISCV_ELF_VERSION, RISCV_ELF_ARCHIVE_PATTERN)
@@ -690,6 +757,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_installed(output, CCACHE, CCACHE_VERSION)
self.assert_tool_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -708,6 +776,7 @@ class TestUsageWin(TestUsage):
CCACHE_VERSION,
DFU_UTIL_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
@@ -749,6 +818,17 @@ class TestUsageWin(TestUsage):
os.path.join(self.temp_tools_dir, 'tools', DFU_UTIL, DFU_UTIL_VERSION, 'dfu-util-0.11-win64'), output
)
self.assertIn(os.path.join(self.temp_tools_dir, 'tools', CLANGD, CLANGD_VERSION, CLANGD, 'bin'), output)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
output = self.run_idf_tools_with_action(['list', '--outdated'])
self.assertEqual('', output)
@@ -791,6 +871,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_installed(output, CCACHE, CCACHE_VERSION)
self.assert_tool_not_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -806,6 +887,7 @@ class TestUsageWin(TestUsage):
IDF_EXE_VERSION,
CCACHE_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
self.assertNotIn('version installed in tools directory: ' + DFU_UTIL_VERSION, output)
@@ -856,6 +938,17 @@ class TestUsageWin(TestUsage):
os.path.join(self.temp_tools_dir, 'tools', DFU_UTIL, DFU_UTIL_VERSION, 'dfu-util-0.11-win64'), output
)
self.assertNotIn(os.path.join(self.temp_tools_dir, 'tools', CLANGD, CLANGD_VERSION, CLANGD, 'bin'), output)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
def test_tools_for_esp32c3_win(self):
required_tools_installed = 9
@@ -873,6 +966,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_installed(output, CCACHE, CCACHE_VERSION)
self.assert_tool_not_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -887,6 +981,7 @@ class TestUsageWin(TestUsage):
IDF_EXE_VERSION,
CCACHE_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
self.assertNotIn('version installed in tools directory: ' + DFU_UTIL_VERSION, output)
@@ -931,6 +1026,17 @@ class TestUsageWin(TestUsage):
os.path.join(self.temp_tools_dir, 'tools', DFU_UTIL, DFU_UTIL_VERSION, 'dfu-util-0.11-win64'), output
)
self.assertNotIn(os.path.join(self.temp_tools_dir, 'tools', CLANGD, CLANGD_VERSION, CLANGD, 'bin'), output)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
def test_tools_for_esp32s2_win(self):
required_tools_installed = 12
@@ -948,6 +1054,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_installed(output, CCACHE, CCACHE_VERSION)
self.assert_tool_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -963,6 +1070,7 @@ class TestUsageWin(TestUsage):
IDF_EXE_VERSION,
CCACHE_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
@@ -1012,6 +1120,17 @@ class TestUsageWin(TestUsage):
os.path.join(self.temp_tools_dir, 'tools', DFU_UTIL, DFU_UTIL_VERSION, 'dfu-util-0.11-win64'), output
)
self.assertIn(os.path.join(self.temp_tools_dir, 'tools', CLANGD, CLANGD_VERSION, CLANGD, 'bin'), output)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
def test_tools_for_esp32s3_win(self):
required_tools_installed = 12
@@ -1030,6 +1149,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_installed(output, CCACHE, CCACHE_VERSION)
self.assert_tool_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))
@@ -1046,6 +1166,7 @@ class TestUsageWin(TestUsage):
IDF_EXE_VERSION,
CCACHE_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn('version installed in tools directory: ' + tool_version, output)
@@ -1095,6 +1216,17 @@ class TestUsageWin(TestUsage):
os.path.join(self.temp_tools_dir, 'tools', DFU_UTIL, DFU_UTIL_VERSION, 'dfu-util-0.11-win64'), output
)
self.assertIn(os.path.join(self.temp_tools_dir, 'tools', CLANGD, CLANGD_VERSION, CLANGD, 'bin'), output)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
def test_tools_for_esp32p4_win(self):
required_tools_installed = 9
@@ -1112,6 +1244,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_not_installed(output, XTENSA_ESP_GDB, XTENSA_ESP_GDB_VERSION)
self.assert_tool_not_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertEqual(required_tools_installed, output.count('Done'))
output = self.run_idf_tools_with_action(['check'])
@@ -1125,6 +1258,7 @@ class TestUsageWin(TestUsage):
IDF_EXE_VERSION,
CCACHE_VERSION,
CLANGD_VERSION,
ESP_IDF_CONFIGDEP_VERSION,
]:
self.assertIn(f'version installed in tools directory: {tool_version}', output)
@@ -1144,6 +1278,17 @@ class TestUsageWin(TestUsage):
self.assertIn(
os.path.join(self.temp_tools_dir, 'tools', CCACHE, CCACHE_VERSION, 'ccache-4.12.1-windows-x86_64'), output
)
self.assertIn(
os.path.join(
self.temp_tools_dir,
'tools',
ESP_IDF_CONFIGDEP,
ESP_IDF_CONFIGDEP_VERSION,
f'{ESP_IDF_CONFIGDEP}-{ESP_IDF_CONFIGDEP_VERSION}',
'bin',
),
output,
)
self.assertNotIn(
os.path.join(self.temp_tools_dir, 'tools', XTENSA_ELF, XTENSA_ELF_VERSION, XTENSA_ELF, 'bin'), output
)
@@ -1178,6 +1323,7 @@ class TestUsageWin(TestUsage):
self.assert_tool_installed(output, CCACHE, CCACHE_VERSION)
self.assert_tool_installed(output, DFU_UTIL, DFU_UTIL_VERSION)
self.assert_tool_installed(output, CLANGD, CLANGD_VERSION, CLANGD_ARCHIVE)
self.assert_tool_installed(output, ESP_IDF_CONFIGDEP, ESP_IDF_CONFIGDEP_VERSION)
self.assertIn('Destination: {}'.format(os.path.join(self.temp_tools_dir, 'dist')), output)
self.assertEqual(required_tools_installed, output.count('Done'))