Skip to content

Compilation Error in ESPHome 2025.11.0 #19

@mrc1600

Description

@mrc1600

I'm not able to compile the update to 2025.11.0 due to the following error (pasted from my compilation logs)

INFO ESPHome 2025.11.0
INFO Reading configuration /config/apollo-h-1.yaml...
WARNING GPIO9 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Setting CONFIG_LWIP_MAX_SOCKETS to 14 (registered: api=4, captive_portal=4, mdns=2, ota=1, web_server=3)
INFO GPIO binary_sensor 'back_button': Disabling interrupts because pin 4 is shared with other components. The sensor will use polling mode for compatibility with other pin uses.
INFO Compiling app... Build path: /data/build/apollo-h-1
Processing apollo-h-1 (board: esp32-c3-devkitm-1; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.31-2/platform-espressif32.zip)
--------------------------------------------------------------------------------
INFO Package configuration completed successfully
INFO Package configuration completed successfully
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
 - contrib-piohome @ 3.4.4 
 - framework-espidf @ 3.50501.0 (5.5.1) 
 - tool-cmake @ 4.0.3 
 - tool-esp-rom-elfs @ 2024.10.11 
 - tool-esptoolpy @ 5.1.0 
 - tool-mklittlefs @ 3.2.0 
 - tool-ninja @ 1.13.1 
 - tool-scons @ 4.40801.0 (4.8.1) 
 - toolchain-riscv32-esp @ 14.2.0+20241119
Reading CMake configuration...
Dependency Graph
|-- ArduinoJson @ 7.4.2
|-- Improv @ 1.2.4
|-- noise-c @ 0.1.10
Compiling .pioenvs/apollo-h-1/src/main.cpp.o
Archiving .pioenvs/apollo-h-1/esp-idf/espressif__mdns/libespressif__mdns.a
Archiving .pioenvs/apollo-h-1/esp-idf/hal/libhal.a
Compiling .pioenvs/apollo-h-1/heap/tlsf/tlsf.c.o
Compiling .pioenvs/apollo-h-1/heap/port/memory_layout_utils.c.o
Compiling .pioenvs/apollo-h-1/heap/port/esp32c3/memory_layout.c.o
Compiling .pioenvs/apollo-h-1/http_parser/http_parser.c.o
Compiling .pioenvs/apollo-h-1/json/cJSON/cJSON.c.o
Compiling .pioenvs/apollo-h-1/json/cJSON/cJSON_Utils.c.o
Compiling .pioenvs/apollo-h-1/log/src/os/log_timestamp.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_timestamp_common.c.o
Compiling .pioenvs/apollo-h-1/log/src/os/log_lock.c.o
Compiling .pioenvs/apollo-h-1/log/src/buffer/log_buffers.c.o
Compiling .pioenvs/apollo-h-1/log/src/os/util.c.o
Compiling .pioenvs/apollo-h-1/log/src/util.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_format_text.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_print.c.o
Compiling .pioenvs/apollo-h-1/log/src/log.c.o
Compiling .pioenvs/apollo-h-1/log/src/os/log_write.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_level/log_level.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_level/tag_log_level/tag_log_level.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_level/tag_log_level/linked_list/log_linked_list.c.o
Compiling .pioenvs/apollo-h-1/log/src/log_level/tag_log_level/cache/log_binary_heap.c.o
Compiling .pioenvs/apollo-h-1/lwip/apps/sntp/sntp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/api_lib.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/api_msg.c.o
Archiving .pioenvs/apollo-h-1/esp-idf/log/liblog.a
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/err.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/if_api.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/netbuf.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/netdb.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/netifapi.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/sockets.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/api/tcpip.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/apps/sntp/sntp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/apps/netbiosns/netbiosns.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/def.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/dns.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/inet_chksum.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/init.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ip.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/mem.c.o
Archiving .pioenvs/apollo-h-1/esp-idf/heap/libheap.a
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/memp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/netif.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/pbuf.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/raw.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/stats.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/sys.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/tcp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/tcp_in.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/tcp_out.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/timeouts.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/udp.c.o
Archiving .pioenvs/apollo-h-1/esp-idf/json/libjson.a
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/autoip.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/dhcp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/etharp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/icmp.c.o
Archiving .pioenvs/apollo-h-1/esp-idf/http_parser/libhttp_parser.a
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/igmp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/ip4.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/ip4_napt.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/ip4_addr.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv4/ip4_frag.c.o
In file included from src/esphome.h:89,
                 from src/main.cpp:3:
src/esphome/components/rtttl/rtttl.h: In instantiation of 'class esphome::rtttl::PlayAction<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >':
/data/packages/781b96c3/Integrations/ESPHome/Core.yaml:414:74:   required from here
  414 |           blue: 0%
      |                                                                          ^
src/esphome/components/rtttl/rtttl.h:100:8: error: 'void esphome::rtttl::PlayAction<Ts>::play(Ts ...) [with Ts = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]' marked 'override', but does not override
  100 |   void play(Ts... x) override { this->rtttl_->play(this->value_.value(x...)); }
      |        ^~~~
/data/packages/781b96c3/Integrations/ESPHome/Core.yaml: In function 'void setup()':
/data/packages/781b96c3/Integrations/ESPHome/Core.yaml:414:74: error: invalid new-expression of abstract class type 'esphome::rtttl::PlayAction<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
  414 |           blue: 0%
      |                                                                          ^
src/esphome/components/rtttl/rtttl.h:95:32: note:   because the following virtual functions are pure within 'esphome::rtttl::PlayAction<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >':
   95 | template<typename... Ts> class PlayAction : public Action<Ts...> {
      |                                ^~~~~~~~~~
In file included from src/esphome/components/binary_sensor/filter.h:3,
                 from src/esphome/components/binary_sensor/binary_sensor.h:5,
                 from src/esphome/core/application.h:30,
                 from src/esphome/components/api/api_frame_helper.h:13,
                 from src/esphome/components/api/api_connection.h:5,
                 from src/esphome.h:3:
src/esphome/core/automation.h:225:16: note:     'void esphome::Action<Ts>::play(const Ts& ...) [with Ts = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
  225 |   virtual void play(const Ts &...x) = 0;
      |                ^~~~
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/dhcp6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/ethip6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/icmp6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/inet6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/ip6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/ip6_addr.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/ip6_frag.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/mld6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/core/ipv6/nd6.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ethernet.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/bridgeif.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/bridgeif_fdb.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/slipif.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/auth.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/ccp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/chap-md5.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/chap-new.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/chap_ms.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/demand.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/eap.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/ecp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/eui64.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/fsm.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/ipcp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/ipv6cp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/lcp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/magic.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/mppe.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/multilink.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/ppp.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/pppapi.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/pppcrypt.c.o
Compiling .pioenvs/apollo-h-1/lwip/lwip/src/netif/ppp/pppoe.c.o
*** [.pioenvs/apollo-h-1/src/main.cpp.o] Error 1
========================== [FAILED] Took 7.09 seconds ==========================

Of course, not knowing any better, I dumped the above into ChatGPT which believes this to be due to a breaking change from 2025.10.5 to 2025.11.0 regarding the handling of RTTTL and actions. It indicated to me that:

ESPHome changed the Action interface for automations.
rtttl::PlayAction used to implement:
void play(Ts...)
Now ESPHome requires:
void play(const Ts&...)
So the RTTTL component is now missing an override, making it an abstract class, meaning it cannot be instantiated.

Certainly not looking for any sort of immediate fix, but simply wanted to raise awareness. It still works fine on the 2025.10.5 version. Interestingly enough, though, the my Apollo H2 handled the transition to 2025.11.0 just fine, so maybe there is an easy way to incorporate a change into the H1 YAML resources.

Keep up your awesome work. I love what you do and look forward to supporting your charity efforts every year with these fun ornaments.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions