The following are proposed changes to the UIMA C++ SDK build and packaging on Linux.
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.
- The default is to require ActiveMQ CPP to be available and to build the ActiveMQ CPP based service wrapper (was optional). Add support for --without-activemq to skip building the service wrapper.
- 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.
- Add support for make sdk to create the binary package. This requires the APR, ICU, XERCES, ACTIVEMQ-CPP be installed by the user and their location specified as arguments to configure.
- Add support for make rpm.
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.
Support for packaging as an RPM has been requested by developers of UIMA C++ annotators.