Setting Up the GlueX Environment

From GlueXWiki
Jump to: navigation, search

We have two methods for setting up the environment for GlueX software. They are complementary; depending on what you want to do one will be more appropriate than the other. Let's call them "setenv" and "build_scripts".

setenv

For every complete build of sim-recon, a setenv.csh and a setenv.sh file is produced. Sourcing the appropriate file will reproduce the GlueX-related environment that was used to build that version of sim-recon exactly. Find the files under the BMS_OSNAME directory (directory that looks like Linux_RHEL7-x86_64-gcc4.8.3 for example, pick the one appropriate for your platform) of HALLD_HOME.

If you need custom settings of the environment, make a copy of the appropriate file and edit it. The file is nicely formatted and the changes you need are not hard to figure out.

  • Advantages: nothing to change, guaranteed consistency
  • Disadvantages: customization by direct editing of script, need pre-existing successful build to start

Script Location at JLab

You can find the setenv scripts in the following directory:

 /group/halld/Software/builds/$BMS_OSNAME/sim-recon/sim-recon-<version number>/$BMS_OSNAME

where <version number> is the sim-recon version number you would like to use and $BMS_OSNAME is the "osrelease" identifier. To find a list of versions, see the sim-recon releases page. To get the osrelease identifier, execute the following command:

 /group/halld/Software/build_scripts/osrelease.pl

This script will print the appropriate value of $BMS_OSNAME to standard output. Alternatively you can set the BMS_OSNAME environment variable in C-shell-like shells with

 setenv BMS_OSNAME `/group/halld/Software/build_scripts/osrelease.pl`

or in Bourne-shell-like shells with

 BMS_OSNAME=`group/halld/Software/build_scripts/osrelease.pl`

build_scripts

There is a set of scripts to help you set-up your environment from scratch. Even if one is not starting from scratch, they can be used to set-up pre-existing sets of software. At JLab they are in /group/halld/Software/build_scripts . They can be cloned from https://github.com/jeffersonlab/build_scripts.

  • Advantages: do not need a pre-existing build, can customize configuration without re-writing scripts.
  • Disadvantages: more complicated, consistency of packages will be reported on if software built using the [???|GlueX VMS].

Default build at JLab

For C shell:

 source /group/halld/Software/build_scripts/gluex_env_jlab.csh

and for Bourne shell:

 source /group/halld/Software/build_scripts/gluex_env_jlab.sh

Nightly build at JLab

Source the file gluex_env_nightly.(c)sh with a date argument in YYYY-MM-DD format, e. g. for C shell

 source /group/halld/Software/build_scripts/gluex_env_nightly.csh 2015-07-15

and for Bourne shell:

 source /group/halld/Software/build_scripts/gluex_env_nightly.sh 2015-07-15

Using a version.xml

If you are using the standard Version Managment System (VMS) directory structure, you can use a version-specifying xml file to set up your environment. Version xml files are kept in /group/halld/www/halldweb/html/dist.

  1. Define GLUEX_TOP and BUILD_SCRIPTS
  2. Identify a version.xml, e. g., /path/to/version.xml
  3. source $BUILD_SCRIPTS/gluex_env_version.(c)sh /path/to/version.xml

At JLab, there is a GLUEX_TOP for each supported platform in /group/halld/Software/builds.

Using version.xml and a custom build of sim-recon

  1. Define GLUEX_TOP, BUILD_SCRIPTS
  2. Identify a version.xml, /path/to/version.xml
  3. eval `$BUILD_SCRIPTS/version.pl /path/to/version.xml`
  4. setenv HALLD_HOME /path/to/custom/sim-recon (or export HALLD_HOME=/path/to/custom/sim-recon)
  5. source $BUILD_SCRIPTS/gluex_env.(c)sh

Optional, Additional, User-specific Environment Variables

There are several optional, additional, user-specific environment variables that can be set:

  • $JANA_RESOURCE_DIR: Set this variable to any directory path. If defined, this directory is where JANA will download external resources needed for reconstruction, such as the magnetic field map.
  • $HALLD_MY: Set this variable to any directory path. This folder is then intended to contain your personal code, such as your analysis plugins. If this variable is defined prior to sourcing the environment, the appropriate subfolders will be added to $PATH, $LD_LIBRARY_PATH, and $JANA_PLUGIN_PATH, so that you can use your plugins/etc. within JANA.
  • When performing an analysis, you should use an SQLite file rather than directly accessing the CCDB database. If the path to your SQLite file is set by $SQLITE_PATH (variable not necessary, defined for convenience), change the following environment variables to:
setenv CCDB_CONNECTION sqlite:///${SQLITE_PATH}
setenv JANA_CALIB_URL sqlite:///${SQLITE_PATH}