Compile and deploy the DELPHI software stack
Deployment scripts
The scripts in this repository will
- fetch the code from gitlab
- compile everything
- run very basic tests
Essentially, the can be used to create a new release on CVMFS or a new software CD for archival
Notes
- Only Linux (i386 and x86_64) is supported. Aarm64 is known not to work.
- The default is to compile in 64bit mode. Legacy 32bit compiles are possible by setting
export LEGACY=' -m32 '
* GPHIGS builds are no longer supported.
Runtime scripts
This repository should also contain scripts needed to setup the environment at run time
Prerequisites
You need to have at least the following packages installed:
- gcc and gfortran with 32bit support, including static libraries
- X11 development libraries
- Motif development libraries
- OpenGL and devlepment libraries
- xorg fonts
- tcsh
Supported modules
The following DELPHI software components are supported by this script
- cernlib (from https://gitlab.cern.ch/dphep)
- dstana
- simana for the years 1992-2000
- delgra
- DELPHI event server
New modules
- OpenPhigs: forked from upstream version and added Fortran bindings
Unsupported modules
- WIRED (32bit, 64bit). As delgra support is continued, this is not considered to be a problem.
- Idea, due to c++ language changes
Operating systems
This stack has been used on
- SLC6 (32bit)
- CentOS7 (32bit, 64bit)
- CentOSStream8 (32bit, 64bit)
- CentOSStream9 (32bit, 64bit)
- Ubuntu 16 (32bit) (unsupported)
- Ubuntu 18 (32bit) (unsupported)
- Ubuntu 20 (64bit)
- Ubuntu 21 (64bit) (unsupported)
- Ubuntu 22 (64bit)
- Fedora 29 (32bit) (unsupported) Binaries are available on /cvmfs/delphi.cern.ch.
For unsupported versions there may be binaries avaiable on cvmfs, however, they are discontinued and are likely not up to date.
Notes on CentOS6
Packages required to build and run:
# yum install cmake freetype-devel.i686 gcc-c++ gcc-gfortran git glibc-devel.i686 glibc-headers.i686 imake libgfortran.i686 libICE-devel.i686 libpng-devel.i686 libnsl2-devel.i686 libSM-devel.i686 libstdc++-devel.i686 libstdc++-devel.x86_64 libX11-devel.i686 libXfont2-devel.i686 libXfont-devel.i686 libXft-devel.i686 libXmu-devel.i686 libXpm-devel.i686 libXt-devel.i686 mesa-libGL-devel.i686 mesa-libGLU-devel.i686 motif-devel.i686 tcsh xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi.noarch
Notes on CentOS7
CentOS7 ships with gfortran 4.8.5. CERNLIB needs to be compiled with an additional flag to switch off aggressive loop optimisations which otherwise break bits of hbook.
Make sure that you have the following packages installed:
For 32bit:
# yum install cmake3 freetype-devel.i686 glibc-devel.i686 glibc-headers glibc-headers.i386 glibc-headers.i686 libgfortran5.i686 libgfortran.i686 libpng-devel.i686 libSM-devel.i686 libstdc++-devel.i686 libX11-devel.i686 libXfont2-devel.i686 libXfont-devel.i686 libXft-devel.i686 libXft-devel.i686 libXmu-devel.i686 libXpm-devel.i686 libXt-devel.i686 motif-devel.i686 tcsh xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi.noarch mesa-libGL-devel.i686 mesa-libGLU-devel.i686 libSM-devel.i686 libXaw-devel.i686 libICE-devel.i686
For 64bit:
# yum -y install cmake3 freetype-devel glibc-devel glibc-headers glibc-headers glibc-headers git imake libpng-devel libSM-devel libstdc++-devel libX11-devel libXfont2-devel libXfont-devel libXft-devel libXft-devel libXmu-devel libXpm-devel libXt-devel motif-devel tcsh xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi.noarch gcc gcc-c++ gcc-gfortran mesa-libGL-devel mesa-libGLU-devel libSM-devel libXaw-devel libICE-devel
You may need to set a link from cmake3 to cmake to ensure that cmake3 is used.
Notes on CentOS Stream 8 and 9
# dnf install freetype-devel gcc gcc-c++ gcc-gfortran git glibc-devel glibc-headers imake libgfortran libnsl2-devel libnsl2 libSM-devel libSM libstdc++-devel libX11-devel libXaw-devel libXfont2-devel libXft-devel libXmu-devel libXpm-devel mesa-libGL-devel mesa-libGLU-devel mesa-libGLw-devel motif-devel tcsh xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi libGLEW glew-devel
Notes on Fedora
Fedora is similar to CentOS. Please refer to the package lists for these.
Notes on Ubuntu
Ubuntu 18 ships with gfortan 7.x. As of Ubuntu 20 there are no 32bit Motif development libraries available any longer, therefore onky the 64bit stack can be compiled and shipped.
Please ensure you have at least these libraries installed:
apt install cmake gcc g++ gfortran libx11-dev libx11-dev libx11-6 libx11-6 libglu1-mesa libglu1-mesa-dev xutils-dev libmotif-dev libmotif-common r-base-dev tcsh xfonts-100dpi xfonts-75dpi libxfont2 xutils-dev libxbae-dev libxaw7-dev libssl-dev libglew-dev libdlm-dev
The CMake version shipped with Ubuntu 18.04 is too old to be used with the community CERNLIB. As a work around, get a recent version in source code first, compile and install into /usr/local.
On Ubuntu 18, for 32bit, please ensure that you have at least these packages installed:
# apt install cmake gcc--multilib g++-4.8-multilib gfortran-4.8-multilib libx11-dev libx11-dev:i386 libx11-6 libx11-6:i386 libglu1-mesa:i386 libglu1-mesa-dev:i386 xutils-dev libmotif-dev:i386 libmotif-common:i386 r-base-dev tcsh xfonts-100dpi xfonts-75dpi libxfont2:i386
Notes on DELGRA
Support for GPHIGS has been dropped in favor of OpenPHIGS with self-implemented Fortran bindings. No license is required any longer. The caveat is that this only works with recent operating systems due to the OpenGL implementation and only in 64bit.
Please check https://gitlab.cern.ch/delphi/delgra for more information.
Compiling
Generally, there is no need for end users to recompile the stack. Binaries are made available via /cvmfs/delphi.cern.ch.
You need kerberos read access to all sub-projects in the DELPHI project. This should be the case automatically if you are a member of the CERN group xx. In addition, you need to have access to https://gitlab.cern.ch/dphep/cernlib/cernlib
Ensure that you have enough free space, at least 8GB would be ok. Install the dependencies as mentioned above, for the OS you use.
First, create a working directory and clone this project
mkdir git
cd git
git clone https://:@gitlab.cern.ch:8443/delphi/deployment.git
cd deployment/install
Then you can build all components. Set the environment variable DELPHI_INSTALL_DIR
to
determine where the code should go to. If you are working on a machine which has /cvmfs mounted, DELPHI_INSTALL_DIR and CERN may point to /cvmfs.
Building the full 64bit stack
As of 28/9/2022 64bit builds will use the community cernlib with cmake
instead of imake
. This allows for builds on aarm64
.
unset CERN
export DELPHI_INSTALL_DIR=~/delphi64
make profiles
. delphi.sh
make all > make_all.log 2>&1
Building the full 32bit stack
unset CERN
export DELPHI_INSTALL_DIR=~/delphi32
export LEGACY='-m32'
make profiles
. delphi.sh
make all > make_all.log 2>&1
Individual modules can be (re-)build one by one, respecting dependencies. Almost all modules need cernlib.
Contributing
Contributions and issue reports is highly appreciated. Feel free to send patches and/or bug reports.