PsrSoft

PSRSoft is a system for easily installing and using various pulsar related software packages, without having to worry about strange dependencies and the typical unusual installation scripts.
PSRSoft provides a 1-line install for large or complicated packages like psrchive, tempo2, etc.

Searching/Installing packages

For installing psrsoft itself, see the installation section.

PSRSoft has a large number of packages that can be installed, to list of the currently available packages:

$PSRSOFT_DIR/bin/psrsoft --search

You can optionally specify a regular expression to search for. (e.g. --search "psr.*" would find all packages starting with 'psr')

$PSRSOFT_DIR/bin/psrsoft "package(s)"

If more then one package matches the name you specifed (using a regex search), you will be prompted to specify the package you intended.

You will be presented with the list of packages that psrsoft will install. This may include more packages than you specified on the command line as most packages have many dependencies.
Packages will be installed in $PSRSOFT_USR, which is specified in $PSRSOFT_DIR/config (default is $PSRSOFT_DIR/usr)

For example:

 $PSRSOFT_DIR/bin/psrsoft psrchive
 Getting latest package descriptions... done
 Searching for package psrchive in testing tree
 1) psrchive 12.1+

 Analysing dependancies


 Packages to be installed...
 ===========================

  1          pgplot |R | (5.2 2009-10-06 14:47)  replaces [5.2 2009-10-06 14:47]
  2            fftw |R | (3.1.2 2009-10-06 14:47)  replaces [3.1.2 2009-10-06 14:47]
  3          tempo2 |DO| (unk 2009-10-06 13:07)  Dirty
  4           tempo |NO| (11.010 2009-09-18 21:33)
  5         cfitsio |NO| (3090 2009-10-06 14:47)
  6          psrxml |NO| (1.05 2009-10-06 14:47)
  7        psrchive |N | (12.1+ 2009-10-06 14:47)
 Install 7 packages into /data/RUBICON_2/kei041/dev/psrsoft/usr? (y/n)

Note that the system lists 7 packages to be installed. The list of packages shows (in order), the build sequence number, the package name, the build flags (see below), the version to install, and if the package replaces any currently installed package.

By default psrsoft searches the "stable" package tree. If you cannot find the package you want, you can try the unstable "testing" tree:

$PSRSOFT_DIR/bin/psrsoft package(s) --testing

Build Status Flags

The install list shows between the '|' characters several possible build flags, just to let you know what's going on.

Possible options for the first flag are:

  • |N | A new package that is currently not installed
  • |R | A package that is currently installed, and being re-built with the same version (see --rebuild option).
  • |D | A package that is currently installed, and being re-built with the same version because it is "dirty" (that is, dependencies have changed since last install).
  • |U | A package that is currently installed, and a new updated version is being installed
  • |W | A package that is currently installed, and a older version is being installed (This should never happen, but included for future use)

Possible options for the second flag are:

  • | O|Package is optional
  • | X| Package is optional, and will not be installed
  • | -| A package that is optional, has been selected not to be installed, but is already installed (and will not be un-installed)

Optional Packages

Packages marked as optional can be skipped by re-running the psrsoft command with a --no-package option. E.g.:

$PSRSOFT_DIR/bin/psrsoft psrchive --no-cfitsio

Will build psrchive without cfitsio (unless it is already installed).

Currently this does not modify the package build command, so if you already have the package installed then it will likely still be detected by the build script.

Using software installed by psrsoft

Automatic Configuration

It is possible to start a new shell configured for use with psrsoft using the $PSRSOFT_DIR/bin/psrsoft-shell command

  • psrsoft-shell starts a new '''bash''' shell with the psrsoft environment loaded.
  • psrsoft-shell --tcsh starts a new '''tcsh''' shell with the psrsoft environment loaded.
  • Adding --fresh to either unloads most of the current environment, allowing for a "pure" psrsoft environment.

This is useful if you sometimes want to use the psrsoft installed package, but mostly want to use some other set of software.
If you want to use the psrsoft packages always, read the manual configuration section below and add the appropriate parts to your login scripts.

Manualy configuring

Psrsoft installs all software into $PSRSOFT_USR. Binaries go in bin/, libraries in lib/, etc. Assorted config files and auxiliary code are placed into share/.

Some packages work best with some extra environment variables set, if so, a file with the package name is placed in $PSRSOFT_USR/var/psrsoft/env/bash (or env/tcsh for tcsh).

Therefore to quickly get all environment variables, source each of the packages in that directory (e.g. add something like this to your login script)

bash:

 for env in $PSRSOFT_USR/var/psrsoft/env/bash/* ; do . $env ; done


tcsh:

 foreach env ( $PSRSOFT_USR/var/psrsoft/env/tcsh/* )
 source $env
 end


You will also want to add $PSRSOFT_USR/bin to your $PATH variable.


Installation of psrsoft


Installation of psrsoft just requires untaring the tarball:

http://www.pulsarastronomy.net/psrsoft/psrsoft.tar.gz

you will need to copy psrsoft/config/profile.example to psrsoft/config/profile and modify it if the default settings are not useful.
The directory created when untaring will be known as $PSRSOFT_DIR, however you do not have to set this variable if you do not move the relative path of the psrsoft executable.

Future plans and known bugs

Currently there are only two package indexes, stable and testing. In future there will be three trees of packages:

  • The stable tree will contain packages that have been tested on a range of archetectures, and therefore will update much more slowly than the testing packages.
  • The testing tree will again contain packages that have been built on at least one architecture, and are likely to be useable for most people.
  • The devel tree will download directly from the package version control, providing the latest version (and developer tools). These packages may not build at all!

I may implement portage style "USE" keywords, if I have time!