[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

library version equals to project version ?



Hi fellow developpers,

I maintain iiwusynth, which until now shipped unversioned libraries. I have been
discussing with upstream author for the past days and he agreed that versioning
libraries is certainly a good thing.

He's in the process of versioning his libraries but asked me details about the
versioning scheme, and I'm not sure what the correct answer his...

In two words, his question is: should a binary and the library it depends on
have the same version number ? Say

foo is version M.m.p and depends on foo dynamic library. Should the library
necesarily be called libfooM of could it be libfooX ?

On one hand I have the example of avifile-player version 0.7.12.20020719-1.2,
which depends on libavifile0 version 0.7. OTOH, we have aspell version 0.33.7.1
which depends on libaspell10 version 0.33.7

What is the Very True Way ?

I paste below the details of his question:

Please CC me on reply.

Thanks for your help.

----- Forwarded message from Peter Hanappe <peter@hanappe.com> -----

From: Peter Hanappe <peter@hanappe.com>
Reply-To: peter@hanappe.com
To: Eric.VanBuggenhaut@AdValvas.be
Subject: Re: bug in iiwusynth: dubious FPE logging implementation
X-Virus-Scanned: by AMaViS new-20020517
X-Razor-id: 44bb8d5d94b139efb3297b797e4e382641ab7d54
X-Spam-Status: No, hits=1.6 tests=MAY_BE_FORGED

Eric Van Buggenhaut wrote:

[...]

>>You said in a previous mail: "Binary
>>executables should be compatible with one major version, all across
>>its succesive minor numbers." Just to make sure I get this right, do you 
>>mind
>>I write down a little scenario:
>>
>>- I install iiwusynth-M.m.p that is linked against libiiwusynth.so.X.
>> The ABI version of libiiwusynth is X.
>>
>>- Later, I update to iiwusynth-M.m+1.p that is also linked against
>> libiiwusynth.so.X. There should be no problems since they are
>> ABI compatible. I don't necessarily have to update libiiwusynth.
>>
>>- I update libiiwusynth to a newer version, however that is still ABI 
>>version X
>> (i.e. libiiwusynth.so.X), everything continues to work.
>>
>>- However, if I update iiwusynth to version M.m+2.p that is linked against
>> libiiwusynth.so.X+1 there is a conflict and I'll need to install 
>> libiiwusynth.so.X+1
>> as well.
>>
>>Is this about correct?
>>
>
>Yes, that's exactly how it works.
>
>One detail though, in the scenario above X always = M so I rewrite it:

This I don't understand. I have been searching on the web a little and I
thought I understood that the library version isn't necessarily equal to
the project version.

For example, I checked on the debian web site, libaspell version 0.33.7.1-8
(package libaspell10) installs libaspell.so.10, and not
libaspell.so.0 (M=0, X=10).

I don't want to update iiwusynth to version 1.x.y because somehow
(psychologically) version 1.x is the first stable release. If X always = M
than *all* libraries before iiwusynth 1.0 have major number 0. It's
impossible to keep all those 0 library version ABI compatible, especially
in the beginning of a project.

Let me know what your thoughts on this are. We'd better straighten this all
out before making new packages to avoid future confusion.


>>Sorry to annoy you with all these questions but I want to make sure I 
>>understand
>>it correctly.

----- End forwarded message -----

-- 
Eric VAN BUGGENHAUT
ericvb@debian.org



Reply to: