Rasdaman is running on the platforms listed below; let us know about further ones you are aware of! The rasdaman code has been developed on SUN/Solaris and HP-UX originally, and has been ported to IBM AIX, SGI IRIX, and DEC Unix - but that was way back in the last millennium. Today, the platforms listed below are supported (and again, porting to further platforms or re-checking the old ones listed before is very welcome).
- Kernel 2.6.18 or higher, gcc 4.8+, Java 7+
- Debian 7 and later, 32bit & 64bit
- Ubuntu 14.04 and later, 32bit & 64bit
- CentOS 7 and later
- Scientific Linux
- Red Hat Enterprise Linux (RHEL)
Andrew Seales from Edinburgh University was kind enough to perform a port again. Below his results; eventually, his findings should be merged into HEAD.
Overall I think I was successful in that while I have doesn't an exhaustive check of all the features, the server runs and I can perform a simple query using rasql. Hopefully these notes will be useful. The environment I used is Solaris 10 running on an AMD Opteron. The OS is 64bit but all the libraries and compilers used were 32bit. The compiler I used was gcc 3.4.3 with the Sun linker. I thought I'd also include a couple of notes on two of the more unusual dependences, hdf and netpbm, even though they not specifically related to you. hdf: Compiled easily. Parameters used were: CC=gcc ./configure --prefix=<local folder> --disable-fortran netpbm: * converter/other/jpeg2000/pamtojpeg2k.c and converter/other/jpeg2000/jpeg2ktopam.c need -std=c99 added to their compile parameters to compile. This may have been a problem with gcc 3.4.3 however. * window.c in netpbm/other/pamx needs: #if !defined (__SVR4) && !defined (__sun) #include <X11/Xdefs.h> /* Needed by Xutil.h */ #endif to only include Xdefs.h if not compiling on Solaris. Apparantly checking for __SVR4 and __sun is the portable way to tell if compiling on Solaris. Rasdaman: Configured using: CPPFLAGS="-I<local folder>/local/include" \ LDFLAGS="-L<local folder>/local/lib" \ ./configure --prefix=<local folder>/rasdaman \ --with-postgresql=<local folder>/bin/pg_config * edit configure.in to use libcurses and not libncurses * had to edit generated configure to replace instances of <var>+=<param> to <var>="$var <param>" - I thought there was a way in Autoconf to control this but couldn't find out how from the documentation(Solaris 10 uses bash v3 which doesn't support appending variables using +=) * had to install gawk, the included Solaris nawk doesn't work with the .awk scripts * rpcgen calls need -C -b added. On Linux, -C and -b flags are implied by default but on Solaris they are not * the -DSOLARIS check doesn't work so no source files get passed -DSOLARIS this is a problem for some source files(I hacked it into the Makefile.am AM_CXXFLAGS variable) * servercomm/servercomm.cc and servercomm/servercomm2.cc needs the gethostname commented out on line 77 and line 68 respectively as this conflicts with a built in function * had to upgrade Bison from the Solaris version(v1.8.75) to a newer version, I used v2.4.3 * had to add AM_CXXFLAGS=@BASEDBCXXFLAGS@ and AM_LDFLAGS=@BASEDBLDFLAGS@ to conversion/Makefile.am * during configure the check for hdf.h and mfhdf.h failed but the configure didn't abort, these files seem to be required for conversion/hdf.cc * had to upgrade Flex from Solaris default(v2.5.4) to a newer version, I used v2.5.35 * had to add -lmalloc to server/Makefile.am AM_LDFLAGS parameter. If I added it to LDFLAGS passed to configure this broke servercomm/rpcif_svc.cc * rasmgr/rasmgr_config.hh and rasmgr/rasmgr_localsrv.cc added #ifdef SOLARIS around the #include <linux/limits.h> to include #include <limits.h> instead * rasmgr/Makefile.am added AM_LDFLAGS=@BASEDBLDFLAGS@ to fix linking problems * rascontrol/Makefile.am added AM_LDFLAGS=@BASEDBLDFLAGS@ to fix linking problems * applications/rasql/Makefile.am added @BASEDBLDFLAGS@ to AM_LDFLAGS to fix linking problems * insertutils/Makefile.am added @BASEDBLDFLAGS@ to AM_LDFLAGS to fix linking problems The CPPFLAGS and LDFLAGS variables passed to configure point to the paths where I installed all the upgrades over the Solaris default apps. LD_LIBRARY_PATH and PATH has the same folders before the Solaris default folders to make sure my libraries are picked up first. Not all the fixes above are the "correct" thing to do, in particular the check around #include <linux/limits.h>, but it was enough to get the software to compile and run. The version I used was the version in git checked out about 10 days ago or so. Everything seemed to work except for running rascontrol with the incorrect username or password. This would for some reason cause the server process to hang so RASQL commands wouldn't work. If the correct username and password were passed to rascontrol then everything worked fine. I was successfully able to import the 3 provided sample images and retrieve them using RASQL queries.
Code has been developed under HP-UX originally, but hasn't been compiled there for a long time. Verification on a recent version required.
Code has been ported to IRIX earlier, but hasn't been compiled there for a long time. Verification on a recent version required.
The client API (raslib) has been ported to Windows long time ago. No further attempt has been made. Using docker helps running Linux code under Windows.
There are some caveats to compiling rasdaman on OS X:
- The configure script has to be edited such that it does not try to locate libgcrypt and libnsl which do not exist on OS X.
- The GCC compiler provided by Apple can't compile the sources in applications/rasql due to errors concerning C++ templates. The program has to be built manually using the Clang compiler. After this is done, make can build the rest of the project by its self.
- The version of rpcgen shipped with OS X is incredibly ancient. The header files supplied with the system still use "old style" C function declaration where the parameter names and types are listed after the function name and its parentheses. This style of declaring functions is invalid in C++ which is the language used by Rasdaman when it makes RPC calls. Because of this, the system header /usr/include/rpc/svc.h has to be edited manually to update the declaration of svc_register to a modern that includes declarations for all function parameters.