This is just a modulefile-based environment setup for CLAS12 software, used primarily at JLab and on the Open Science Grid.
Note:
- The modulefiles and software builds for GEANT4 used in this environment are documented separately and can be used independently.
- This is not a build system! If builds for your operating system or compiler aren't installed, these modulefiles will only print a warning.
Only at JLab:
module use /scigroup/cvmfs/hallb/clas12/sw/modulefiles
or, from anywhere with CVMFS:
module use /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/modulefiles
Then, to get the latest CLAS12 environment in one shot:
module load clas12
And then you can do stuff, e.g.:
ccdb -i
recon-util -h
gcc -o myana.exe -L$HIPO/lib -lhipo4 myana.c ...
clas12root -b -q -l mymacro.C
Note, the module show
command prints what a given module will do to your environment, and usually includes a link to the documentation for the package it supports, e.g.,
ifarm> module show iguana/0.7.0
-------------------------------------------------------------------
module-whatis https://github.com/jeffersonlab/iguana
prereq hipo/4.1.0
setenv IGUANA /path/to/iguana/0.7.0
etc ...
-------------------------------------------------------------------
Most modules here just update one's environment for a single, particular software package, by adding that package's directories to some runtime search path(s). The modules below are a bit different. Note that module show
will print what a given module will do to your environment.
- clas12
- loads a bunch of other modules to provide a full CLAS12 environment in one shot
- tmpfs
- sim
- initializes modulefiles from JLab's geant4 group, e.g.
gemc
- initializes modulefiles from JLab's geant4 group, e.g.
- scicomp
- initializes modulefiles from JLab's scicomp group, e.g.
cernlib/2023
- initializes modulefiles from JLab's scicomp group, e.g.
And these two modules below are required by many other clas12 modules to provide some 3rd-party dependencies:
- system
- sets
OSRELEASE
based on the operating system, via this script (only for convenience) - sets
CLAS12_HOME
based on the filesystem location of these modulefiles (only for convenience) - sets
PATH
,LD_LIBRARY_PATH
, andPKG_CONFIG_PATH
for these C++ libraries:
- sets
- pymods
- sets
PYTHONPATH
to pickup these pip-installed packages (and their dependencies):- sqlalchemy
- pymysql
- ply
- ninja
- jinja
- meson
- pandas
- sets
The environment modulefiles here use a particular relative directory structure for the software builds they reference:
└── some "top" directory
├── modulefiles (this repository)
├── noarch (Java/Python/SQLite)
├── almalinux9-gcc11 (C++/Python/JDK)
├── fedora36-gcc12 (C++/Python/JDK)
└── ...
And an example subset of the contents of an "osrelease" subdirectory:
└── almalinux9-gcc11
├── bin
├── lib
├── include
└── local
├── ccdb
│ └── 1.0
├── clas12root
│ └── 1.8.4
└── iguana
├── 0.6.0
└── 0.7.0
The modulefiles/util
directory contains both a module for clas12-utilities and some scripts used only during environment setup:
osrelease.py
prints a string determined by the operating system and compiler, for defining installation pathsfunctions.tcl
helper Tcl procedures used in various modulefilessiteconfig.tcl
unused, a modulefile configuration for registering Tcl procedures.generic
determines a version number from a modulefile's filename and loads its.common