Skip to content

JeffersonLab/clas12-env

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

clas12-env

Build Status

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.

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

About

No description, website, or topics provided.

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published