Set up ICARUS software development environment - NuSLAC/ICARUSCookbook GitHub Wiki

0. Connect to the ICARUS machine

To access the Fermilab machine, we use kerberos. So we will kinit first.

  1. kinit $[email protected]
  2. ssh $[email protected]

icarusbuild01 is not the only option: you can log into icarusgpvm0X (where X is an integer starting from 1) as well. In this tutorial we use icarusbuild01 exclusively, which is a physical server with real local space in /scratch unlike all other machines. In the following instruction we use /scratch space which is a local physical disk available on icarusbuild01 machine only. If you are using other machines, try to use /icarus/data or /icarus/app. These paths are also available on icarusbuild01 but slower as they are network mounted vs. /scratch is a local disk. For building a software, this makes a significant difference.

1. Setup your workspace

  1. Create a space under /scratch/icarus/$USER
  • Time to time, please check space usage: du -hs /scratch/icarus/$USER or df -h /scratch
  1. Copy setup scripts: scp -r /pnfs/icarus/persistent/users/kterao/setup /scratch/icarus/$USER/

  2. Modify setup/setup.sh script: EDITOR and MY_LARSOFT_VERSION to latest

  • KAZU please explain how to get latest version.
  1. cd /scratch/icarus/$USER && source setup/setup.sh will create a directory mrbdev_vXX_YY_ZZ depending on your larsoft version. This is the top directory of your local software development area. You can access this directory and some related important directories by the following shell environment variables:
  • $MRB_TOP ... mrbdev_vXX_YY_ZZ directory
  • $MRB_BUILDDIR ... the build directory, mrbdev_vXX_YY_ZZ/build* that will be created upon attempt to build the local installation. Useful for make --directory=$MRB_BUILDDIR to initiate the local build.
  • $MRB_INSTALL ... the install directory, mrbdev_vXX_YY_ZZ/localProducts* that you will need to tar for the grid job submission.
  • $MRB_SOURCE ... the software download directory. (ex. mrb g icaruscode)
  • Once you checkout the software, install with mrb i -jN (-jNUMBER denotes the number of parallel processes reserved during installation)
  • mrbsetenv: checks product dependencies.

printenv | grep LAR

These shell environment variables are set upon mrbsetenv. Any time you connect to the machine, begin with source /scratch/icarus/$USER/setup/setup.sh. Then you might do mrbsetenv for completion.

  • KAZU please explain ups list command
  • dependency tree

2. Setup icaruscode

  1. cd $MRB_TOP/srcs
  2. mrb g icaruscode