Problems with transitively included libraries

Hey,

So I’ve got this project: GitHub - less-smog/ESP8266-AirQuality which relies on a library which I have written (GitHub - jasiek/metering: An opinionated library for IoT over MQTT), which in turn depends on MQTT @ 2.0.0.

For some reason, during compilation of the dependency, I get told that MQTTMessage is not declared - this is despite there being an include directive specifically including MQTTClient.h from the MQTT library.

Below is the build output.

Any pointers would be highly appreciated.

[Fri Jun 30 22:57:49 2017] Processing nodemcuv2 (platform: espressif8266; lib_deps: ArduinoJson, EspSoftwareSerial, Adafruit NeoPixel, https://github.com/jasiek/Adafruit_HTU21DF_Library.git, https://github.com/jasiek/metering.git#master; build_flags: !echo "-DLOGGING=1 -DGIT_REVISION='\"$(git rev-parse HEAD)\"' -DMQTT_MAX_PACKET_SIZE=1024 -Wl,-Tesp8266.flash.1m64.ld -DMQTT_BUFFER_SIZE=1024 -DMQTT_RECONNECT_DELAY=5000"; board: nodemcuv2; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Library Storage: /Users/jps/github/ESP8266-AirQuality/.piolibdeps
LibraryManager: Installing id=64
ArduinoJson @ 5.11.0 is already installed
LibraryManager: Installing id=168
EspSoftwareSerial @ 00589a3250 is already installed
LibraryManager: Installing id=28
Adafruit NeoPixel @ 1.1.2 is already installed
LibraryManager: Installing Adafruit_HTU21DF_Library
Adafruit HTU21DF Library @ fc9e5c5 is already installed
LibraryManager: Installing metering
Metering @ 3833ff6 is already installed
Installing dependencies
Looking for MQTT library in registry
Found: http://platformio.org/lib/show/617/MQTT
LibraryManager: Installing id=617 @ 2.0.0
MQTT @ 2.0.0 is already installed
Looking for ArduinoJson library in registry
Found: http://platformio.org/lib/show/64/ArduinoJson
LibraryManager: Installing id=64 @ 5.8.2
ArduinoJson @ 5.8.2 is already installed
Looking for ESP8266httpUpdate library in registry
Warning! Library `{u'version': u'1.1', u'name': u'ESP8266httpUpdate'}` has not been found in PlatformIO Registry.
You can ignore this message, if `{u'version': u'1.1', u'name': u'ESP8266httpUpdate'}` is a built-in library (included in framework, SDK). E.g., SPI, Wire, etc.
Looking for ESP8266HTTPClient library in registry
Warning! Library `{u'version': u'1.1', u'name': u'ESP8266HTTPClient'}` has not been found in PlatformIO Registry.
You can ignore this message, if `{u'version': u'1.1', u'name': u'ESP8266HTTPClient'}` is a built-in library (included in framework, SDK). E.g., SPI, Wire, etc.
Collected 30 compatible libraries
Looking for dependencies...
Library Dependency Graph
|-- <ArduinoJson> v5.11.0 (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/ArduinoJson_ID64)
|-- <EspSoftwareSerial> (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/EspSoftwareSerial_ID168)
|-- <Adafruit NeoPixel> v1.1.2 (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/Adafruit NeoPixel_ID28)
|-- <Metering> v0.0.7 (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/Metering)
|   |-- <MQTT> v2.0.0 (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/MQTT_ID617)
|   |-- <ArduinoJson> v5.11.0 (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/ArduinoJson_ID64)
|   |-- <ESP8266httpUpdate> v1.1 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate)
|   |   |-- <ESP8266HTTPClient> v1.1 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient)
|   |   |   |-- <ESP8266WiFi> v1.0 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi)
|   |   |-- <ESP8266WiFi> v1.0 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi)
|   |-- <ESP8266HTTPClient> v1.1 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient)
|   |   |-- <ESP8266WiFi> v1.0 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi)
|   |-- <ESP8266WiFi> v1.0 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi)
|   |-- <Ticker> v1.0 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker)
|-- <Adafruit HTU21DF Library> v1.0.1 (/Users/jps/github/ESP8266-AirQuality/.piolibdeps/Adafruit HTU21DF Library)
|   |-- <Wire> v1.0 (/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/Wire)
xtensa-lx106-elf-g++ -o .pioenvs/nodemcuv2/lib/Metering/network.o -c -fno-rtti -fno-exceptions -std=c++11 -Os -mlongcalls -mtext-section-literals -falign-functions=4 -ffunction-sections -fdata-sections -DARDUINO=20300 -DLWIP_OPEN_SRC -DF_CPU=80000000L -D__ets__ -DICACHE_FLASH -DPLATFORMIO=30401 -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_NODEMCU -DLOGGING=1 -DGIT_REVISION=\"1a887a620cefee15adeeba188f817ba63568c727\" -DMQTT_MAX_PACKET_SIZE=1024 -DMQTT_BUFFER_SIZE=1024 -DMQTT_RECONNECT_DELAY=5000 -U__STRICT_ANSI__ -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip/include -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/cores/esp8266 -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/variants/nodemcu -I.piolibdeps/MQTT_ID617/src -I.piolibdeps/ArduinoJson_ID64/src -I.piolibdeps/Metering/src -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src -I/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker .piolibdeps/Metering/src/network.cpp
Warning! Circular dependencies detected between `/Users/jps/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi` and `/Users/jps/github/ESP8266-AirQualit
y/.piolibdeps/Metering`
.piolibdeps/Metering/src/network.cpp: In function 'void network::send(const char*, const char*, bool)':
.piolibdeps/Metering/src/network.cpp:120:3: error: 'MQTTMessage' was not declared in this scope
MQTTMessage message;
^
.piolibdeps/Metering/src/network.cpp:120:15: error: expected ';' before 'message'
MQTTMessage message;
^
.piolibdeps/Metering/src/network.cpp:121:3: error: 'message' was not declared in this scope
message.topic = (char*)topic;
^
*** [.pioenvs/nodemcuv2/lib/Metering/network.o] Error 1

Are you sure?

Searching 29 files for “MQTTMessage”
0 matches

Sigh.

PEBKAC.

Thanks!

1 Like