Rocket I
S
D
A
T

Page maintained by
Reine Gill

Isdat build howto

This document explains how to build/install the ISDAT software and tells you howto solve known problems. If you find a solution to a problem not in this list. Please send me an email (reine.gill@irfu.se) so I can add it to the list.
This howto is divided into four sections as described below.

Requirements

To build the basic ISDAT system with libraries and Igr you will need

  1. ANSI c compiler
    • such as gcc or cc.
  2. Unix parse generator tools
    • yacc/flex, or the gnu equivalent bison/flex
  3. Perl with the standard module Cwd.
  4. Motif (A window widget library)

Some of the server modules require extra tools/libraries.

  1. The Ephemeris module can be built to use the maglib written in Fortran. This gives you enhanced functionality and is recommended.
    • In this case you need a Fortran 77 compiler, any one of g77 or f77 works fine.
  2. To build the Csds server module you will also need the cdf library. Isdat is built to use cdf version 2.6 (although it seems to work with later versions as well).

Given that the requirements are fulfilled ISDAT is known to compile on the following platforms:

  • Linux Intel, Suse 7.0, RedHat >6.0 and probably other distributions as well.
  • Solaris SPARC, Intel 2.8, 2.7, 2.6
  • Free BSD Intel 3.5
  • openVMS VAX
  • HP/UX 10.20, 11.0

BUILD/COMPILE INSTRUCTIONS (very first time)

ISDAT uses the imake system (not required since it comes with isdat) to create the platform dependent makefiles, which is needed on the very first build.

  1. Unpack the distribution media
    • Unzip, untar, etc. the files in the directory you wish to have the ISDAT system. If you have cvs access read the Isdat cvs howto
    • Set up the environment. Go to the script directory in the Isdat source distribution. Edit my_isdat_profile so that the variable ISDAT_HOME points to your Isdat source distribution (my_isdat_profile.csh for csh users). Source the appropriate file.
    • Configure the first build. Copy the file
      $ISDAT_ROOT/config/cf/site.def_DEFAULT to
      $ISDAT_ROOT/config/cf/site.def
      Edit this file to suit you needs. You may wish to add some build options, such as compiling the IDL or Matlab APIs, use of CDF etc. If you want some of this functionality set is corresponding variable to YES and make shure all paths are correct.

      NOTE:

      • You do not have to uncomment HasGcc2 for Linux, it will use gcc any way.
      • IF YOU DO NOT HAVE CDF please remove the $ISDAT_HOME/server/Csds directory or rename $ISDAT_HOME/server/Csds/Init.c to something else.
      • If you build on sun and enables any special resource use the rows that are comment away (uses sun specific flags) instead of the existing ones.
    • Starting the first build Change directories so to $ISDAT_HOME. Start the first build by typing:
      make isdat
      This will generate a lot of messages. After some time you should end up with a message saying "Full Build of ISDAT of completed"

Post build installation

The ISDAT distribution does not have an install stage as many other systems have. All the binaries after the build will be linked from $ISDAT_HOME/bin into their source code directory where they reside. After a Isdat build it is allays a good idea to have a look in this directory. If the link to a special binary exist it has been successfully build. Otherwise have a look at the last section Problems and solutions

After a successful build you need to set a few things in order to run the ISDAT system.

  1. Setting environment variables.
    You need the set a few environment variables. Look at the file $ISDAT_HOME/scripts/my_isdat_profile which contains these variables along with comments. Specially make shure ISDAT_DATABASE is set to whatever Isdat server you intend to use.
    You can conveniently copy this file into your HOME directory and rename it as you wish (or include it into you usually profile file).
  2. Setting paths to the data files.
    For the ISDAT server to find data files, calibration files, etc. you must edit the $ISDAT_HOME/configure/isdat.server file. If you plan on running your own Isdat dbh have a look at:
    http://www.space.irfu.se/isdat/using/dbh.html and
    http://www.space.irfu.se/isdat/using/HOWTO/accessControl.html

Problems and solutions

Unfortunately the message "Full Build of ISDAT of completed" is no guarantee that everything went ok. You have to look if the binaries are in place in order to verify a successful build. If something goes wrong:

  • If you feel that everything just went wrong or you did not get any binaries at all. Go through all steps in the build carful once more. Also have a look at the problems and solutions section. After (hopefully) correcting the error, you have two choices.
    • Full rebuild of Isdat system.
      Copy $ISDAT_HOME/Makefile.ini to $ISDAT_HOME/Makefile, type
      make isdat
      to rebuild Isdat and all of its makefiles
    • Just type make in $ISDAT_HOME.
      This rebuilds everything except the makefiles.
  • If you have problems building some special binary.
    Change directory into the source code for the binary missing. From here type make. Now you will have a better view of what is coursing the problem. Make will now stop on the first error it encounters.
  • A source of error as well as a useful aid is the LD_LIBRARY_PATH If you encounter any errors in the linking stage, check this variable. It could cause Isdat to link to the wrong library files. (not the system wide ones). But it can also be used for this purpose. If the Isdat build does not find any libraries that it should, set the LD_LIBRARY_PATH to this directory and rebuild.

Some special problems.

  1. Ephemeris module does not build under Linux:
    f77: no such file or directory
    Solution is to export FC=g77
    before build. If you don not want to remake all makefiles link g77 to f77.
  2. Build stops immediately under Linux:
    cc: no such file or directory
    unfortunately the first Makefile runed is hard coded to use cc. Most Linux distributions has a link cc to gcc which solves this problem. Make the link or edit the top of $ISDAT_HOME/config/imake/Makefile.ini, CC = cc should be CC = gcc.
  3. Library $ISDAT_HOME/lib/Mo does not build under Linux:
    /usr/bin/ld: cannot find -lXpm
    collect2: ld returned 1 exit status
    This library is supposed to link to a file libXpm.so, you may not have this file in your distribution, but instead libXmp.so.4. A softlink from libXpm.so.4 to libXpm.so will solve the above problem. These files are most often found in /usr/X11R6/lib.
  4. Isdats own header files is not found during build.
    Error message something like:
    Db.h, Isutil.h File not found
    This problem can have one of two causes:
    • The $ISDAT_HOME variable is not set, edit and source my_isdat_profile.
    • For some reason make isdat some times fail to run make includes. If you run this command manually from $ISDAT_HOME the include files will be linked and make can find them when you finally run make from $ISDAT_HOME.
  5. Parse error when building the Idl API on sun using cc.
    You will receive an error like:
    "/usr/local/rsi/idl/external/export.h", line 281: invalid type combination
    "/usr/local/rsi/idl/external/export.h", line 282: long long not allowed in Xc mode
    "/usr/local/rsi/idl/external/export.h", line 282: invalid type combination
    This is becourse the Idl headerfiles simply is not in ansi c as the flag -Xc implies. The fix is to edit $ISDAT_ROOT/config/sun.cf row 347, define DefaultCCOptions -Xc should be define DefaultCCOptions.