MySQLe link issue

Soren Harward stharward at gmail.com
Tue Sep 23 20:15:17 CEST 2008


On Tuesday 23 September 2008 13:50:18 Jeff Mitchell wrote:
> I'm on *32-bit* Gentoo, and I'm getting the following.  Note that this
> is all the output with make VERBOSE=1, even though it only really shows
> a warning and then errors out
...
> warning: creating a DT_TEXTREL in object.

Same here.  The problem is that on Gentoo, libmysqld.a contains non-PIC code, 
but Amarok tries to include it in a shared library, which has to be built 
entirely with PIC code.  As of right now, there is no fix for this problem; I've 
had to revert my SVN to r863918.  I've already added a note to Mikko's Gentoo 
bug about this:

http://bugs.gentoo.org/show_bug.cgi?id=238487

Hopefully, the Gentoo guys will add the ability to force the static library 
(ie, libmysqld.a) to have PIC code.

But on the other hand, there are good arguments for *not* putting PIC code into 
a static library, because there's the assumption that most static libraries get 
linked into executables and not shared libraries, and that part of the reason 
you have a static lib in the first place is to avoid the overhead that shared 
code (and thus PIC code) entails.  I could easily see the Gentoo guys arguing 
that they don't want to make a major change just to accommodate one 
application.

So my question is this: how badly broken is the current MySqlCollection (ie, 
non-embedded) in Amarok2, and is it worth reviving?  If it were revived, we 
could link it against the libmysqlclient shared library and avoid the PIC 
issue altogether -- and on x86 Gentoo, we could use regular MySQL instead of 
MySQLe.  I can see that the MySqlCollection code hasn't been significantly 
altered for many months, and I'm not sure if that's because nobody's gotten 
around to it, or because it's been slated for removal.

-- 
Soren Harward
stharward at gmail.com


More information about the Amarok-devel mailing list