[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mathgl: Upload new version 2.5



Hi,

The new upstream version 2.5 of MathGL has been recently released. I prepared the new version of the Debian package on the Git repo. If nobody objects, I will upload it. I am juste wondering whether it should be done to unstable or experimental. In this new upstream version, the upstream authors bumped (what they call) the "SOVERSION", such that all library binary packages produced by the mathgl source have to change names.

This will cause the new uploaded package to go through the NEW queue and will need a "mini-transition" involving the 3depict package (the only reverse-dependency on libmgl).

Now, the process of updating the mathgl package after such upstream "SOVERSION" bumps is pretty painful. This is caused by the very strange way in which upstream deals with the soversion. Indeed, a single "soversion" is defined in the CMakeLists.txt file:

    $ grep SOVERSION CMakeLists.txt | grep ^set
    set(MathGL_SOVERSION 7.6.0)

The defined variable (MathGL_SOVERSION) is then used to set the SOVERSION property of all libmgl* libraries:

    $ grep MathGL_SOVERSION CMakeLists.txt | grep set_target
            set_target_properties(${mgllib} PROPERTIES SOVERSION ${MathGL_SOVERSION})

We end up with a collection of shared libraries that have the same "SOVERSION":

    $ find debian/tmp -name \*.so.\*
    debian/tmp/usr/lib/libmgl-wnd.so.7.6.0
    debian/tmp/usr/lib/libmgl-mpi.so.7.6.0
    debian/tmp/usr/lib/libmgl-wx.so.7.6.0
    debian/tmp/usr/lib/libmgl-qt.so.7.6.0
    debian/tmp/usr/lib/libmgl.so.7.6.0
    debian/tmp/usr/lib/libmgl-qt5.so.7.6.0
    debian/tmp/usr/lib/libmgl-glut.so.7.6.0
    debian/tmp/usr/lib/libmgl-fltk.so.7.6.0

and this forces the changing of package names at each SOVERSION bump:

    $ grep ^Package: debian/control | grep 7.6
    Package: libmgl7.6.0
    Package: libmgl-mpi7.6.0
    Package: libmgl-wnd7.6.0
    Package: libmgl-glut7.6.0
    Package: libmgl-qt5-7.6.0
    Package: libmgl-fltk7.6.0
    Package: libmgl-wx7.6.0

This is pretty lame. Besides changing all package names and the names of the debian/libmgl*.install files, , we need to keep a ever-growing list of Replaces/Conflicts, for instance for the libmgl-glut7.6.0 package:

    Replaces: libmgl-glut5, libmgl-glut6.0.0, libmgl-glut7.1.0, libmgl-glut7.2.0,
     libmgl-glut7.4.0, libmgl-glut7.4.1, libmgl-glut7.5.0
    Conflicts: libmgl-glut5, libmgl-glut6.0.0, libmgl-glut7.1.0, libmgl-glut7.2.0,
     libmgl-glut7.4.0, libmgl-glut7.4.1, libmgl-glut7.5.0

IMHO, the scheme adopted by the upstream authors is not correct. First, the SOVERSION should be a single number, corresponding to the major part of the library version and not the composite major.minor.micro. Second, each individual library should have its own version/soversion, which should be bumped only when there are changes in it.

Anyway, I think that we are trapped in this strange package naming scheme for mathgl, unless the upstream authors change its way of setting soversion/version or we patch the upstream sources.

Best,

Rafael


Reply to: