Dario Faggioli changed bug 1135030
What Removed Added
Priority P5 - None P3 - Medium
CC   dfaggioli@suse.com

Comment # 12 on bug 1135030 from
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...


You are receiving this mail because: