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

Reply via email to