***************************************************************** Addition of optional hdf4 functionality on rasdaman Author: Bihemo Kimasa ****************************************************************** 1. Making hdf4 optional for installing rasdaman Getting and installing hdf4 libraries can be a daunting task. Previous versions of rasdaman required by default that these libraries be found on the system before it could be configured and hence successfully installed. It is now possible to install rasdaman with/out hdf4 libraries. A new functionality --with-hdf4 that can be passed when configuring rasdaman has been added. The functionality works by checking whether libdf.a and libmhdf.a are installed. If these libraries are found a new variable HAVE_HDF with value 1 is passed to the compiler. This variable is included in conversion/hdf.cc and conversion/convfactory.cc sources for conditional compilation. An error message is printed otherwise. If the user choses to configure rasdaman without invoking --with-hdf4 functionality, rasdaman will provide a warning message that hdf4 presence was not checked but that the user would need them in order to use rasdaman. These libraries are particularly needed for work with rascontrol and hence interact with the servers/database. Until the time I was writing this report rasdaman supported version 4 libraries. Earlier or later versions were incompatible. For a successful work with rasdaman the user must ensure that the right version is installed. The following is the piece of code that has been added in the configure.ac script. It should be easy to find it. AC_ARG_WITH([hdf4], [AS_HELP_STRING([--with-hdf4], [this feature enables the inclusion of hdf4 library during installation.])], [], [with_hdf4=no]) AC_MSG_NOTICE(using hdf4 library...$with_hdf4) if test "$with_hdf4" == yes; then AC_CHECK_LIB([df], [main], ,[AC_MSG_FAILURE([--with-hdf4 was given but libdf.a was not found! Please install.])]) AC_CHECK_LIB([mfhdf], [main], ,[AC_MSG_FAILURE([--with-hdf4 was given but libmfhdf.a was not found! Please install.])]) AC_DEFINE([HAVE_HDF], [1]) fi if test "\$with_hdf4" == no; then ## the '\' is not part of the code AC_MSG_NOTICE(Warning: presence of hdf4 libraries not checked. To run rasdaman you will need to have them installed!) fi Also in the conversion/hdf.cc and conversion/convfactory.cc the conditional compilation variable HAVE_HDF has been included. This again is easy to find when one looks at the source codes. 2. "How to install" instructions An updated list of packages needed should look like the following: Rasdaman requires a Linux kernel 2.6.18 or higher. Successful installations are reported for Kubuntu, SuSE, Red Hat, Mandrake distributions. (Let us know about further ones!) Aside from the standard packages which should be available on any vanilla Linux, the following list has to be installed: -tools: git-core, make, autoconf, automake, libtool, gawk, flex, bison, ant, gcc-c++, libstdc++, sun-java6-jdk, Tomcat (or another suitable servlet container). -general libraries: libreadline-dev, libopenssl-devel, libncurses5-dev database stuff: PostgreSQL 8.x, libecpg-dev; Warning: do not use versions PG 8.3.0 to 8.3.6 inclusive, it won't work. -image formats: libtiff-dev, libjpeg-dev, libpng12-dev, libnetpbm10-dev -Optionally, the performance boosters and additional service components offered by rasdaman GmbH can be installed. Also to use rasdaman you will need to ensure that libhdf4g-dev (note the version) is installed. 3. Recommendations The following should be kept in mind for the people working on rasdaman: Although it is now possible to install rasdaman without hdf4 libraries, it is not to be expected that one would be able to interact with it via the servers/database successfully. This is because the source codes conversion/hdf.* and conversion/convfactory.cc have all or part of their code section compiled only when hdf4 libraries are installed. For instance, conversion/hdf.cc is not used whenever hdf4 is not included when configuring. This means all makefiles lack the HAVE_HDF conditional compilational variable necessary for their inclusion on installing rasdaman. I feel that this could limit how one interacts with rasdaman servers. It is necessary to understand that conversion/hdf.* are important files for rasdaman to work. I recommend that for now rasdaman should only be configured --with-hdf4.