esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 34 forks source link

ESP8266 - fastled_clockless compile errors with ESPHome version v2023.4.2 #4469

Closed jsuanet closed 1 year ago

jsuanet commented 1 year ago

The problem

When compiling an ESP8266 device using the fastled_clockless component I got compilation errors.

Which version of ESPHome has the issue?

v2023.4.2

What type of installation are you using?

Docker

Which version of Home Assistant has the issue?

No response

What platform are you using?

ESP8266

Board

D1_mini

Component causing the issue

fastled_clockless in combination with entity_base

Example YAML snippet

esphome:
  name: test-8266

esp8266:
  board: d1_mini
  framework:
    version: 2.7.4

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

ota:
  password: !secret ota_password

logger:
  level: DEBUG

light:
  - platform: fastled_clockless
    chipset: WS2813
    pin: D5
    num_leds: 60
    rgb_order: GRB
    default_transition_length: 50ms
    id: my_led
    name: "Led-strip"

Anything in the logs that might be useful for us?

-> esphome-yaml esphome compile test-8266.yaml
INFO Reading configuration test-8266.yaml...
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
INFO Generating C++ source...
INFO Compiling app...
**********************************************************************************************************************************************************************************************
Obsolete PIO Core v6.1.5 is used (previous was 6.1.6a4)
Please remove multiple PIO Cores from a system:
https://docs.platformio.org/en/latest/core/installation/troubleshooting.html
**********************************************************************************************************************************************************************************************
Processing test-8266 (board: d1_mini; framework: arduino; platform: platformio/espressif8266@2.6.3)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Library Manager: Installing fastled/FastLED @ 3.3.2
INFO Installing fastled/FastLED @ 3.3.2
Unpacking  [####################################]  100%
Library Manager: FastLED@3.3.2 has been installed!
INFO FastLED@3.3.2 has been installed!
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
Dependency Graph
|-- ESP8266WiFi @ 1.0
|-- ESP8266mDNS @ 1.2
|-- FastLED @ 3.3.2
Compiling .pioenvs/test-8266/libb00/FastLED/FastLED.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/bitswap.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/colorpalettes.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/colorutils.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/hsv2rgb.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/lib8tion.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/noise.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/platforms.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/power_mgt.cpp.o
Compiling .pioenvs/test-8266/libb00/FastLED/wiring.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/esp8266/core.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/esp8266/gpio.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/esp8266/preferences.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/fastled_base/fastled_light.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/addressable_light.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/automation.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/esp_color_correction.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/esp_hsv_color.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/esp_range_view.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/light_call.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/light_json_schema.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/light_output.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/light/light_state.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/logger/logger.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/md5/md5.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/mdns/mdns_component.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/mdns/mdns_esp32.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/mdns/mdns_rp2040.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/network/util.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/ota/ota_backend_arduino_esp32.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/ota/ota_backend_arduino_esp8266.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/ota/ota_backend_arduino_rp2040.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/ota/ota_backend_esp_idf.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/ota/ota_component.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/socket/bsd_sockets_impl.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/socket/socket.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/wifi/wifi_component.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/wifi/wifi_component_esp32_arduino.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/wifi/wifi_component_esp_idf.cpp.o
Compiling .pioenvs/test-8266/src/esphome/components/wifi/wifi_component_pico_w.cpp.o
Compiling .pioenvs/test-8266/src/esphome/core/application.cpp.o
Compiling .pioenvs/test-8266/src/esphome/core/color.cpp.o
Compiling .pioenvs/test-8266/src/esphome/core/component.cpp.o
Compiling .pioenvs/test-8266/src/esphome/core/component_iterator.cpp.o
Compiling .pioenvs/test-8266/src/esphome/core/controller.cpp.o
Compiling .pioenvs/test-8266/src/esphome/core/entity_base.cpp.o
In file included from src/esphome/core/entity_base.h:5:0,
                 from src/esphome/core/entity_base.cpp:1:
src/esphome/core/string_ref.h:25:21: error: expected type-specifier
   using size_type = std::allocator_traits<allocator_type>::size_type;
                     ^
src/esphome/core/string_ref.h:26:27: error: expected type-specifier
   using difference_type = std::allocator_traits<allocator_type>::difference_type;
                           ^
src/esphome/core/string_ref.h:68:13: error: 'size_type' does not name a type
   constexpr size_type size() const { return len_; }
             ^
src/esphome/core/string_ref.h:70:40: error: 'size_type' has not been declared
   constexpr const_reference operator[](size_type pos) const { return *(base_ + pos); }
                                        ^
src/esphome/core/string_ref.h:79:3: error: 'size_type' does not name a type
   size_type len_;
   ^
src/esphome/core/string_ref.h: In constructor 'constexpr esphome::StringRef::StringRef()':
src/esphome/core/string_ref.h:32:38: error: class 'esphome::StringRef' does not have any field named 'len_'
   constexpr StringRef() : base_(""), len_(0) {}
                                      ^
src/esphome/core/string_ref.h: In constructor 'esphome::StringRef::StringRef(const string&)':
src/esphome/core/string_ref.h:33:64: error: class 'esphome::StringRef' does not have any field named 'len_'
   explicit StringRef(const std::string &s) : base_(s.c_str()), len_(s.size()) {}
                                                                ^
src/esphome/core/string_ref.h: In constructor 'esphome::StringRef::StringRef(const char*)':
src/esphome/core/string_ref.h:34:49: error: class 'esphome::StringRef' does not have any field named 'len_'
   explicit StringRef(const char *s) : base_(s), len_(strlen(s)) {}
                                                 ^
src/esphome/core/string_ref.h: In constructor 'constexpr esphome::StringRef::StringRef(const char*, size_t)':
src/esphome/core/string_ref.h:35:60: error: class 'esphome::StringRef' does not have any field named 'len_'
   constexpr StringRef(const char *s, size_t n) : base_(s), len_(n) {}
                                                            ^
src/esphome/core/string_ref.h: In constructor 'constexpr esphome::StringRef::StringRef(const CharT*, size_t)':
src/esphome/core/string_ref.h:37:93: error: class 'esphome::StringRef' does not have any field named 'len_'
   constexpr StringRef(const CharT *s, size_t n) : base_(reinterpret_cast<const char *>(s)), len_(n) {}
                                                                                             ^
src/esphome/core/string_ref.h: In constructor 'esphome::StringRef::StringRef(InputIt, InputIt)':
src/esphome/core/string_ref.h:40:57: error: class 'esphome::StringRef' does not have any field named 'len_'
       : base_(reinterpret_cast<const char *>(&*first)), len_(std::distance(first, last)) {}
                                                         ^
src/esphome/core/string_ref.h: In constructor 'esphome::StringRef::StringRef(InputIt*, InputIt*)':
src/esphome/core/string_ref.h:43:55: error: class 'esphome::StringRef' does not have any field named 'len_'
       : base_(reinterpret_cast<const char *>(first)), len_(std::distance(first, last)) {}
                                                       ^
src/esphome/core/string_ref.h: In member function 'constexpr const value_type* esphome::StringRef::end() const':
src/esphome/core/string_ref.h:58:57: error: 'len_' was not declared in this scope
   constexpr const_iterator end() const { return base_ + len_; };
                                                         ^
src/esphome/core/string_ref.h:58:63: error: body of constexpr function 'constexpr const value_type* esphome::StringRef::end() const' not a return-statement
   constexpr const_iterator end() const { return base_ + len_; };
                                                               ^
src/esphome/core/string_ref.h: In member function 'constexpr const value_type* esphome::StringRef::cend() const':
src/esphome/core/string_ref.h:59:58: error: 'len_' was not declared in this scope
   constexpr const_iterator cend() const { return base_ + len_; };
                                                          ^
src/esphome/core/string_ref.h:59:64: error: body of constexpr function 'constexpr const value_type* esphome::StringRef::cend() const' not a return-statement
   constexpr const_iterator cend() const { return base_ + len_; };
                                                                ^
src/esphome/core/string_ref.h: In member function 'esphome::StringRef::const_reverse_iterator esphome::StringRef::rbegin() const':
src/esphome/core/string_ref.h:61:81: error: 'len_' was not declared in this scope
   const_reverse_iterator rbegin() const { return const_reverse_iterator{base_ + len_}; }
                                                                                 ^
src/esphome/core/string_ref.h:61:85: error: no matching function for call to 'std::reverse_iterator<const char*>::reverse_iterator(<brace-enclosed initializer list>)'
   const_reverse_iterator rbegin() const { return const_reverse_iterator{base_ + len_}; }
                                                                                     ^
src/esphome/core/string_ref.h:61:85: note: candidates are:
In file included from /Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_algobase.h:67:0,
                 from /Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/char_traits.h:39,
                 from /Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/string:40,
                 from src/esphome/core/entity_base.h:3,
                 from src/esphome/core/entity_base.cpp:1:
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:139:9: note: template<class _Iter> std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iter>&)
         reverse_iterator(const reverse_iterator<_Iter>& __x)
         ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:139:9: note:   template argument deduction/substitution failed:
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:131:7: note: std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iterator>&) [with _Iterator = const char*]
       reverse_iterator(const reverse_iterator& __x)
       ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:131:7: note:   no known conversion for argument 1 from '<type error>' to 'const std::reverse_iterator<const char*>&'
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:126:7: note: std::reverse_iterator<_Iterator>::reverse_iterator(std::reverse_iterator<_Iterator>::iterator_type) [with _Iterator = const char*; std::reverse_iterator<_Iterator>::iterator_type = const char*]
       reverse_iterator(iterator_type __x) : current(__x) { }
       ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:126:7: note:   no known conversion for argument 1 from '<type error>' to 'std::reverse_iterator<const char*>::iterator_type {aka const char*}'
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:120:7: note: std::reverse_iterator<_Iterator>::reverse_iterator() [with _Iterator = const char*]
       reverse_iterator() : current() { }
       ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:120:7: note:   candidate expects 0 arguments, 1 provided
In file included from src/esphome/core/entity_base.h:5:0,
                 from src/esphome/core/entity_base.cpp:1:
src/esphome/core/string_ref.h: In member function 'esphome::StringRef::const_reverse_iterator esphome::StringRef::crbegin() const':
src/esphome/core/string_ref.h:62:82: error: 'len_' was not declared in this scope
   const_reverse_iterator crbegin() const { return const_reverse_iterator{base_ + len_}; }
                                                                                  ^
src/esphome/core/string_ref.h:62:86: error: no matching function for call to 'std::reverse_iterator<const char*>::reverse_iterator(<brace-enclosed initializer list>)'
   const_reverse_iterator crbegin() const { return const_reverse_iterator{base_ + len_}; }
                                                                                      ^
src/esphome/core/string_ref.h:62:86: note: candidates are:
In file included from /Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_algobase.h:67:0,
                 from /Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/char_traits.h:39,
                 from /Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/string:40,
                 from src/esphome/core/entity_base.h:3,
                 from src/esphome/core/entity_base.cpp:1:
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:139:9: note: template<class _Iter> std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iter>&)
         reverse_iterator(const reverse_iterator<_Iter>& __x)
         ^
Compiling .pioenvs/test-8266/src/esphome/core/helpers.cpp.o
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:139:9: note:   template argument deduction/substitution failed:
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:131:7: note: std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iterator>&) [with _Iterator = const char*]
       reverse_iterator(const reverse_iterator& __x)
       ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:131:7: note:   no known conversion for argument 1 from '<type error>' to 'const std::reverse_iterator<const char*>&'
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:126:7: note: std::reverse_iterator<_Iterator>::reverse_iterator(std::reverse_iterator<_Iterator>::iterator_type) [with _Iterator = const char*; std::reverse_iterator<_Iterator>::iterator_type = const char*]
       reverse_iterator(iterator_type __x) : current(__x) { }
       ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:126:7: note:   no known conversion for argument 1 from '<type error>' to 'std::reverse_iterator<const char*>::iterator_type {aka const char*}'
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:120:7: note: std::reverse_iterator<_Iterator>::reverse_iterator() [with _Iterator = const char*]
       reverse_iterator() : current() { }
       ^
/Users/JSuanet/.platformio/packages/toolchain-xtensa@2.40802.200502/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_iterator.h:120:7: note:   candidate expects 0 arguments, 1 provided
In file included from src/esphome/core/entity_base.h:5:0,
                 from src/esphome/core/entity_base.cpp:1:
src/esphome/core/string_ref.h: In member function 'constexpr bool esphome::StringRef::empty() const':
src/esphome/core/string_ref.h:69:41: error: 'len_' was not declared in this scope
   constexpr bool empty() const { return len_ == 0; }
                                         ^
src/esphome/core/string_ref.h:69:52: error: body of constexpr function 'constexpr bool esphome::StringRef::empty() const' not a return-statement
   constexpr bool empty() const { return len_ == 0; }
                                                    ^
src/esphome/core/string_ref.h: In member function 'std::string esphome::StringRef::str() const':
src/esphome/core/string_ref.h:72:55: error: 'len_' was not declared in this scope
   std::string str() const { return std::string(base_, len_); }
                                                       ^
src/esphome/core/string_ref.h: In function 'bool esphome::operator==(const esphome::StringRef&, const esphome::StringRef&)':
src/esphome/core/string_ref.h:83:14: error: 'const class esphome::StringRef' has no member named 'size'
   return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs));
              ^
src/esphome/core/string_ref.h:83:28: error: 'const class esphome::StringRef' has no member named 'size'
   return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs));
                            ^
src/esphome/core/string_ref.h: In function 'bool esphome::operator==(const esphome::StringRef&, const string&)':
src/esphome/core/string_ref.h:87:14: error: 'const class esphome::StringRef' has no member named 'size'
   return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs));
              ^
src/esphome/core/string_ref.h: In function 'bool esphome::operator==(const esphome::StringRef&, const char*)':
src/esphome/core/string_ref.h:93:14: error: 'const class esphome::StringRef' has no member named 'size'
   return lhs.size() == strlen(rhs) && std::equal(std::begin(lhs), std::end(lhs), rhs);
              ^
src/esphome/core/string_ref.h: In function 'std::string& esphome::operator+=(std::string&, const esphome::StringRef&)':
src/esphome/core/string_ref.h:113:31: error: 'const class esphome::StringRef' has no member named 'size'
   lhs.append(rhs.c_str(), rhs.size());
                               ^
src/esphome/core/string_ref.h: In function 'std::string esphome::operator+(const char*, const esphome::StringRef&)':
src/esphome/core/string_ref.h:119:31: error: 'const class esphome::StringRef' has no member named 'size'
   str.append(rhs.c_str(), rhs.size());
                               ^
Compiling .pioenvs/test-8266/src/esphome/core/log.cpp.o
src/esphome/core/string_ref.h: In member function 'constexpr bool esphome::StringRef::empty() const':
src/esphome/core/string_ref.h:69:52: warning: control reaches end of non-void function [-Wreturn-type]
   constexpr bool empty() const { return len_ == 0; }
                                                    ^
At global scope:
cc1plus: warning: unrecognized command line option "-Wno-nonnull-compare" [enabled by default]
*** [.pioenvs/test-8266/src/esphome/core/entity_base.cpp.o] Error 1
Compiling .pioenvs/test-8266/src/esphome/core/scheduler.cpp.o
================================================================================= [FAILED] Took 9.12 seconds =================================================================================

Additional information

No response

anisite commented 1 year ago

Same here !

NiamoR42 commented 1 year ago

Same on my side

ssieb commented 1 year ago

Duplicate of https://github.com/esphome/issues/issues/4449

ssieb commented 1 year ago

This is temporarily fixed in the latest point release that is just coming out.

ssieb commented 1 year ago

https://github.com/esphome/esphome/pull/4777

jsuanet commented 1 year ago

👍