How to install one or more parallel IPP installations

IPP comes with a mechanism called 'psfconfig' that intends to allow installation and compilation of multiple versions and for multiple platforms on the same disk area. A user selects one of the installed versions (e.g. ipp-2.6.1) by issuing a psconfig command, e.g.

 psconfig ipp-2.6.1

which then sets the PATH etc. appropriately to point to the relevant directories for the chosen version and architecture. The psconfig mechanism needs just a little bit of setting up.

Preliminaries: Setting up a global psconfig directory before installing IPP for the first time

There's one directory where all IPP installations live. By default, it's ~/psconfig/ but you can make it a different location by creating a file ~/.psconfigrc which contains

 set PSCONFDIR = /IPP/

If someone else has installed IPP for you, as is the case in Heidelberg, creating that file is all you need to do to point to those IPP installations. Then set the required aliases in your .[t]chsrc or .bashrc file:

 bash: alias psconfig='source /IPP/psconfig.csh'
 [t]csh:  alias psconfig "source /IPP/psconfig.bash"

(or whatever else PSCONFDIR is set to instead of /IPP).

If you are doing the installing of IPP, the PSCONFDIR root directory is set up by the command

 psbuild -bootstrap $PSCONFDIR

be sure to use the same value for PSCONFDIR here as in the ~/.psconfigrc or everything will get messed up. Once installed, psconfig will set an environment variable PSCONFDIR automatically. (See installation instructions below for where to find psbuild...)

Alternating between versions installed in a global directory and versions installed in your own home directory is possible, but you need to unset PSCONFDIR, make sure that there's no .psconfigrc (e.g. by renaming it), and point psconfig at the different different directory, so I don't recommend it.

To run pantasks, your startup file ~/.bashrc or ~/.tcshrc needs to execute psconfig; see Pantasks_FAQ#Whyaremynodesdownorresp

Setting the IPP version to use

In Heidelberg, there's always a softlink ipp-default pointing to the most recent installed version of IPP. To use that, then just issue the command

 psconfig ipp-default

on the command-line.

Important: To use multiple hosts in parallel in pantasks, your startup file needs to call psconfig. If you do that, there is an unfortunate bug in IPP ( #1079 ) that will break at least the man command, and maybe more.

Setting up individual config files

IPP has a config file hierarchy. There are two per-user config files:

 ~/.ipprc # Definitions for psphot etc.
 ~/.ptolemyrc # Definitions for dvo

There are templates for both files, so to begin with, just copy those into your home directory. In Heidelberg, suitable templates are at

 cp /IPP/ipprc.template ~/.ipprc
 cp /IPP/ptolemyrc.template ~/.ptolemyrc

The configuration system is hierarchical, with defaults in the global ippconfig directories that can be overridden by definitions in user-specified directories. E.g. to include camera definitions that are located in your own file area, edit the PATH in .ipprc:

 PATH		STR	/home/jester/IPP/ippconfig/:MYINSTALLDIR/share/ippconfig:

This looks for any required configuration files first in /home/jester/IPP/ippconfig/ and if it does not find a match there, takes the IPP-wide defaults. At present, you have to replicate an entire file in your own area if you want to change a single setting from the default. Also note that there is an internal hierarchy, with files in the recipes/ folder setting defaults that can be overriden in camera-specific files; the catch is that a concept MUST be present in the recipes/ version of a config file (i.e. you can't add new things in a camera-specific file).

In general, the configuration system may be changing, so that a per-user configuration that works with one version of IPP may cease to work with the next release. Thus, it may be necessary to compare the local versions of .ipprc, .ptolemyrc and any individual camera config files with their defaults from the new IPP version (in MYINSTALLDIR/share/ippconfig).

Compiling and installing IPP

Go to IPP download page for tarballs of numbered versions; in addition to the IPP tarball itself, you will also need the extlibs and extperl tarballs with the matching version number.

Default installation

The necessary steps are: Get an IPP tarfile or export from svn (previously cvs); set the new version ID under which the psconfigure mechanism will know which version of IPP you mean (set the version id including the date if from svb/cvs, or using the version number if it is a numbered release); run the psbuild script which should compile everything in one long go.

 # Get IPP (here from svn, by date)
 cd /IPP/
 svn export -r {2009-05-14} https://svn.pan-starrs.ifa.hawaii.edu/repo/ipp/trunk/ ./svn-20090514
 # If downloading a numbered tarball, unpack it into a directory 
 # with a corresponding name, like /IPP/ipp-2.6.1. The extlibs and extperl
 # tarballs originally needed to be unpacked into /IPP/extlibs and /IPP/extperl (i.e. neighbouring
 # the IPP source code directory), but are now *inside* the IPP source tree.
 
 # Set psconfig id of new version
 psconfig svn-20090514
 # Point to where CFITSIO will be
 export CFITSIO=/IPP/svn-20090514.lin64/
 
 # For IPP versions created 2009-05-13 or earlier, install autoconf-2.61 by hand if you don't have it
 # or a higher version - copy it from /IPP/extlibs/autoconf-2.61.tar.gz 
 # or get it from http://www.gnu.org/software/autoconf/
 cd /IPP/extlibs/autoconf-2.61
 ./configure --prefix=/IPP/svn-20090514.lin64/
 make && make install
 # Now jump down to "Compile and install IPP"

 # IPP versions created 2009-05-14 or later contain autoconf, automake, libtool, pkgconfig in extlibs
 # For those, make sure that you have the correct versions, ESPECIALLY ON MACS, by force building them
 cd /IPP/svn-20090514/psconfig/
 # Force creation of psconfig.csh in current directory
 psbuild -bootstrap .
 # These and potentially more env variables can upset libtool if set, so unset them
 unset D U F2C F77

 # Build "build" autotools
 pschecklibs -force build

 # Compile and install IPP
 cd /IPP/svn-20090514/psconfig/
 # (if you're not already there)
 psbuild -dev -extbuild 
 # omit the -dev if building from a version-numbered tarball
 # add -clean -rebuild on recompiling to make sure that earlier versions are cleaned
 # and installation target directories reset.

If using pantasks, update your ~/.bashrc (or equivalent) to point to the new version, and make sure that you can ssh to other machines and call IPP commands there without entering a password (see Pantasks_FAQ#Whyaremynodesdownorresp).

Done!

To use ippMonitor

ippMonitor is a web interface to see the state of the various pipelined reduction steps in the mySQL database driving everything. This needs to be installed in a separate step, after making sure that mySQL is running, apache is running with php installed, and php can talk to mySQL.

The ippMonitor installation is done by

cd /IPP/svn-20090514/ippMonitor
psconfigure --dbhost aida77 --dbuser ipp --dbpass XXXXXX --htdocs /srv/www/htdocs
make

You need to be able to write to /srv/www/htdocs.

Just Ohana / dvo

I wanted an install tree that has just Ohana i.e. dvo. To do that, I say

 psconfig dvo-2.2

which sets up a new install tree $PSCONFDIR/dvo-2.2. I then compile and install only Ohana:

 psbuild -dev -only Ohana -rebuild -clean
 psbuild -dev -only ippconfig # Otherwise you have no config files...
 # Again, omit -dev if building from numbered tarball

You need -rebuild whenever there may still be files pointing to the previous install directory - without it, nothing happens because those are still up to date. I just threw in -clean for good measure, as I wouldn't bet on everything working without it.

Note both of these don't quite work automatically, as any libraries that are not installed in /usr/local or another standard location need to be copied into the version-dependent tree's include/ and lib/ subdirectories.

Just analysis tools but not pipeline or anything that requires sql

 psconfig ipp-2.2-nosql
 psbuild -only Ohana -rebuild && psbuild -start psLib -stop ppSim -rebuild && psbuild -only ippconfig -rebuild

I tried these without -clean and will see what happens.

Running

To use my just-Ohana tree, I log in and say

 psconfig dvo-2.2

I can then use dvo.

Similarly, for the analysis-only distribution I say

 psconfig ipp-2.2-nosql

and can run psphot.