From 998337e3b16551ad2380fbb143846568a2caf668 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 17 Apr 2026 16:50:01 -0500 Subject: [PATCH] [bme680_bsec] [bme68x_bsec2] Mark the two BSEC variants as mutually exclusive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit \`bme680_bsec\` pulls in the BSEC v1 library (single-instance API: \`bsec_init\`, \`bsec_set_configuration\`, …) and \`bme68x_bsec2\` pulls in the BSEC v2 library (multi-instance API: \`bsec_init_m\`, \`bsec_set_configuration_m\`, …). The two libraries export different symbol sets and can't coexist in one firmware image — linking them together currently fails with undefined references to the \`*_m\` symbols. This manifests in CI when the test-component grouping logic merges \`bme680_bsec\` and \`bme68x_bsec2_i2c\` into a single build. Declare \`CONFLICTS_WITH\` on both components so the config validator rejects the combination at config time with a clear message instead of leaving users to decode a linker failure. --- esphome/components/bme680_bsec/__init__.py | 1 + esphome/components/bme68x_bsec2/__init__.py | 1 + 2 files changed, 2 insertions(+) diff --git a/esphome/components/bme680_bsec/__init__.py b/esphome/components/bme680_bsec/__init__.py index a86e061cd4e..2365f8d1073 100644 --- a/esphome/components/bme680_bsec/__init__.py +++ b/esphome/components/bme680_bsec/__init__.py @@ -6,6 +6,7 @@ from esphome.const import CONF_ID, CONF_SAMPLE_RATE, CONF_TEMPERATURE_OFFSET, Fr CODEOWNERS = ["@trvrnrth"] DEPENDENCIES = ["i2c"] AUTO_LOAD = ["sensor", "text_sensor"] +CONFLICTS_WITH = ["bme68x_bsec2"] MULTI_CONF = True CONF_BME680_BSEC_ID = "bme680_bsec_id" diff --git a/esphome/components/bme68x_bsec2/__init__.py b/esphome/components/bme68x_bsec2/__init__.py index b56217fac18..5083d283ef3 100644 --- a/esphome/components/bme68x_bsec2/__init__.py +++ b/esphome/components/bme68x_bsec2/__init__.py @@ -13,6 +13,7 @@ from esphome.const import ( ) CODEOWNERS = ["@neffs", "@kbx81"] +CONFLICTS_WITH = ["bme680_bsec"] DOMAIN = "bme68x_bsec2"