ola icon indicating copy to clipboard operation
ola copied to clipboard

build error: OSCNode.cpp:153:28: error: cannot convert 'lo_arg*' to 'lo_blob' {aka 'lo_blob_*'} in initialization

Open topas-rec opened this issue 1 year ago • 5 comments

I get

plugins/osc/OSCNode.cpp: In function 'int ola::plugin::osc::OSCDataHandler(const char*, const char*, lo_arg**, int, void*, void*)':
plugins/osc/OSCNode.cpp:153:28: error: cannot convert 'lo_arg*' to 'lo_blob' {aka 'lo_blob_*'} in initialization
  153 |       lo_blob blob = argv[0];
      |                      ~~~~~~^
      |                            |
      |                            lo_arg*
plugins/osc/OSCNode.cpp: In member function 'bool ola::plugin::osc::OSCNode::Init()':
plugins/osc/OSCNode.cpp:266:50: error: invalid conversion from 'int (*)(const char*, const char*, lo_arg**, int, void*, void*)' to 'lo_method_handler' {aka 'int (*)(const char*, const char*, lo_arg**, int, lo_message_*, void*)'} [-fpermissive]
  266 |   lo_server_add_method(m_osc_server, NULL, NULL, OSCDataHandler, this);
      |                                                  ^~~~~~~~~~~~~~
      |                                                  |
      |                                                  int (*)(const char*, const char*, lo_arg**, int, void*, void*)
In file included from /usr/include/lo/lo.h:32,
                 from ./plugins/osc/OSCNode.h:24:
/usr/include/lo/lo_lowlevel.h:876:72: note:   initializing argument 4 of 'lo_method_* lo_server_add_method(lo_server, const char*, const char*, lo_method_handler, const void*)'
  876 |                                const char *typespec, lo_method_handler h,
      |                                                      ~~~~~~~~~~~~~~~~~~^
make[2]: *** [Makefile:12250: plugins/osc/libolaoscnode_la-OSCNode.lo] Error 1
make[2]: Leaving directory '/home/tobiasb/.cache/rua/build/ola/src/ola-0.10.9'
make[1]: *** [Makefile:16480: all-recursive] Error 1
make[1]: Leaving directory '/home/tobiasb/.cache/rua/build/ola/src/ola-0.10.9'
make: *** [Makefile:7553: all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

during the build. Is someone else having this, too?

topas-rec avatar Mar 27 '24 06:03 topas-rec

Hi, thanks for reporting. Could we please get some more info on your environment? Which version of OLA are you trying to compile? With which version of gcc and libc? Thanks :)

kripton avatar Mar 27 '24 20:03 kripton

Alright, I just saw https://github.com/osam-cologne/archlinux-proaudio/pull/396. @cbix, is there something that broke compatibility on liblo that we should consider?

kripton avatar Mar 27 '24 20:03 kripton

@kripton yes, the liblo 0.32 update (first release in 4 years) apparently includes breaking changes in the header.

cbix avatar Mar 27 '24 21:03 cbix

Generally a config.log helps, but as @kripton says @cbix has found the cause.

If you just need to get going in the short term and don't need OSC, you should be able to just --disable-osc during configure and it will build everything but the OSC plugin.

Specifically it seems to be this commit: https://github.com/johnty/liblo/commit/2c1ef1c682e01aabec511223b52d9d845063d6dc

From what I can see, the library ABI version is still liblo7, so if we need two different codepaths, we'll have to detect the library's numeric version and work from there to work around this behaviour.

peternewman avatar Mar 27 '24 23:03 peternewman

Config log is here: config.log

edit: ~~I am checking~~ --disable-osc works around the issue - thanks for that hint.

topas-rec avatar Mar 28 '24 06:03 topas-rec