OpenSprinkler Forums Hardware Questions OpenSprinkler Beagle (OSBo) Unable to build Firmware 2.1.9(9) on OSBo Reply To: Unable to build Firmware 2.1.9(9) on OSBo

#73133

noski
Participant

I tried to see if I could figure out a solution myself.

This first issue appeared to be:
E: Unable to locate package libmosquitto-dev

It appears that package isn’t available for the BeagleBone.
When I search, there are packages available with a slightly different name:

ubuntu@arm:~/OpenSprinkler-Firmware$ apt-cache search mosquitto
libmosquitto0 – MQTT version 3.1 client library
libmosquitto0-dev – MQTT version 3.1 client library, development files
libmosquittopp0 – MQTT version 3.1 client C++ library
libmosquittopp0-dev – MQTT version 3.1 client C++ library, development files
mosquitto – MQTT version 3.1 compatible message broker
mosquitto-clients – Mosquitto command line MQTT clients
python-mosquitto – MQTT version 3.1 client library, python bindings

So I tried installing libmosquitto0-dev:
sudo apt-get install libmosquitto0-dev

I thought I was on a winner, but unfortunately now I get a whole new set of errors:

ubuntu@arm:~/OpenSprinkler-Firmware$ sudo ./build.sh osbo
Building OpenSprinkler…
Installing required libraries…
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package libmosquitto-dev
Compiling firmware…
main.cpp: In function ‘void push_message(int, uint32_t, float, const char*)’:
main.cpp:1439:106: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘uint32_t {aka unsigned int}’ [-Wformat=]
sprintf_P(payload, PSTR(“{\”count\”:%lu,\”volume\”:%d.%02d}”), lval, (int)volume/100, (int)volume%100);
^
main.cpp:1442:120: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘uint32_t {aka unsigned int}’ [-Wformat=]
sprintf_P(postval+strlen(postval), PSTR(“Flow count: %lu, volume: %d.%02d”), lval, (int)volume/100, (int)volume%100);
^
mqtt.cpp: In function ‘void _mqtt_connection_cb(mosquitto*, void*, int)’:
mqtt.cpp:314:131: error: invalid conversion from ‘const char*’ to ‘const uint8_t* {aka const unsigned char*}’ [-fpermissive]
int rc = mosquitto_publish(mqtt_client, NULL, MQTT_AVAILABILITY_TOPIC, strlen(MQTT_ONLINE_PAYLOAD), MQTT_ONLINE_PAYLOAD, 0, true);
^
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:395:20: error: initializing argument 5 of ‘int mosquitto_publish(mosquitto*, uint16_t*, const char*, uint32_t, const uint8_t*, int, bool)’ [-fpermissive]
libmosq_EXPORT int mosquitto_publish(struct mosquitto *mosq, uint16_t *mid, const char *topic, uint32_t payloadlen, const uint8_t *payload, int qos, bool retain);
^
mqtt.cpp: In static member function ‘static int OSMqtt::_init()’:
mqtt.cpp:341:46: error: cannot convert ‘bool’ to ‘void*’ for argument ‘2’ to ‘mosquitto* mosquitto_new(const char*, void*)’
mqtt_client = mosquitto_new(“OS”, true, NULL);
^
mqtt.cpp:347:65: error: invalid conversion from ‘void (*)(mosquitto*, void*, int)’ to ‘void (*)(void*, int)’ [-fpermissive]
mosquitto_connect_callback_set(mqtt_client, _mqtt_connection_cb);
^
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:618:21: error: initializing argument 2 of ‘void mosquitto_connect_callback_set(mosquitto*, void (*)(void*, int))’ [-fpermissive]
libmosq_EXPORT void mosquitto_connect_callback_set(struct mosquitto *mosq, void (*on_connect)(void *, int));
^
mqtt.cpp:348:71: error: invalid conversion from ‘void (*)(mosquitto*, void*, int)’ to ‘void (*)(void*)’ [-fpermissive]
mosquitto_disconnect_callback_set(mqtt_client, _mqtt_disconnection_cb);
^
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:634:21: error: initializing argument 2 of ‘void mosquitto_disconnect_callback_set(mosquitto*, void (*)(void*))’ [-fpermissive]
libmosq_EXPORT void mosquitto_disconnect_callback_set(struct mosquitto *mosq, void (*on_disconnect)(void *));
^
mqtt.cpp:349:54: error: ‘mosquitto_log_callback_set’ was not declared in this scope
mosquitto_log_callback_set(mqtt_client, _mqtt_log_cb);
^
mqtt.cpp:350:118: error: invalid conversion from ‘size_t {aka unsigned int}’ to ‘const char*’ [-fpermissive]
mosquitto_will_set(mqtt_client, MQTT_AVAILABILITY_TOPIC, strlen(MQTT_OFFLINE_PAYLOAD), MQTT_OFFLINE_PAYLOAD, 0, true);
^
mqtt.cpp:350:118: error: invalid conversion from ‘const char*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
mqtt.cpp:350:118: error: too few arguments to function ‘int mosquitto_will_set(mosquitto*, bool, const char*, uint32_t, const uint8_t*, int, bool)’
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:268:20: note: declared here
libmosq_EXPORT int mosquitto_will_set(struct mosquitto *mosq, bool will, const char *topic, uint32_t payloadlen, const uint8_t *payload, int qos, bool retain);
^
mqtt.cpp: In static member function ‘static int OSMqtt::_connect()’:
mqtt.cpp:364:66: error: too few arguments to function ‘int mosquitto_connect(mosquitto*, const char*, int, int, bool)’
rc = mosquitto_connect(mqtt_client, _host, _port, MQTT_KEEPALIVE);
^
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:322:20: note: declared here
libmosq_EXPORT int mosquitto_connect(struct mosquitto *mosq, const char *host, int port, int keepalive, bool clean_session);
^
mqtt.cpp: In static member function ‘static int OSMqtt::_publish(const char*, const char*)’:
mqtt.cpp:385:89: error: invalid conversion from ‘const char*’ to ‘const uint8_t* {aka const unsigned char*}’ [-fpermissive]
int rc = mosquitto_publish(mqtt_client, NULL, topic, strlen(payload), payload, 0, false);
^
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:395:20: error: initializing argument 5 of ‘int mosquitto_publish(mosquitto*, uint16_t*, const char*, uint32_t, const uint8_t*, int, bool)’ [-fpermissive]
libmosq_EXPORT int mosquitto_publish(struct mosquitto *mosq, uint16_t *mid, const char *topic, uint32_t payloadlen, const uint8_t *payload, int qos, bool retain);
^
mqtt.cpp: In static member function ‘static int OSMqtt::_loop()’:
mqtt.cpp:394:42: error: too many arguments to function ‘int mosquitto_loop(mosquitto*, int)’
return mosquitto_loop(mqtt_client, 0 , 1);
^
In file included from mqtt.cpp:37:0:
/usr/include/mosquitto.h:503:20: note: declared here
libmosq_EXPORT int mosquitto_loop(struct mosquitto *mosq, int timeout);
^
mqtt.cpp: In static member function ‘static const char* OSMqtt::_state_string(int)’:
mqtt.cpp:398:33: error: ‘mosquitto_strerror’ was not declared in this scope
return mosquitto_strerror(error);
^
Done!

And so I am stuck again 🙁