fix: patch nimconfig.h with #ifndef guards for ROLE defines to eliminate redefinition warnings

This commit is contained in:
ash
2026-06-30 07:15:14 +00:00
parent 323bc072ee
commit 6a737bcee2
+62 -1
View File
@@ -100,5 +100,66 @@ def patch_sdkconfig_bt():
print("BLE/NimBLE already configured in sdkconfig") print("BLE/NimBLE already configured in sdkconfig")
def patch_nimconfig():
# Find nimconfig.h in the NimBLE-Arduino library
search_dirs = [
os.path.join(os.getcwd(), ".pio", "libdeps"),
os.path.expanduser("~/.platformio/lib"),
]
for env_dir in ["esp32s3", ""]:
candidate = os.path.join(
os.getcwd(), ".pio", "libdeps",
env_dir, "NimBLE-Arduino", "src", "nimconfig.h"
) if env_dir else ""
if candidate and os.path.exists(candidate):
nimconfig_path = candidate
break
else:
# Walk search dirs as fallback
nimconfig_path = None
for base in search_dirs:
if not os.path.exists(base):
continue
for root, _dirs, files in os.walk(base):
if "nimconfig.h" in files:
nimconfig_path = os.path.join(root, "nimconfig.h")
break
if nimconfig_path:
break
if not nimconfig_path:
print("WARNING: nimconfig.h not found, skipping ROLE define patch")
return
print(f"Patching {nimconfig_path} with #ifndef guards for ROLE defines")
with open(nimconfig_path, 'r') as f:
content = f.read()
for role in ["CENTRAL", "OBSERVER", "PERIPHERAL", "BROADCASTER"]:
pattern = re.compile(
'#ifndef CONFIG_BT_NIMBLE_ROLE_' + role + '_DISABLED\n'
'#define CONFIG_BT_NIMBLE_ROLE_' + role + '\n'
'#endif'
)
replacement = (
'#ifndef CONFIG_BT_NIMBLE_ROLE_' + role + '_DISABLED\n'
'#ifndef CONFIG_BT_NIMBLE_ROLE_' + role + '\n'
'#define CONFIG_BT_NIMBLE_ROLE_' + role + '\n'
'#endif\n'
'#endif'
)
if pattern.search(content):
content = pattern.sub(replacement, content)
print(f" Guarded CONFIG_BT_NIMBLE_ROLE_{role}")
else:
print(f" NOTE: CONFIG_BT_NIMBLE_ROLE_{role} pattern not found (may already be guarded)")
with open(nimconfig_path, 'w') as f:
f.write(content)
print("nimconfig.h patched successfully")
patch_usb_ids() patch_usb_ids()
patch_sdkconfig_bt() patch_sdkconfig_bt()
patch_nimconfig()