Made number transition to 0.4.3 , still libburn.so.4.7.0

This commit is contained in:
2008-01-27 14:53:55 +00:00
parent fcc382494f
commit e2e8390f40
11 changed files with 367 additions and 149 deletions

View File

@ -1,4 +1,4 @@
AC_INIT([libburn], [0.4.1], [http://libburnia-project.org])
AC_INIT([libburn], [0.4.3], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -7,85 +7,79 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
dnl Note by ts A71207:
dnl Notes by ts A71207 - A80126 :
dnl
dnl BURN_MICRO_VERSION was _not_ the third component Z of libburn-X.Y.Z
dnl but an eternal counter which leads to CURRENT. This misunderstanding
dnl caused a messed up sequence of CURRENTs.
dnl Regrettably the meaning of the various version types was misunderstood
dnl before version 0.4.1.
dnl
dnl CURRENT and AGE describe the binary compatibility interval of a
dnl dynamic library.
dnl See also http://www.gnu.org/software/libtool/manual.html#Interfaces
dnl In the past MAJOR.MINOR.MICRO versions led to the following SONAME numbers:
dnl 0.2.2 = 2 , 0.2.3 = 3 , 0.2.6 = 6
dnl 0.3.0 = 0 , 0.3.2 = 2 , 0.3.4 = 4 . 0.3.6 = 6 , 0.3.8 = 4
dnl 0.4.0 = 0 (also released as SONAME 4)
dnl
dnl The name of the library will be libburn.so.$CURRENT-$AGE.$AGE.$REV
dnl Meanwhile the following schemes are maintained in parallel:
dnl
dnl BURN_MAJOR_VERSION , BURN_MINOR_VERSION , BURN_MICRO_VERSION
dnl are three small non-negative integers which describe the evolution
dnl steps of the library.
dnl Older applications are able to use younger libraries over
dnl quite a long range of such steps. Some day, nevertheless,
dnl compatibility might get terminated, after due notice.
dnl
dnl SONAME (libburn.so.4)
dnl is a small positive integer which marks a family of compatible
dnl evolution steps. Libraries with a particular SONAME allow a binary
dnl with the same SONAME to start up. Any further compatibility check is to
dnl be done by own runtime means. Especially *_version() calls in the API
dnl which return BURN_MAJOR_VERSION, BURN_MINOR_VERSION, BURN_MICRO_VERSION.
dnl See below.
dnl
dnl CURRENT, AGE, REVISION
dnl are three integers used by libtool. CURRENT is positive, the others
dnl non-negative. The use at runtime is not known yet. But libtool computes
dnl at build time SONAME = CURRENT - AGE.
dnl So this is a superspace of the SONAME version space. To avoid
dnl ill SONAME, the value of CURRENT must be larger than AGE.
dnl See also http://www.gnu.org/software/libtool/manual.html#Interfaces
dnl
dnl The name of the dynamic library will be libburn.so.$SONAME.$AGE.$REV .
dnl In the terminology of this file:
dnl CURRENT = LT_CURRENT
dnl REV = LT_REVISION
dnle AGE = LT_AGE
dnl CURRENT = LT_CURRENT
dnl AGE = LT_AGE
dnl REVISION= LT_REVISION
dnl
dnl In the past the following CURRENTs of libburn have been released.
dnl All with AGE=0.
dnl 0.2.2 = 2 , 0.2.3 = 3 , 0.2.6 = 6
dnl 0.3.0 = 0 , 0.3.2 = 2 , 0.3.4 = 4 . 0.3.6 = 6 , 0.3.8 = 4
dnl 0.4.0 = 0
dnl
dnl Beginning with libburn-0.4.1 a rectified counting was introduced as
dnl CURRENT=10, REV=1, AGE=6
dnl This rectification declared the current version
dnl to be binary compatible down to libburn-0.3.4.
dnl Real backward compatibility is given down to libburn-0.3.2.
dnl Beware of libburn-0.2.6 which had CURRENT=6.
dnl CURRENT=10, REVISION=1, AGE=6
dnl This rectification declared that version to be binary compatible up
dnl from libburn-0.3.4.
dnl Real compatibility was given since libburn-0.3.2.
dnl Beware of libburn-0.2.6 which had SONAME=6 and is not binary compatible.
dnl Applications for libburn-0.2 to libburn-0.3.1 need recompilation but no
dnl source code changes.
dnl
dnl CURRENT=10, REV=0, AGE=6 would be appropriate for libburn-0.4.0
dnl but was not issued, regreattably.
dnl
dnl If libburn-0.4.0 gets patched, its CURRENT will become 10, AGE 6, and
dnl REV will be set to one higher than the highest REV of CURRENT 10.
dnl If libburn-0.4.1 is still on CURRENT 10 then its REV gets set one higher
dnl than that.
dnl As soon as 0.4.1 becomes upwardly incompatible, it shall become 11,0,7.
dnl From then on it counts REV independently of libburn-0.4.0.
dnl Whether 0.4.1 alters independent REV at all, is not decided yet.
dnl It may well stay 0 until a release version joins CURRENT 11.
dnl
dnl Under the preconditions
dnl CURRENT= $BURN_MICRO_VERSION - $BURN_INTERFACE_AGE
dnl REV= $BURN_INTERFACE_AGE
dnl AGE= $BURN_BINARY_AGE
dnl the following old instructions were reasonable. Their drawback
dnl is that they cause large jumps in CURRENT, when BURN_INTERFACE_AGE gets
dnl reset to 0 from a high value. So this is outdated now:
dnl ---------------------------------------------------------------------------
dnl .Making releases:
dnl . BURN_MICRO_VERSION += 1;
dnl . BURN_INTERFACE_AGE += 1;
dnl . BURN_BINARY_AGE += 1;
dnl .if any functions have been added, set BURN_INTERFACE_AGE to 0.
dnl .if backwards compatibility has been broken,
dnl .set BURN_BINARY_AGE and BURN_INTERFACE_AGE to 0.
dnl .
dnl .if MAJOR or MINOR version changes, be sure to change AC_INIT above to match
dnl ---------------------------------------------------------------------------
dnl
dnl Instead, LT_CURRENT, LT_REVISION and LT_AGE get set directly now.
dnl Neatly versioned stable releases meanwhile:
dnl 0.4.2 = libburn.so.4.7.0
dnl
dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
dnl SONAME of the emerging library is LT_CURRENT - LT_AGE.
dnl The linker will do no finer checks. Especially no age range check for
dnl the cdrskin binary. If SONAME matches, then the couple starts.
dnl the application binary. If SONAME matches, then the couple starts.
dnl
dnl Therefore a run time check is provided by libburn function burn_version().
dnl It returns the major, minor and micro revision of the library. This means
dnl BURN_*_VERSION kept its second job which does not comply to the usual ways
dnl of configure.ac . I.e. now *officially* this is the source code release
dnl version as announced to the public. It has no conection to SONAME or
dnl libtool version numbering.
dnl It rather feeds the API function burn_version().
dnl Therefore at run time info is provided by libburn function burn_version().
dnl It returns the MAJOR, MINOR and MICRO revision of the library.
dnl Before using any API feature, a program should check for age.
dnl
dnl Normally one can allow a program to run with a library which passed the
dnl linker SONAME test and which is not older than the library it was
dnl developed for. Library2 is younger than library1 if:
dnl MAJOR2>MAJOR1 || (MAJOR2==MAJOR1 &&
dnl (MINOR2>MINOR1 || (MINOR2==MINOR1 && MICRO2 > MICRO1)))
dnl
dnl If BURN_*_VERSION changes, be sure to change AC_INIT above to match.
dnl
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=4
BURN_MICRO_VERSION=1
BURN_MICRO_VERSION=3
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
AC_SUBST(BURN_MAJOR_VERSION)
@ -95,10 +89,15 @@ AC_SUBST(BURN_VERSION)
dnl Libtool versioning
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
# SONAME = 10 - 6 = 4 . Library name = libburn.4.6.1
LT_CURRENT=10
LT_REVISION=1
LT_AGE=6
dnl
dnl ts A80127
dnl This ist a development version.
dnl But LT_CURRENT++, LT_AGE++ has not happened yet.
dnl
dnl SONAME = 11 - 7 = 4 . Library name = libburn.so.4.7.0
LT_CURRENT=11
LT_REVISION=0
LT_AGE=7
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
AC_SUBST(LT_RELEASE)
@ -107,7 +106,7 @@ AC_SUBST(LT_REVISION)
AC_SUBST(LT_AGE)
AC_SUBST(LT_CURRENT_MINUS_AGE)
# ts A71207: This is done only not to break any old components
dnl ts A71207: This is done only not to break any old components
BURN_INTERFACE_AGE=$LT_REVISION
BURN_BINARY_AGE=`expr $LT_AGE + $BURN_INTERFACE_AGE`
AC_SUBST(BURN_INTERFACE_AGE)