On Mon, Oct 08, 2012 at 10:41:03AM +0200, David Coppa wrote:
> On Tue, Oct 2, 2012 at 12:28 AM, Federico Schwindt <fg...@lodoss.net> wrote:
> > On Mon, Oct 1, 2012 at 4:02 PM, David Coppa <dco...@gmail.com> wrote:
> >> On Mon, Oct 1, 2012 at 4:59 PM, Stuart Henderson <s...@spacehopper.org> 
> >> wrote:
> >>> On 2012/10/01 15:08, Federico Schwindt wrote:
> >>>> > The diff below should do the trick (not tested, qt4 is such a beast to 
> >>>> > build)...
> >>>> >
> >>>> > Grepping for "QLibrary ", finds other occurrences that maybe we should 
> >>>> > also fix.
> >>>>
> >>>> I'm not sure about this. It seems to me that this:
> >>>>
> >>>> >> dlopen: loading: libicui18n
> >>>>
> >>>> Should really be libicui18n.so. I think this is better but untested
> >>>> and straight from the source:
> >>>
> >>>> --- qlibrary_unix.cpp.orig      Mon Oct  1 14:59:57 2012
> >>>> +++ qlibrary_unix.cpp   Mon Oct  1 15:00:28 2012
> >>>> @@ -143,9 +143,8 @@
> >>>>  #endif // Q_OS_AIX
> >>>>          if (!fullVersion.isEmpty()) {
> >>>>              suffixes << QString::fromLatin1(".so.%1").arg(fullVersion);
> >>>> -        } else {
> >>>> -            suffixes << QLatin1String(".so");
> >>>>          }
> >>>> +        suffixes << QLatin1String(".so");
> >>>>  #endif
> >>>>  # ifdef Q_OS_MAC
> >>>>          if (!fullVersion.isEmpty()) {
> >>>>
> >>>> f.-
> >>>
> >>> I haven't tested yet, but this seems a much better approach than
> >>> patching the callers.
> >>
> >> Sure, I also think Federico got it right.
> >
> > Ok, attached. Ttested with keepassx and a demo for the cups patch removal.
> > The gtk patch removal still needs testing. Anyone?
> 
> What is the status of this?

I actually disagree with this.

Those libraries are libraries, they're *not* plugins.

The only reason they are used from dlopen is because qt is architectured
so that some libraries are optional.

But removing the version number means you are no longer asking for any 
explicit ABI.  Which ought to break badly when the shared library number
gets bumped.

The correct way to do thing is to actually record the shared library
version at point of compilation, just like we do when we link for normal
libraries, and then hardcode that in the compiled version of qt.
(e.g., have those as build-depends, collect the shared library versions
during configure, and compile with these).

This is the exact same process we use for normal linking with shared
libraries.   Apart from the optionality of the feature, those are not
plugins.

Reply via email to