Files
Jungfraujoch/docs/SOFTWARE.md
T
leonarski_fandClaude Fable 5 70c4d871b6 Documentation sweep: Rugnux naming, repository citations, defect pass
- Capitalize Rugnux as a proper noun throughout the prose; the command
  stays lowercase `rugnux` in code font. RUGNUX_OVERVIEW.md is retitled
  "What Rugnux does".
- ACKNOWLEDGEMENT.md cites the raw-data repositories only: dataset counts
  and DOI prefixes moved out (EXTERNAL_TEST_DATA.md owns them), the ESRF
  data portal gains its citation (Dimper et al. 2019), and MXRDR remains
  name + link - it has no canonical citation paper.
- RUGNUX_FORMATS.md: the CCD formats (marCCD, SMV) are supported as-is
  with very limited scope, and per-panel XFEL data is not read.
- Fix wrong facts a reader would act on: nonexistent `make jfjoch`
  targets, invalid udev rules, PUSH sockets documented as PULL, swapped
  writer width/height, underload semantics, the transposed pixel-mask
  numpy example (the server checks width and height separately), the
  Durin/Neggia mask-bit table, FPGA threshold register addresses and the
  mailbox bit field, the I2C core's document number (PG090), an inverted
  MODEL_FIT_SIGMA formula, a self-inconsistent worked report example,
  and 11 cross-page anchors whose slugs carry MyST section numbers.
- Unify CC1/2 spelling in prose; math notation and report keys unchanged.
- Sweep grammar, typos and editing residue across the FPGA, deployment,
  streaming and analysis pages, including historical CHANGELOG typos.
- rugnux_cli.cpp: the -S usage/error examples pair 96 with P43212;
  92 names a different group.
- Root THIRD_PARTY_NOTICES.md: scope the GPL-compatibility claim (CUDA
  EULA) and the vendored-table intro (traccc); the docs copy regenerates
  via update_version.sh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 08:07:45 +02:00

49 lines
3.1 KiB
Markdown

# Software requirements
## Operating system
Recommended operating system is Red Hat Enterprise Linux (RHEL) / Rocky Linux versions 8 or 9.
For these operating systems we provide RPMs with pre-built binaries to simplify deployment.
On an 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 by providing some packages from external repositories.
Two programs additionally run on **Windows 11**: the desktop viewer `jfjoch_viewer`, shipped as a
pre-built installer, and [`rugnux`](RUGNUX.md), the offline analysis CLI, shipped as a `.zip`. Both
can be built from source with Visual Studio 2026 (MSVC) and CUDA 13.3 — the viewer additionally
needs Qt 6.11; see
[jfjoch_viewer ▸ Building from source on Windows](JFJOCH_VIEWER.md#building-from-source-on-windows).
The Windows artefacts bundle the Qt runtime (viewer only) and, on the CUDA builds, the cuFFT DLL, so
end users need neither Qt nor a CUDA toolkit installed — only an NVIDIA GPU driver for the GPU path.
On Linux the portable archives link CUDA entirely statically and so need nothing but the driver.
`rugnux` is also built for **64-bit Arm Linux** (GH200, DGX Spark). The rest of Jungfraujoch is
Linux-only and x86-64-only. See [Release contents](RELEASE_CONTENTS.md) for the CPU baseline and
CUDA requirements of each released package.
## Software dependencies
Required:
* C++20 compiler and C++20 standard library; recommended GCC 11+ or clang 14+ (Intel OneAPI and AMD AOCC also work)
* CMake version 3.26 or newer + a build tool (GNU make or Ninja)
HDF5, libtiff, libjpeg-turbo, zlib and Eigen used to be required system packages; they are now
downloaded and built automatically by CMake (see the note below), so none of them needs to be
installed. Beyond the optional dependencies listed below, no third-party library has to be provided by the host any more.
Optional:
* CUDA compiler version 12.8 or newer - required for the MX fast feedback indexer and GPU analysis
* FFTW library - for indexing if GPU/CUDA is absent (also auto-downloaded by CMake)
* Node.js - to build the frontend
* Qt version 6 (for jfjoch_viewer)
* OpenSSL 3.0 or newer and the Kerberos development headers (`krb5-devel` / `libkrb5-dev`) -
required to build jfjoch_viewer on Linux, where the fetched libcurl uses them for TLS and
Negotiate; a build on OpenSSL 1.1 fails in libcurl
Many further dependencies (spdlog, Zstandard, HDF5, slsDetectorPackage, libzmq, libtiff,
libjpeg-turbo, Ceres, the fast feedback indexer, Catch2, ...) are downloaded automatically
by CMake and statically linked; building therefore requires network access on the first configure.
zlib (as zlib-ng in its zlib-compatible mode) and Eigen are among them: a copy already on the
machine is used instead if the configure is given `-DZLIB_ROOT=<prefix>` or `-DEigen3_DIR=<dir>`.
Others are vendored directly in the source tree. The complete list of third-party components, with
copyright holders, licenses and verbatim license texts, is in
[Third-party software notices](THIRD_PARTY_NOTICES.md) and the `licenses/` directory.