GNOME Bugzilla – Bug 318031
gstreamer should use gmodule-no-export in its .pc file
Last modified: 2006-09-28 17:16:13 UTC
Trivial patch attached
Created attachment 53063 [details] [review]
could you elaborate a little ?
See bug #125627. FWIW FC4 builds with this patch by default it seems. Applying
this patch to HEAD.
Reopening -- this caused loading the gst.interfaces python module to bork.
Matthias could you elaborate a little? Is this really a bug?
It is not a bug. -Wl,--export-dynamic, makes things a little slower. It is only
needed for DSOs in which you look up symbols via dlsym, e.g when using the
libglade feature to autoconnect signal handlers. Maybe your python module needs
it as well.
Matthias, your patch seems to be for gstreamer 0.8.11 which is no longer supported. Do you have the same issue with gstreamer 0.10.x ?
<mclasen> so, if the gst.interfaces module needs --export-symbols in order to work correctly, you should add it back, no big deal
ping? wassup with this?
We definitely should not be using --export-dynamic in the Gstreamer core, or plugins, because it makes ld export every symbol and completely invalidates the point of passing -export-symbols-regex to libtool
If there's an issue with gst-python, we need to figure out what it is and fix it. I can't see the problem yet though - I've removed --export-symbols from GStreamer core here, and am keeping an open for the problem. If someone has info about exactly what it looks like, that'd help.
OK, so it makes gst-python crash with this, for some reason:
0x00002b1e7579d3eb in pyinterfaces_register_classes (d=0x6979c0) at interfaces.c:2819
2819 pyg_register_interface(d, "XOverlay", GST_TYPE_X_OVERLAY, &PyGstXOverlay_Type);
Trying to get a pygobject with debug symbols built to figure out more precisely what is going on.
Ok, it seems that python-gst is implicitly relying on pulling in --export-dynamic from somewhere else. It needs extra stuff exported. Will fix tomorrow.
Fixed the python part:
Explicitly export _PyGObject_API from our modules, as it's apparently
needed for import. Previously we implicitly relied on a bug in the
core providing --export-dynamic as a link flag.
I've no idea why _PyGObject_API is needed in our .so's. I guess pygobject must be looking up the symbol internally.
Fixed in CVS:
Don't pull in gmodule-2.0.pc as a dependency in our .pc files - we
want gmodule-no-export-2.0.pc instead so that we don't drag in
--export-dynamic on every project that links to GStreamer.
Also, make our export regex only match the start of symbols, rather
than any symbol that contains '_gst' somewhere.
The libgstcheck we build does however need export-dynamic, as it
produces some symbols that don't match our _gst... style regex.