On Tue, Oct 9, 2012 at 12:10 PM, Marc Espie <es...@nerim.net> wrote:
> On Tue, Oct 09, 2012 at 10:45:25AM +0100, Stuart Henderson wrote:
>> On 2012/10/09 09:56, Federico Schwindt wrote:
>> > > [..]
>> > > I tested it and then removed the diff from my ports tree... I need
>> > > this patch to go in because kdelibs 4.9.2 is complaining about the
>> > > same thing i.e Cannot load library icui18n
>> > >
>> > > will somebody commit this after approval? marc?
>> >
>> > new (untested yet) diff attached. this should be OK with espie.
>> >
>> > f.-
>>
>> Can't we just make it a LIB_DEPENDS/WANTLIB (will show as "Extra" but that's 
>> ok)
>> and use the original patch to just remove the version? qt4 already depends on
>> gstreamer-base which depends on pango which depends on icu4c, so in reality
>> there's no new dependency in this case, it just forces pkg_add to update
>> things when necessary.
>
> No, because qt4 won't be really tied to the icu4c version.
>
> Consider:
>
> install icu4c with shared lib .so.N.0
> install qt4 compiled for icu4 shared lib .so.N.0
>
> update icu4 to shared libs .so.N+1.0 which is not guaranteed to be compatible
> with .so.N.0  (in fact, a major bump means it's GUARANTEED not to be
> compatible)
>
> With the dependency tree you outline, .so.N.0 will still be around
> as a .libs-icu4c
>
> But qt4 dynamically loads things! If you don't tie the version number down,
> it will load .so.N+1.0... But it should *still* try to load .so.N.0,
> not .so.N+1.0
>
> Of course, you might get lucky and not run into the incompatible behavior
> (as qt4 probably doesn't use the whole icu4c ABI), but the whole POINT of
> major version numbers is to prevent incompatible ABI from being called.
>
> And we have *no finer granularity* than the whole shared object. Again,
> we may get lucky and just call a few functions that haven't changed...
> but if we start doing that, we can stop having shared library major
> numbers altogether!!!
>
> See why this is wrong ?

I meant, following your approach, that gtk+2 and cups, which
previously got fixed by just
removing the version number, now need the right major number.
Is this correct?

Reply via email to