The following are proposed changes to the UIMA C++ SDK build and packaging on Linux.
Build process
The following modifications are proposed to improve the UIMA C++ SDK build process and to have it conform to the standard practices used in GNU Autotools based build systems:
- Build from source using commands: configure (with appropriate arguments), make and make install.
- Run the build from the root of SVN extract to enable support for additional make targets such as make dist, make doc, etc.
- Find and use system install of dependencies - APR, ICU, XERCES, ACTIVEMQ and check / verify minimum version requirements.
- Require ActiveMQ CPP to be available and require the build of the ActiveMQ CPP based service wrapper (was optional).
- Enable make dist target to create the source tarball.
- Enable make check to run the fvt tests.
- Add support for --with-library-suffix to enable user to build their version of the libraries under a different name.
Version Numbering
This discussion applies to the preparation of UIMA C++ binary package on Linux. Currently we do not use version numbers on Windows binaries.
...
The libtool versioning system is enabled by invoking libtool with the --version-info option during the build.
For example, --version-info 0:0:0 produces library, soname and linkname as shown below:
lrwxrwxrwx 1 bsiyer users 20 Feb 2 18:22 libuima.so.0 -> libuima.so.0.0.0
-rwxr-xr-x 1 bsiyer users 15725180 Feb 2 18:22 libuima.so.0.0.0
lrwxrwxrwx 1 bsiyer users 20 Feb 2 18:22 libuima.so -> libuima.so.0.0.0
The soname, libuima.so.0, is determined by the value of current.
When preparing a public release, update the version info according to these rules:
Increment revision if there are no interface changes.
Increment current if the interface have been added, removed or modified and set revision to 0;
If the interfaces have been removed or modified, set age to 0 otherwise increment age.
RPM Packaging
Support for packaging as an RPM has been requested by developers of UIMA C++ annotators.