What | Removed | Added |
---|---|---|
Priority | P5 - None | P3 - Medium |
CC | dfaggioli@suse.com |
Hey, I'm having a problem that seems related to this (i.e., to cepth and GCC12). I'll post some details here. Let me know if it's ok, or if I shall better open a fresh ticket. So, here's the thing: QEMU can be build with ceph/librbd support, and that was just working. Recently, QEMU's configure script It's failing like this, on ppc64le only: > [ 111s] Has header "rbd/librbd.h" : YES > [ 111s] Library rbd found: YES > [ 111s] > [ 111s] ../meson.build:880:6: ERROR: Problem encountered: librbd >= 1.12.0 required It seems like a problem with versions of the library, but it isn't (and indeed the error message could be improved!). In fact, the libraries are there, and in high enough version (you can check in any buildlog: https://build.opensuse.org/package/show/Virtualization/qemu). The checks that leads to that error, within the QEMU build system, is: > rbd = not_found > if not get_option('rbd').auto() or have_block > librados = cc.find_library('rados', required: get_option('rbd'), > kwargs: static_kwargs) > librbd = cc.find_library('rbd', has_headers: ['rbd/librbd.h'], > required: get_option('rbd'), > kwargs: static_kwargs) > if librados.found() and librbd.found() > if cc.links(''' > #include <stdio.h> > #include <rbd/librbd.h> > int main(void) { > rados_t cluster; > rados_create(&cluster, NULL); > #if LIBRBD_VERSION_CODE < LIBRBD_VERSION(1, 12, 0) > #error > #endif > return 0; > }''', dependencies: [librbd, librados]) > rbd = declare_dependency(dependencies: [librbd, librados]) > elif get_option('rbd').enabled() > error('librbd >= 1.12.0 required') > else > warning('librbd >= 1.12.0 not found, disabling') > endif > endif > endif I've tried to reproduce the problem, externally to the build system itself, and it turns out that compiling the test programs fails like this: > $ cc rados.c -lrbd -lrados > /usr/lib64/gcc/powerpc64le-suse-linux/12/../../../../powerpc64le-suse-linux/bin/ld: /usr/lib64/ceph/libceph-common.so.2: undefined reference to `int fmt::v8::detail::format_float<__float128>(__float128, int, fmt::v8::detail::float_specs, fmt::v8::detail::buffer<char>&)' > /usr/lib64/gcc/powerpc64le-suse-linux/12/../../../../powerpc64le-suse-linux/bin/ld: /usr/lib64/ceph/libceph-common.so.2: undefined reference to `int fmt::v8::detail::snprintf_float<__float128>(__float128, int, fmt::v8::detail::float_specs, fmt::v8::detail::buffer<char>&)' > collect2: error: ld returned 1 exit status Any idea? just FTR, this is currently blocking the build of QEMU, on ppc64, in Factory and Tumbleweed...