[Spice-devel] [PATCH v4 1/3] configure.ac: highlight current, revision and age

Alon Levy alevy at redhat.com
Tue Jun 12 06:00:24 PDT 2012


Move to the top so anyone changing the library version will have a
higher likelihood of noticing them and thinking if they need changes as
well. Added the rules, copied from libtool's info page, as a reminder.

Added some obvious docs for the already defined SPICE_MICRO, SPICE_MINOR
and SPICE_MAJOR.
---
Changes per Marc-Andre and Daniel's comments:
 * no SONAME change - library name starts with libspice-server.so.1
 * changed -version-number usage to -version-info

Is this guranteed to be an increase though? numerically it seems
 libspice-server.1.2.0 > libspice.server.1.0.2
 (change made by the second patch, the third is obviously newer since it's 1.3.0)

But do package managers treat this as newer? Daniel, any idea?

 configure.ac |   42 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 66f9d12..efb0128 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,48 @@
 AC_PREREQ([2.57])
 
+# Making releases:
+# 1. Increment SPICE_MICRO if no interface change has been done
+# 2. Increment SPICE_MINOR and zero SPICE_MICRO if new interfaces have been added,
+#    no changes to existing interfaces.
+# 3. Increment SPICE_MAJOR and zero both SPICE_MINOR and SPICE_MICRO if non
+#    backward compatible changes (interface changed or removed).
+#
+# *additionally* follow the rules below for the libtool version.
+
 m4_define([SPICE_MAJOR], 0)
 m4_define([SPICE_MINOR], 10)
 m4_define([SPICE_MICRO], 1)
+# See info libtool or http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
+#
+# Here are the 6 rules: (rule 1 here just to avoid saying what I omitted)
+
+# 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 or changed since the last
+#    public release, then set AGE to 0.
+
+m4_define([SPICE_CURRENT], [1])
+m4_define([SPICE_REVISION], [0])
+m4_define([SPICE_AGE], [2])
+
+# Note on the library name (SONAME) produced by libtool (for reference, gleaned
+# from looking at libtool 2.4.2), applies for linux only, different for other
+# operating systems:
+# libspice-servver.so.current-age.age.revision
 
 AC_INIT(spice, [SPICE_MAJOR.SPICE_MINOR.SPICE_MICRO], [], spice)
 
@@ -33,7 +73,7 @@ AC_FUNC_ALLOCA
 
 AC_DEFINE([__STDC_FORMAT_MACROS],[],[Force definition of format macros for C++])
 
-SPICE_LT_VERSION=m4_format("%d:%d:%d", 1, 0, 2)
+SPICE_LT_VERSION=m4_format("%d:%d:%d", SPICE_CURRENT, SPICE_REVISION, SPICE_AGE)
 AC_SUBST(SPICE_LT_VERSION)
 
 # Check for the CPU we are using
-- 
1.7.10.1



More information about the Spice-devel mailing list