The DELPHI software libraries
General information
Since the end of the experiment, the computing landscape has changed dramatically. Central services extensively used by DELPHI are either gone or in the process
of being phased out. On the other hands, new services not known previously have popped up, replacing the original once.
Examples include:
- Official support for CERNLIB has been dropped. The last release was 2006b.
- LSF at CERN has been replaced by HTCondor
- AFS project and scratch spaces have been deprecated and removed
- The RFIO protocoll has been dropped.
- CASTOR has been replaced by CTA.
- The Fortran compiler g77 no longer exists, and has been replaced by gfortran
- 64bit Linux platforms have replaced all other architectures previously supported by DELPHI
- 32bit libraries start to disappear. As an example, on recent Ubuntu releases (20.04 and newer), there are no 32bit Motif development libraries any longer.
In order to keep things running as long as possible, changes to the environments had to been applied.
Community CERNLIB
In the past, DELPHI software has been shipped with its own version of CERNLIB. Since spring 2022, a community version is becoming available (https://gitlab.cern.ch/dphep) which supports 64bit. Recent versions of the software stack use these sources. Binaries are shipped along with the DELPHI software stack.
After the environment has been sourced, the environment variable CERN will point to the location of CERNLIB. In addition, the following environment variables are set (as before):
- CERN
- CERN_ROOT
- CERN_LIB
- CERN_PAM
- CERN_LEVEL.
Most of them are set for backward-compatibility with old code. The search path is setup accordingly, so that things like paw and cernlib can be run just as before.
DELPHI libraries and software stack
DELPHI software has traditionally only been tested in 32bit mode on Linux. As essentially all platforms are 64bit nowadays, all code needs to be cross-compiled for 32bit. The compiler used is gfortran. Default compiler flags for DSTANA are set. 32bit version are still the default, for the time being.
With the switch of the lxplus alias to CC7 in spring 2019, DELPHI libraries are now located on CVMFS, in /cvmfs/delphi.cern.ch. These libraries have been re-created using gfortran, and support for recent Linux flavors has been added. To initialise the environment, all that needs to be done is to source
- /cvmfs/delphi.cern.ch/setup.sh for bourne-like shells (eg. bash, zsh ...)
- /cvmfs/delphi.cern.ch/setup.csh for C-like shells (eg. csh, tcsh ...)
For DELPHI users at CERN (members of the xx Unix group), the setup is done automatically via the HEPiX scripts, as it used to be before.
Latest binaries from gitlab CI
For the most recent operating system versions supported at CERN, the latest binaries can as well be downloaded as artifacts of the continuous integration (CI) pipelines from https://gitlab.cern.ch/delphi/deployment. This can as well be useful for machines where CVMFS is not available. To do so, navigate to https://gitlab.cern.ch/delphi/deployment/-/pipelines, and check for the latest pipeline. On the right hand side, you can see three dots. Click on them, and choose the version you need for your system. The structure of the stack is described in https://gitlab.cern.ch/delphi/quickstart.
32bit DELPHI software stack on cvmfs (deprecated)
To initialise most recent 32bit versions, please source
- /cvmfs/delphi.cern.ch/setup-32bit.sh for bourne-like shells (eg. bash, zsh ...)
- /cvmfs/delphi.cern.ch/setup-32bit.csh for C-like shells (eg. csh, tcsh ...)
64bit DELPHI sofware stack on cvmfs (default)
64bit versions of the DELPHI software stack are available since spring 2022. There are no known issues, however, due to the number of changes, additional validation is appreciated.
To initialise most recent 64bit versions, please source
- /cvmfs/delphi.cern.ch/setup.sh for bourne-like shells (eg. bash, zsh ...)
- /cvmfs/delphi.cern.ch/setup.csh for C-like shells (eg. csh, tcsh ...)
When logging into lxplus at CERN with a DELPHI account, the setup is automatic (via hepix scripts).
Running locally
Running on Linux
You can run the stack either from lxplus.cern.ch or locally. If you are running Linux all you need is
- Install CVMFS. Configure it to mount /cvmfs/delphi.cern.ch
- Install EOS. Configure it to mount /eos/experiment
- Follow the notes at https://gitlab.cern.ch/delphi/deployment about the required packages for the chosen Linux flavor.
- Source the environment, as described above
Running on Windows
There are no native Windows builds, neither for CERNLIB nor for the DELPHI stack itself. However, as of Windows 10 you can run Linux binaries on Windows via WSL2. Proceed as follows:
- You may have to enable WSL2 support. Search for Windows Features and tick the related box
- Choose Ubuntu 22.04 as Linux flavor.
- Launch a Ubuntu shell
- Install CVMFS. Follow the instructions by the CVMFS team for Ubuntu/Debian. Configure it to mount /cvmfs/delphi.cern.ch
- Install EOS. Follow the instructions for Ubuntu/Debian. Configure it to mount /eos/experiment
- Follow the notes at https://gitlab.cern.ch/delphi/deployment about the required packages for the chosen Linux flavor.
- Source the environment, as described above
In case you see issues in linking, please check the compiler flags and try to fremove -fPIC if it is present.
Running on Apple
As of the time of writing this document, there are no builds available for Apple. There are requests to build CERNLIB for Apple, however, there are still issues which are to be investigated.
DELPHI software environment variables
After the environment has been setup, the following DELPHI specific variables are setup:
- DELPHI_INSTALL_DIR : current tip of the DELPHI software tree
- DELPHI : the DSTANA top directory
- DELPHI_BATCAVE : the location of PDL files (to resolved fatmen IDs)
- DELPHI_BIN : the DELPHI specific binaries
- DELPHI_BLKD : DELPHI block data
- DELPHI_CRA : DELPHI cradles
- DELPHI_DATA_ROOT : location of the DELPHI data (usually on EOS)
- DELPHI_DAT : DELPHI data directory
- DELPHI_DDB : DELPHI database directory
- DELPHI_LIB : DELPHI DSTANA libraries
- DELPHI_PAM : source code
- DELPHI_PATH : scripts directory
- DELPHI_ZIP : zip flag (on)
- DES_HOME: DELPHI event server
Default compiler flags
Default compilers and compiler flags are stored in the following environment variables when the software stack is initialised.
The following environment variables are defined:
- CCOMP : C-compiler
- CFLAGS : Flags for the C-compiler
- FCOMP : Fortran77 compiler
- F77 : Fortran77 compiler
- FFLAGS : Fortran77 compiler flags
- FOPT : Fortran77 compiler flags
- FTN : internal variable, prefix for certain files (fort.)
- ADDCOMP : Additional Fortran compiler flags
- ADDLIB : Additional libraries (eg block data to be linked in)
- LDFLAGS : additional linking flags
- XLF77 : Fortran77 compiler
- XDB : Debugger
- CXX: C++ compiler, with default options
- CC: C compiler, with default options
- FC: Fortran compiler, with default options
- LEGACY : Only defined on 32bit trees. If defined, it is set to '-m32'.
Other environment variables
- GRA_PLACE DELGRA installation directory. See DELGRA for more information.
- GROUP_DIR Group path. For compatibility.
- GROUPPATH Group scripts path. For compatibility.
- HOME HOME directory, for HTCondor.
- PLINAM set to Linux. Needed for Patch directives
- SCRATCH (DEPRECATED) AFS scratch space, defaults to /tmp now
- SCRATCH_WEEK (DEPRECATED) AFS scratch space, defaults to /tmp now
Porting software
When porting software, please review any local settings for the compiler flags you use, and use the above environment variables. These can differ, depending on the operating system and default compiler, which continues to change and require additional flags to make old code compile.
Last modified: Mon Jan 29 14:13 CET 2024