[Coin-discuss] Missing soname change in CoinUtils

Soeren Sonnenburg sonne at debian.org
Sun Mar 29 06:58:22 EDT 2009


Dear all,

Aramian and me are working on the coin-or debian packages ( see
https://projects.coin-or.org/CoinBinary/wiki/CoinDeb ).

Just when we wanted to upload OSI, we recognized that it does no longer
compile due to a ABI/API change in CoinUtils, caused by this

svn diff https://projects.coin-or.org/svn/CoinUtils/releases/2.3.3/CoinUtils/src/CoinPresolveMatrix.hpp 
 
https://projects.coin-or.org/svn/CoinUtils/releases/2.4.0/CoinUtils/src/CoinPresolveMatrix.hpp

Index: CoinPresolveMatrix.hpp
===================================================================
--- CoinPresolveMatrix.hpp 
(.../2.3.3/CoinUtils/src/CoinPresolveMatrix.hpp)        (revision 1135)
+++ CoinPresolveMatrix.hpp 
(.../2.4.0/CoinUtils/src/CoinPresolveMatrix.hpp)        (revision 1135)
[snip]
@@ -806,18 +809,17 @@
      See OSI code for the definition.
    */
    CoinPresolveMatrix(int ncols0,
-                   double maxmin,
-                   // end prepost members
+                    double maxmin,
+                    // end prepost members
+                    OsiSolverInterface * si,
+                    // rowrep
+                    int nrows,
+                    CoinBigIndex nelems,
+                    bool doStatus,
+                    double nonLinearVariable,
+                     const char * prohibited,
+                    const char * rowProhibited=NULL);

-                   OsiSolverInterface * si,
-
-                   // rowrep
-                   int nrows,
-                   CoinBigIndex nelems,
-                bool doStatus,
-                double nonLinearVariable,
-                     const char * prohibited);
-
[snip]

I am now unsure if this change was accidental or if it was intended.

If it was accidental, it should be reverted as soon as possible and a
new release should be made as it breaks other coin-or projects.

In case it was intended, you should really bump the SONAME of the
library, see e.g.

http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.html

Admittedly, I am a bit worried now (seems like none of the coin library
authors did ever care about properly increasing the library soname as it
is always 0.0).

Citing from the above webpage (for C programs) it should be done
whenever

1. The behavior of a function changes so that it no longer meets its
original specification,

2. Exported data items change (exception: adding optional items to the
ends of structures is okay, as long as those structures are only
allocated within the library).

3. An exported function is removed.

4. The interface of an exported function changes.

for C++ this list is longer (see Incompatible Libraries on the page
above).

Any thoughts?

Soeren
-- 
For the one fact about the future of which we can be certain is that it
will be utterly fantastic. -- Arthur C. Clarke, 1962




More information about the Coin-discuss mailing list