# 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](https://github.com/HDFGroup/hdf5) * TIFF library - see [gitlab.com/libtiff/libtiff](https://gitlab.com/libtiff/libtiff) * JPEG library (preferably jpeg-turbo) - see [github.com/libjpeg-turbo/libjpeg-turbo](https://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](https://github.com/slsdetectorgroup/slsDetectorPackage) * Zstandard (Facebook) - see [github.com/facebook/zstd](https://github.com/facebook/zstd) * Pistache webserver - see [github.com/pistacheio/pistache](https://github.com/pistacheio/pistache) * Fast feedback indexer (Hans-Christian Stadler, PSI) - see [github.com/paulscherrerinstitute/fast-feedback-indexer](https://github.com/paulscherrerinstitute/fast-feedback-indexer) * Catch2 testing library - see [github.com/catchorg/Catch2](https://github.com/catchorg/Catch2) * Ceres Solver library for least square optimization - see [http://ceres-solver.org/] 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](https://github.com/nlohmann/json) * Xilinx arbitrary precision arithmetic headers - see [github.com/Xilinx/HLS_arbitrary_Precision_Types](https://github.com/Xilinx/HLS_arbitrary_Precision_Types) * Bitshuffle filter from K. Masui - see [github.com/kiyo-masui/bitshuffle](https://github.com/kiyo-masui/bitshuffle) * Fast replacement for Bitshuffle pre-compression filter (Kal Cutter, DECTRIS) - see [github.com/kalcutter/bitshuffle](https://github.com/kalcutter/bitshuffle) * Tinycbor (Intel) - see [github.com/intel/tinycbor](https://github.com/intel/tinycbor) * LZ4 compression by Y.Collet - see [github.com/lz4/lz4](https://github.com/lz4/lz4) * Spdlog logging library - see [github.com/gabime/spdlog](https://github.com/gabime/spdlog) * ZeroMQ library (through slsDetectorPackage) - see [github.com/zeromq/libzmq](https://github.com/zeromq/libzmq) * Cpp-http library for HTTP - see [github.com/yhirose/cpp-httplib](https://github.com/yhirose/cpp-httplib) * Base64 decoder/encoder - see [gist.github.com/tomykaira](https://gist.github.com/tomykaira/f0fd86b6c73063283afe550bc5d77594) * GEMMI library by Global Phasing - see [github.com/project-gemmi/gemmi](https://github.com/project-gemmi/gemmi) For license check LICENSE file in respective directory