GlueX Software Setup
From GlueXWiki
Contents
Offline Software Overview
Required Lab-External Software
- GSL: Homepage, Source Tarballs
- Xerces: Homepage, Source Tarballs
- CERNLib: Homepage, CERNLib Installation Notes, OpenMotif
- CLHEP: Homepage, Source Tarballs
- ROOT: Homepage, Source Tarballs (e.g. root_v5.34.19.source.tar.gz), Installing from Source
Required Lab-Internal Software
- CCDB: Tagged Releases, Trunk
- HDDS: Tagged Releases, Trunk
- JANA: Downloads, Tagged Releases, Trunk
- Hall-D sim-recon: Tagged Releases, Trunk
- Hall-D scripts: Trunk
Optional Software
- AmpTools:
Build Dependencies
- If you re-build one of the following, you must also rebuild (in order):
Xerces: HDDS, JANA, sim-recon ROOT: JANA, sim-recon CCDB: JANA, sim-recon HDDS: sim-recon JANA: sim-recon EVIO: sim-recon
Environment
- There should be three levels for the software environment: user-specific, release-specific, and base. For best-practice, environment variables should NEVER EVER (!!) be put in your .cshrc (or equivalent) file. This is because if you ever need to switch between environments (e.g. between a "data challenge" release and the latest trunk) it gets very messy and it's very easy to make a mistake. It's far safer (and cleaner) to keep everything separate. Ignore this at your own peril ...
User-Specific Environment Setup
- This is so that users can link against a centrally-managed release. For example, they can define their $HALLD_MY variable here, which specifies where their plugins are installed. This should call the desired release-specific build. For example, env_gluex_user.csh:
# Set personal path (This usually corresponds to the home area of the trunk (e.g. https://halldsvn.jlab.org/repos/trunk/home/pmatt/)) setenv HALLD_MY /home/$USER/gluex/home/$USER/ # Source the release environment source /home/gluex/env_gluex_2014_06_30_rhel6
- Also, advanced users (e.g. developers) can use this to override the release-specific variables (e.g. A test build of sim-recon ($HALLD_HOME)). For example, env_gluex_development.csh:
# (FOR DEVELOPERS ONLY): Override release-specific HALLD_HOME (or other software paths) for custom (i.e. development) builds. setenv HALLD_HOME /home/$USER/gluex/sim-recon/development/ # Source the release environment source /home/gluex/env_gluex_2014_06_30_rhel6
Release-Specific Environment Setup
- For each coherent release of the software, an environment file should be used to specify the versions/paths to all of the software used. For example, env_gluex_2014_06_30_rhel6:
#!/bin/csh -f ### DEFINE RELEASE-DEPENDENT VARIABLES (BASE_FOLDERS/VERSIONS/TAGS/BRANCHES/ETC.) if ( ! $?JANA_RESOURCE_DIR ) then setenv JANA_RESOURCE_DIR /home/gluex/resources/datachallenge_2/ endif if ( ! $?GLUEX_SCRIPTS ) then setenv GLUEX_SCRIPTS /home/gluex/scripts/scripts_r14152/ endif setenv BMS_OSNAME `$GLUEX_SCRIPTS/osrelease.pl` # Redirect for earlier builds if ($BMS_OSNAME == Linux_RHEL5-x86_64-gcc4.1.2) then setenv BMS_OSNAME Linux_RHEL5-x86_64-gcc4.2.3 endif if ( ! $?CERN ) then setenv CERN /usr/local/cern_64 endif if ( ! $?CERN_LEVEL ) then setenv CERN_LEVEL 2005 endif if ( ! $?XERCESCROOT ) then setenv XERCESCROOT /home/gluex/xerces/xerces-c-3.1.1_v2/ endif if ( ! $?CLHEP ) then setenv CLHEP /home/gluex/clhep/2.1.3.1/ endif if ( ! $?GSL_HOME ) then setenv GSL_HOME /home/gluex/gsl/gsl-1.15/ endif if ( ! $?ROOTSYS ) then setenv ROOTSYS /home/gluex/root/v5-34-14_rhel5/ endif if ( ! $?CCDB_HOME ) then setenv CCDB_HOME /home/gluex/ccdb/ccdb_1.02_rhel5/ endif setenv USE_SQLITE 1 if ( ! $?SQLITE_PATH ) then setenv SQLITE_PATH /home/gluex/ccdb/sqlite/ccdb_2014-06-28.sqlite endif if ( ! $?JANA_HOME ) then setenv JANA_HOME /home/gluex/jana/jana_0.7.1p3_rhel5/${BMS_OSNAME}/ endif if ( ! $?HDDS_HOME ) then setenv HDDS_HOME /home/gluex/hdds/hdds-2.1/ endif #if ( ! $?AMPTOOLS_HOME ) then # setenv AMPTOOLS_HOME /home/gluex/AmpTools/AmpTools_0.6.2/ #endif if ( ! $?HALLD_HOME ) then setenv HALLD_HOME /home/gluex/sim-recon/sim-recon-2014-06-30/ endif ### SET ENVIRONMENT source /home/gluex/env_cmu_gluex_base
</pre>
Base Environment
env_gluex_base