Software requirements¶
Operating system¶
Recommended operating system is Red Hat Enterprise Linux (RHEL) / Rocky Linux versions 8 or 9. For this operating systems we provide RPMs with pre-built binaries to simplify deployment. On experimental basis we also build repositories for Ubuntu 22.04 and 24.04.
Running Jungfraujoch on Red Hat Enterprise Linux 7 is currently not tested and not recommended, but likely possible with providing some packages from external repositories.
Software dependencies¶
Required:
C++20 compiler and C++20 standard library; recommended GCC 11+ or clang 14+ (Intel OneAPI, AMD AOCC)
CMake version 3.21 or newer + GNU make tool
zlib compression library
EIGEN library (only on a compilation system)
HDF5 library version 1.10 or newer - see github.com/HDFGroup/hdf5
TIFF library - see gitlab.com/libtiff/libtiff
JPEG library (preferably jpeg-turbo) - see github.com/libjpeg-turbo/libjpeg-turbo
Optional:
CUDA compiler version 11 or newer - required for MX fast feedback indexer
FFTW library - for indexing if GPU/CUDA is absent
NUMA library - to pin threads to nodes/CPUs
Node.js - to make frontend
Qt version 6 (for jfjoch_viewer)
Automatically downloaded by CMake and statically linked:
SLS Detector Package - see github.com/slsdetectorgroup/slsDetectorPackage
Zstandard (Facebook) - see github.com/facebook/zstd
Cpp-http library for HTTP server and client - see github.com/yhirose/cpp-httplib
Fast feedback indexer (Hans-Christian Stadler, PSI) - see github.com/paulscherrerinstitute/fast-feedback-indexer
Catch2 testing library - see github.com/catchorg/Catch2
Ceres Solver library for least square optimization - see [http://ceres-solver.org/]
Spdlog logging library - see github.com/gabime/spdlog Please follow the link provided above to check for LICENSE file. Building code with dependencies above requires access from the build system to github.com.
Directly included in the repository:
JSON parser/writer from N. Lohmann - see github.com/nlohmann/json
Xilinx arbitrary precision arithmetic headers - see github.com/Xilinx/HLS_arbitrary_Precision_Types
Bitshuffle filter from K. Masui - see github.com/kiyo-masui/bitshuffle
Fast replacement for Bitshuffle pre-compression filter (Kal Cutter, DECTRIS) - see github.com/kalcutter/bitshuffle
Tinycbor (Intel) - see github.com/intel/tinycbor
LZ4 compression by Y.Collet - see github.com/lz4/lz4
ZeroMQ library (through slsDetectorPackage) - see github.com/zeromq/libzmq
Base64 decoder/encoder - see gist.github.com/tomykaira
GEMMI library by Global Phasing - see github.com/project-gemmi/gemmi
For license check LICENSE file in respective directory