On Sat, 24 May 2025 16:40:01 +0000 Santiago Vila <sanv...@debian.org> wrote:
linking openrgb
/usr/bin/ld: PhilipsHueControllerDetect.o: in function `hueplusplus::ResourceList<hueplusplus::Group, int>::construct(int
const&, nlohmann::json_abi_v3_12_0::basic_json<std::map, std::vector, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator,
nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>
const&, std::integral_constant<bool, true>)':
/usr/include/hueplusplus/ResourceList.h:208:(.text._ZN11hueplusplus12ResourceListINS_5GroupEiE6getAllEv[_ZN11hueplusplus12ResourceListINS_5GroupEiE6getAllEv]+0xb6f):
undefined reference to `hueplusplus::Group::Group(int, hueplusplus::HueCommandAPI const&, std::chrono::duration<long,
std::ratio<1l, 1000000000l> >, nlohmann::json_abi_v3_12_0::basic_json<std::map, std::vector,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double,
std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >,
void> const&)'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:3342: openrgb] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_build: error: make -j2 returned exit code 2
make: *** [debian/rules:11: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Hi,
Looking into it, both openrgb and hueplusplus depend on nlohmann-json3,
where that package has a C++ namespace versioning that includes the full
version.
Example, this symbol after the new upload:
-> nlohmann::json_abi_v3_12_0::adl_serializer
the one compiled in April into both openrgb/hueplusplus would have been:
-> nlohmann::json_abi_v3_11_2::adl_serializer
When sbuild apt-gets libhueplusplus1-dev, it will be the one with
v3_11_2 symbols, while openrgb is being compiled with v3_12_0 symbols
from the new nlohmann-json3.
To avoid this, there is a compile flag in nlohamann-json3 that can be
turned on to avoid ABI versioning. I will switch that on for both
hueplusplus and openrgb.
For the time being, both archive packages are fine to install/run as
they are as long as neither is rebuilt alone.
Thanks for finding this quickly.
--
Regards,
Ahmad