SHORT VERSION: We broke ABI from the 1.4 series to the v1.5 series.  I propose 
changing all the libtool .so version numbers as shown below to enforce that 
break.  Can someone sanity check this?

Index: VERSION
===================================================================
--- VERSION     (revision 23242)
+++ VERSION     (working copy)
@@ -79,12 +79,12 @@
 # Version numbers are described in the Libtool current:revision:age
 # format.

-libmpi_so_version=0:2:0
-libmpi_cxx_so_version=0:0:0
-libmpi_f77_so_version=0:0:0
-libmpi_f90_so_version=0:0:0
-libopen_rte_so_version=0:0:0
-libopen_pal_so_version=0:0:0
+libmpi_so_version=1:0:0
+libmpi_cxx_so_version=1:0:0
+libmpi_f77_so_version=1:0:0
+libmpi_f90_so_version=1:0:0
+libopen_rte_so_version=1:0:0
+libopen_pal_so_version=1:0:0

 # "Common" components install standalone libraries that are run-time
 # linked by one or more components.  So they need to be versioned as
@@ -92,5 +92,5 @@
 # components-don't-affect-the-build-system abstraction.

-libmca_common_sm_so_version=1:0:0
-libmca_common_mx_so_version=0:0:0
-libmca_common_portals_so_version=0:0:0
+libmca_common_sm_so_version=2:0:0
+libmca_common_mx_so_version=1:0:0
+libmca_common_portals_so_version=1:0:0

MORE DETAILS:

libopen_rte.so now wholly includes libopen_pal.so, and libmpi.so wholly 
includes libopen_rte.so (and therefore also libopen_pa.so).  This was done for 
complex reasons -- the quick explanation is that is sucks because it makes us 
break ABI right now, but it puts us in a better position for ABI compatibility 
in the future.  I wish that we had figured this out back at v1.3.2 when we 
introduced ABI compatibility, but we didn't -- so here we are.  Cope.

To enforce this ABI break, I propose setting the libtool version numbers of all 
of our shared libraries to 1:0:0.  This means that apps linked against v1.5 
libmpi.so will *NOT* be able to use libmpi.so from the v1.3 or v1.4 series.  
They will have to relink (at a minimum).

Resetting *all* the library numbers to 1:0:0 is probably overkill (e.g., 
there's probably little gained by resetting the common libraries to 1:0:0), but 
it seems like an "ok" thing to do -- reset all the numbers across the board for 
minimum confusion.

Can someone sanity check my rationale here?  I'm not tied to this scheme; it 
just seems simple and, while probably being a bit overly broad, makes the 
change easy to describe and consistent.

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to