Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 638218 - net-misc/rygel-0.34.0 and media-libs/libmediaart-1.9.4: ../../src/librygel-server/.libs/ undefined reference to `media_art_plugin_init'
Summary: net-misc/rygel-0.34.0 and media-libs/libmediaart-1.9.4: ../../src/librygel-se...
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal with 2 votes (vote)
Assignee: Gentoo Linux Gnome Desktop Team
Depends on:
Reported: 2017-11-20 11:52 UTC by Martin von Gagern
Modified: 2021-04-18 16:19 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---

build log (net-misc:rygel-0.34.0:20171119-123026.log,303.32 KB, text/plain)
2017-11-20 11:52 UTC, Martin von Gagern
libmediaart build log (media-libs:libmediaart-1.9.4:20171120-115016.log,31.69 KB, text/plain)
2017-11-20 12:38 UTC, Martin von Gagern
Patch libmediaart adding #include "extractgeneric.h" to extractqt.cpp (gentoo638218a.patch,328 bytes, patch)
2017-11-20 18:18 UTC, Martin von Gagern
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.