Below is some more detailed information about the off-line LCLS software orgnaization.The LCLS software is organized into releases and packages. A Release is a collection of the particular versions of the software packages. Every release has a name which includes the release "version", for example "ana-0.2.3". There are different types of releases built for different purposes, most analysis users need analysis releases whose names start with "ana-".

Software package is a directory containing a set of files or other directories. Packages either implement particular functionality (library and/or executables) or provide interface to external software (libraries not contained in the releases).

The centrally-built releases reside in one central place in the directory whose location is determined by environment variable SIT_RELDIR (which is defined by the sit_setup script). In that directory there is a separate directory for each release corresponding to the release name. Additionally there are symbolic links which define aliases such as "ana-current" pointing to the current (usually most recent) analysis release.

Some software can be run directly from the central releases, examples of that are HDF5 utilities, XTC utilities, etc. However if user wants to develop new code such as analysis modules for the psana framework then the user needs to create user release (sometimes also called test release) in user's own area. User release is based on a particular central release and reuse parts of the base release. The packages that exist in the user release override the same packages in the base release, all other packages and products of those packages (libraries/binaries) come from the base release.

To create user release one needs to use newrel command which takes two parameters: base release name and user release directory, e.g.:

newrel ana-current my_ana_rel

This command will create my_ana_rel directory in the current directory which is the user release.

User release contains several special files and directories:

  • .sit_release – this file contains the name of the base release (such as ana-0.3.5) for the user release
  • SConstruct – this file is used by the build system (scons) to build release
  • arch – directory containing executables and libraries built by scons
  • build – temporary directories used by scons to build your release
  • data – directory for various data files
  • include – directory for include files

In addition to these special files user release can contain regular packages. One can checkout package from the base release with the command:

kinit               # needed once to obtain Kerberos ticket which is valid for 1 day
addpkg PackageName    # to use the same version as in base release
addpkg PackageName V00-00-01    # to use different version

or create completely new package with the command:

newpkg PackageName

To see the list of packages in their versions in the current release (also called test release) compared to the base release one can use relinfo command:

% relinfo
Pkg/Rel   TEST           BASE(ana-0.3.5)
CodeGen   V00-00-18(-)   V00-00-19(+)
MyAna     -              -
psana     V00-00-11      V00-00-11
  • No labels