The off-line LCLS software is organized into releases and packages. 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 pyana or psana frameworks 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 asana-0.3.5
) for the user releaseSConstruct
– this file is used by the build system (scons) to build releasearch
– directory containing executables and libraries built by sconsbuild
– temporary directories used by scons to build your releasedata
– directory for various data filesinclude
– 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