Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 638218

Summary: net-misc/rygel-0.34.0 and media-libs/libmediaart-1.9.4: ../../src/librygel-server/.libs/ undefined reference to `media_art_plugin_init'
Product: Gentoo Linux Reporter: Martin von Gagern <Martin.vGagern>
Component: Current packagesAssignee: Gentoo Linux Gnome Desktop Team <gnome>
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
See Also:
Package list:
Runtime testing required: ---
Attachments: build log
libmediaart build log
Patch libmediaart adding #include "extractgeneric.h" to extractqt.cpp

Description Martin von Gagern 2017-11-20 11:52:58 UTC
Created attachment 505064 [details]
build log

rygel fails to update for me:

../../src/librygel-server/.libs/ undefined reference to `media_art_plugin_init'

It does have a point:
$ grep plugin_init /usr/include/libmediaart-2.0/libmediaart/*.h
/usr/include/libmediaart-2.0/libmediaart/extractgeneric.h:void      media_art_plugin_init     (gint                  max_width);
$ objdump -T /usr/lib64/ | grep plugin
# shows nothing

So apparently there is some method declared in a header but not defined in the libmediaart library.
Comment 1 Martin von Gagern 2017-11-20 12:38:26 UTC
Created attachment 505068 [details]
libmediaart build log

My libmediaart is configured USE="qt5 -gtk -vala". The extract implementation thus comes from extractqt.cpp which does not include extractgeneric.h and thus does not have the _LIBMEDIAART_EXTERN macro in front of the function declaration. This makes the whole symbol non-external, and via the -fvisibility=hidden linker flag hidden. objdump -t does show the symbol in the build directory, but the stripped version in the install directory no longer has it.
Comment 2 Martin von Gagern 2017-11-20 18:18:46 UTC
Created attachment 505236 [details, diff]
Patch libmediaart adding #include "extractgeneric.h" to extractqt.cpp

With this patch in place, the symbol becomes public, and rygel can link. I placed this in /etc/portage/patches/media-libs/libmediaart-1.9.4/ to let user patches pick it up.