Skip to content

Latest commit

 

History

History
115 lines (95 loc) · 4.81 KB

README.md

File metadata and controls

115 lines (95 loc) · 4.81 KB

clas12-env

Build Status

This is just a modulefile-based environment setup for CLAS12 software. Its main branch is deployed on CVMFS to support running CLAS12 software at JLab, on the Open Science Grid, or on any supported operating system with CVMFS access.

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 a given operating system or compiler are not installed, these modulefiles will only print a warning (and Java components should still work).

Quick Start

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 ...
-------------------------------------------------------------------

Special Modules

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.

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, and PKG_CONFIG_PATH for these C++ libraries:
  • pymods
    • sets PYTHONPATH to pickup these pip-installed packages (and their dependencies):
      • sqlalchemy
      • pymysql
      • ply
      • ninja
      • jinja
      • meson
      • pandas

Details

Directory Structure

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

Utilities

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 paths
  • functions.tcl helper Tcl procedures used in various modulefiles
  • siteconfig.tcl unused, a modulefile configuration for registering Tcl procedures
  • .generic determines a version number from a modulefile's filename and loads its .common