Hi,

I'm resending this email because a part was missing and because I was not registered to the mailing list.
---
First: I tried adding a ticket as described on the website under "bug tracker" (http://podofo.sourceforge.net/support.html#mantis) pointing to sourceforge: https://sourceforge.net/p/podofo/bugs/?source=navbar (last ticket is dated from a few years back). However, even after being logged in, I was unable to add tickets. PoDoFo's website also mentions to report bug reports, feature requests and patches to the mailing list. Maybe the website should be updated accordingly to what is being used.

Now, the real problem I've encountered with PoDoFo library is described here: https://bugs.archlinux.org/task/50155 In short, no symlinks are created for major and/or minor numbers, forcing to rebuild other programs depending on it whenever the revision (patch) or the minor number changes.

While some projects are not ABI compatible between minor number increments, most of them are. I don't know if it is the case for PoDoFo, since there is no stable major number release yet, but I'll assume for the purpose of this email. On the other hand, a revision/patch number increment should only fix errors, not change the ABI.

Thus, PoDoFo should create a symlink between the full number (libpodofo.so.major.minor.patch) and the major number (libpodofo.so.major) to represent an ABI compatibility throught the whole major number development.

As it is now, only the fully version numbered library (libpodofo.so.major.minor.revision) and a generic symlink (no version, libpodofo.so) are created at installation:
/usr/lib/libpodofo.so -> /usr/lib/libpodofo.so.0.9.5
/usr/lib/libpodofo.so.0.9.5

Following CMake documentation, the SOVERSION variable should be changed when the ABI is broken (so it should be set to either major, or major.minor if the ABI still changes between minor number increment). The VERSION should be used to identify the full version string.

I think the CMakeLists.txt should be modified as below (proposed patch). With the proposed patch (or a modified version if the minor number increment represent an ABI incompatibility), the following is created:
/usr/lib/libpodofo.so -> /usr/lib/libpodofo.so.0
/usr/lib/libpodofo.so.0 -> /usr/lib/libpodofo.so.0.9.5
/usr/lib/libpodofo.so.0.9.5

A program will now be able to link against the symlink that is providing an ABI compatibility (this patch assumes that a major number increment represents an ABI incompatibility, just set the SOVERSION to "${PODOFO_VERSION_MAJOR}.${PODOFO_VERSION_MINOR}" if a minor number increment represents an ABI incompatibility).

Alexandre Demers

Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt(révision 1775)
+++ CMakeLists.txt(copie de travail)
@@ -13,9 +13,10 @@
SET(PODOFO_VERSION_MAJOR "0" CACHE STRING "Major part of PoDoFo version number") SET(PODOFO_VERSION_MINOR "9" CACHE STRING "Minor part of PoDoFo version number") SET(PODOFO_VERSION_PATCH "5" CACHE STRING "Patchlevel part of PoDoFo version number") -SET(PODOFO_SOVERSION "${PODOFO_VERSION_MAJOR}.${PODOFO_VERSION_MINOR}.${PODOFO_VERSION_PATCH}")
-SET(PODOFO_LIBVERSION "${PODOFO_SOVERSION}")
+SET(PODOFO_VERSION "${PODOFO_VERSION_MAJOR}.${PODOFO_VERSION_MINOR}.${PODOFO_VERSION_PATCH}")
+SET(PODOFO_SOVERSION ${PODOFO_VERSION_MAJOR})
+SET(PODOFO_LIBVERSION ${PODOFO_VERSION})
 #
 # Main includes
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to