Files
Jungfraujoch/THIRD_PARTY_NOTICES.md
T
leonarski_fandClaude Opus 4.8 0c1babd0ca
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m24s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m39s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m54s
Build Packages / build:rpm (rocky8) (push) Successful in 14m47s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 14m57s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m27s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m38s
Build Packages / XDS test (durin plugin) (push) Successful in 8m7s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m44s
Build Packages / Generate python client (push) Successful in 26s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (JFJoch plugin) (push) Successful in 8m22s
Build Packages / Build documentation (push) Successful in 1m0s
Build Packages / build:rpm (rocky9) (push) Successful in 12m15s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m52s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m25s
Build Packages / DIALS test (push) Successful in 12m49s
Build Packages / Unit tests (push) Successful in 58m37s
CMake: provide Eigen externally again; fix cpack NSIS icon escape
Revert Eigen from the FetchContent OVERRIDE_FIND_PACKAGE vendoring (cd394c52,
d4d2d0d8) back to an external find_package(Eigen3) dependency, like zlib. The
OVERRIDE_FIND_PACKAGE mechanism makes the Visual-Studio-bundled CMake (4.x
"-msvc") intermittently segfault during configure -- ~1/3 of fresh configures,
and 100% with Ceres CUDA enabled. The fault is in CMake's own FetchContent
variable-stack cleanup, reached when Ceres' find_package(Eigen3) resolves the
override through a nested FetchContent_MakeAvailable. Stock Kitware CMake runs
the identical scripts fine, so it is a bug in the VS-bundled cmake binary;
providing Eigen externally avoids that path entirely and is stable with Ceres
CUDA both on and off (verified 0 crashes; full CUDA build + NSIS installer
succeed under the VS-bundled cmake).

Also fix CPACK_NSIS_INSTALLED_ICON_NAME: the backslash value was written
verbatim into CPackConfig.cmake, where "\j" is an invalid escape that cmake 4.x
(CMP0010 strict) rejects when cpack re-parses it, so cpack failed under the
VS-bundled cmake (older/Kitware cpack only warned). Use a forward slash.

- image_analysis: keep Ceres USE_CUDA OFF (Jungfraujoch does not use Ceres' GPU
  solvers) but drop the now-obsolete "required to avoid the Windows cmake crash"
  rationale from the comment.
- docs: Eigen is a required external dependency again (SOFTWARE.md); the Windows
  viewer build provides zlib + Eigen externally (JFJOCH_VIEWER.md).
- THIRD_PARTY_NOTICES: move Eigen from the fetched-and-linked table to the
  external runtime-libraries table.

Docker images still need Eigen re-added (5.0.1, source build) -- to follow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 22:33:12 +02:00

6.7 KiB

Third-party software notices

Jungfraujoch is licensed under GPL-3.0 (see LICENSE); the FPGA design is licensed under CERN-OHL-S-2.0 (see fpga/LICENSE). It builds on a number of third-party components, acknowledged below as required by their licenses.

This file is the human-readable manifest. The verbatim license texts live in the licenses/ directory (regenerate with bash licenses/COLLECT.sh). The frontend's bundled JavaScript dependencies are listed separately in frontend/dist/THIRD_PARTY_LICENSES.txt, generated at build time (npm run licenses).

All licenses below are GPL-3.0-compatible.

Fetched at build time and statically linked into the C++ binaries

These are downloaded by CMake (FetchContent / ExternalProject) during the first configure and linked into the Jungfraujoch executables.

Component Version Copyright License (SPDX) License text
spdlog 1.17.0 Gabi Melman MIT spdlog.txt
Zstandard (pinned) Meta Platforms, Inc. BSD-3-Clause zstd.txt
HDF5 2.1.0 The HDF Group; UIUC BSD-3-Clause-style hdf5.txt
slsDetectorPackage 8.0.2 / 9.2.0 PSI LGPL-3.0-or-later LGPL, GPL
cpp-httplib 0.39.0 Yuji Hirose MIT cpp-httplib.txt
libzmq (ZeroMQ) 4.3.5 iMatix and contributors MPL-2.0 libzmq.txt
libtiff 4.7.1 Sam Leffler; SGI libtiff (BSD-like) libtiff.txt
FFTW 3.3.10 Matteo Frigo; MIT GPL-2.0-or-later fftw.txt
Ceres Solver (pinned) Google Inc. and contributors BSD-3-Clause ceres-solver.txt
fast-feedback-indexer (pinned) PSI BSD-3-Clause fast-feedback-indexer.txt
libjpeg-turbo (pinned) D. R. Commander and others; IJG IJG + BSD-3-Clause + Zlib libjpeg-turbo.txt
Catch2 3.13.0 Catch2 Authors BSL-1.0 catch2.txt

Catch2 is used only to build the test binary (jfjoch_test) and is not part of any shipped artifact; it is listed here for completeness.

Vendored directly in the repository

These are copied into the source tree (see the path) rather than fetched.

Component Path Copyright License (SPDX) License text
nlohmann/json include/nlohmann/ Niels Lohmann MIT nlohmann-json.txt
Macaron Base64 include/base64/ tomykaira MIT base64-macaron.txt
TinyCBOR frame_serialize/tinycbor/ Intel Corporation MIT tinycbor.txt
Bitshuffle compression/bitshuffle/ Kiyoshi Masui MIT bitshuffle.txt
Bitshuffle (h-perf) compression/bitshuffle_hperf/ Kal Cutter (DECTRIS) Apache-2.0 bitshuffle-hperf.txt
LZ4 compression/lz4/ Yann Collet BSD-2-Clause lz4.txt
HLS arbitrary-precision types fpga/include/ Xilinx, Inc. Apache-2.0 xilinx-hls-headers.txt
GEMMI gemmi_gph/ Global Phasing Ltd. MPL-2.0 gemmi.txt
xbflash.qspi tools/xbflash.qspi/ Xilinx / AMD Apache-2.0 xbflash-qspi.txt
wingetopt tools/wingetopt/ Todd C. Miller; The NetBSD Foundation ISC AND BSD-2-Clause wingetopt.txt

Runtime libraries and SDKs (shipped in binaries, not in the source tree)

Component Used by License Notice
Qt 6 jfjoch_viewer LGPL-3.0 notice, LGPL-3.0
NVIDIA CUDA Toolkit (cudart, cuFFT) CUDA builds NVIDIA CUDA EULA notice, EULA
zlib everywhere (compression) Zlib zlib.txt
Eigen analysis libs, Ceres, ffbidx (header-only) MPL-2.0 (+ BSD parts) eigen.txt, README

Frontend (npm) dependencies

The React/TypeScript frontend (frontend/) bundles a large transitive tree of npm packages, overwhelmingly MIT/ISC/BSD/Apache-2.0 licensed. Their full notices are generated automatically:

cd frontend && npm run licenses     # writes dist/THIRD_PARTY_LICENSES.txt

The generated file is produced as part of the frontend build target and installed alongside the served frontend, so the shipped web UI carries its own attribution.

Notes on weak-copyleft and attribution-sensitive components

  • MPL-2.0 (Eigen, GEMMI, libzmq): file-level copyleft. GEMMI is vendored in gemmi_gph/ in trimmed form; libzmq is fetched at build time; Eigen is provided externally (header-only). The corresponding source is available from each project upstream.
  • FFTW is GPL-2.0-or-later — compatible with, and absorbed by, this project's GPL-3.0 license.
  • Apache-2.0 components: where upstream ships a NOTICE file, it is reproduced in the corresponding licenses/ text.
  • Qt (LGPL-3.0) and NVIDIA CUDA (EULA) carry redistribution conditions beyond a copyright notice; see their dedicated notice files. The verbatim LGPL-3.0 and CUDA EULA texts are bundled (licenses/Qt6-LGPL-3.0.txt, licenses/NVIDIA-CUDA-EULA.txt); the CUDA EULA is the one shipped with CUDA Toolkit 12.8 — replace it if you build against a different toolkit version.