Versioning problem: 0.0.3 release creates libmetalink.so.1.0.0 libmetalink.so.1

Bug #296301 reported by A. Bram Neijt
6
Affects Status Importance Assigned to Milestone
libmetalink
Invalid
Undecided
Unassigned

Bug Description

Release tarball 0.0.3 creates the following shared object: lib/libmetalink.so.1.0.0

This should be libmetalink.so.0.0.3 with a corresponding libmetalink.so.0 (which is currently libmetalink.so.1)

The fix probably includes changing:
lib/Makefile.in:
< libmetalink_la_LDFLAGS = -version-info 1:0:0
> libmetalink_la_LDFLAGS = -version-info 0:0:3

Revision history for this message
Tatsuhiro Tsujikawa (t-tujikawa) wrote :

This is intended. I followed libtools's versioning convention described in its manual at section 7.
Quote from libtools manual section 7.3:
-------------------------------------------------------------------------------------------------------
If you want to use libtool's versioning system, then you must specify the version information to libtool using the -version-info flag during link mode (see Link mode).

This flag accepts an argument of the form ‘current[:revision[:age]]’. So, passing -version-info 3:12:1 sets current to 3, revision to 12, and age to 1.

If either revision or age are omitted, they default to 0. Also note that age must be less than or equal to the current interface number.

Here are a set of rules to help you update your library version information:
   1. Start with version information of ‘0:0:0’ for each libtool library.
   2. Update the version information only immediately before a public release of your software. More frequent updates are unnecessary, and only guarantee that the current interface number gets larger faster.
   3. If the library source code has changed at all since the last update, then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
   4. If any interfaces have been added, removed, or changed since the last update, increment current, and set revision to 0.
   5. If any interfaces have been added since the last public release, then increment age.
   6. If any interfaces have been removed since the last public release, then set age to 0.

Never try to set the interface numbers so that they correspond to the release number of your package. This is an abuse that only fosters misunderstanding of the purpose of library versions. Instead, use the -release flag (see Release numbers), but be warned that every release of your package will not be binary compatible with any other release.
-------------------------------------------------------------------------------------------------------

Since some public interfaces are added an some are renamed from 0.0.2 release, I set current to 1 and revision, age to 0.

Changed in libmetalink:
status: New → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.