Build Packages / Create release (push) Successful in 9s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 5m8s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 11m12s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 16m43s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 20m56s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 22m4s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 26m57s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 28m24s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 27m58s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 29m29s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 18m23s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 19m55s
Build Packages / Generate python client (push) Successful in 32s
Build Packages / Build documentation (push) Successful in 1m32s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 27m20s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 29m27s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 32m41s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 34m46s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 37m25s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 35m56s
Build Packages / Unit tests (push) Successful in 2h8m44s
Build Packages / Validation Battery (push) Successful in 33m35s
* jfjoch_broker: Optional live Rugnux analysis of DECTRIS rotation collections inside the broker, with merged data, maps and the placed model written beside the master file, the rotation lattice in the scan result, and a "Rugnux live" tab and dashboard row in the web frontend. * Rugnux: Faster processing, with molecular replacement and model validation spread over several GPUs and run on the Apple GPU on macOS. * Rugnux: The polarization stated in miniCBF and d*TREK headers is used, twinned crystals' space groups are decided more reliably, and a run that finds no lattice still reports every image. Reviewed-on: #86 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
139 lines
14 KiB
Markdown
139 lines
14 KiB
Markdown
<!--
|
|
Auto-generated from THIRD_PARTY_NOTICES.md by update_version.sh — do not hand-edit.
|
|
Edit the canonical THIRD_PARTY_NOTICES.md at the repository root instead.
|
|
-->
|
|
|
|
# Third-party software notices
|
|
|
|
Jungfraujoch is licensed under **GPL-3.0** (see [`LICENSE`](LICENSE.md)); the FPGA design is
|
|
licensed under **CERN-OHL-S-2.0** (see [`fpga/LICENSE`](FPGA_LICENSE.md)). 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/`](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/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, with one exception: the NVIDIA CUDA Toolkit is used under its own EULA (see the notes at the end of this file).
|
|
|
|
## 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](https://github.com/gabime/spdlog) | 1.17.0 | Gabi Melman | MIT | [spdlog.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/spdlog.txt) |
|
|
| [Zstandard](https://github.com/facebook/zstd) | 1.5.7 | Meta Platforms, Inc. | BSD-3-Clause | [zstd.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/zstd.txt) |
|
|
| [HDF5](https://github.com/HDFGroup/hdf5) | 2.2.0 | The HDF Group; UIUC | BSD-3-Clause-style + Apache-2.0 | [hdf5.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/hdf5.txt) |
|
|
| [slsDetectorPackage](https://github.com/slsdetectorgroup/slsDetectorPackage) | 8.0.2 / 9.2.0 | PSI | LGPL-3.0-or-later | [LGPL](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/slsDetectorPackage-LGPL-3.0.txt), [GPL](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/slsDetectorPackage-GPL-3.0.txt) |
|
|
| [cpp-httplib](https://github.com/yhirose/cpp-httplib) | 0.56.0 | Yuji Hirose | MIT | [cpp-httplib.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/cpp-httplib.txt) |
|
|
| [libzmq (ZeroMQ)](https://github.com/zeromq/libzmq) | 4.3.5 | iMatix and contributors | MPL-2.0 | [libzmq.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/libzmq.txt) |
|
|
| [libtiff](https://gitlab.com/libtiff/libtiff) | 4.7.2 | Sam Leffler; SGI | libtiff (BSD-like) | [libtiff.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/libtiff.txt) |
|
|
| [FFTW](https://www.fftw.org/) | 3.3.10 | Matteo Frigo; MIT | GPL-2.0-or-later | [fftw.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/fftw.txt) |
|
|
| [Ceres Solver](https://github.com/ceres-solver/ceres-solver) | (pinned) | Google Inc. and contributors | BSD-3-Clause | [ceres-solver.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/ceres-solver.txt) |
|
|
| [Abseil](https://github.com/abseil/abseil-cpp) | 20250127 (required by Ceres) | Google Inc. | Apache-2.0 | [abseil.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/abseil.txt) |
|
|
| [fast-feedback-indexer](https://github.com/paulscherrerinstitute/fast-feedback-indexer) | (pinned) | PSI | BSD-3-Clause | [fast-feedback-indexer.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/fast-feedback-indexer.txt) |
|
|
| [libjpeg-turbo](https://github.com/libjpeg-turbo/libjpeg-turbo) | 3.2.0 | D. R. Commander and others; IJG | IJG + BSD-3-Clause + Zlib | [libjpeg-turbo.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/libjpeg-turbo.txt) |
|
|
| [Mbed TLS](https://github.com/Mbed-TLS/mbedtls) (with TF-PSA-Crypto) | 4.2.0 | The Mbed TLS Contributors | Apache-2.0 OR GPL-2.0-or-later (used under Apache-2.0) | [mbedtls.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/mbedtls.txt), [tf-psa-crypto.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/tf-psa-crypto.txt) |
|
|
| [Catch2](https://github.com/catchorg/Catch2) | 3.16.0 | Catch2 Authors | BSL-1.0 | [catch2.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/catch2.txt) |
|
|
| [zlib-ng](https://github.com/zlib-ng/zlib-ng) | 2.3.3 | Jean-loup Gailly and Mark Adler; the zlib-ng contributors | Zlib | [zlib.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/zlib.txt) |
|
|
| [Eigen](https://gitlab.com/libeigen/eigen) | 3.4.1 | Benoit Jacob, Gael Guennebaud and contributors | MPL-2.0 (+ BSD parts) | [eigen.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/eigen.txt), [README](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/eigen-README.txt) |
|
|
|
|
Mbed TLS is fetched and statically linked only for viewer builds (`JFJOCH_VIEWER_BUILD` /
|
|
`JFJOCH_VIEWER_ONLY`), where it is the TLS backend of `jfjoch_viewer`'s cpp-httplib client; the
|
|
broker and writer never link it.
|
|
|
|
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.
|
|
|
|
zlib is supplied by zlib-ng built in its zlib-compatible mode (same `zlib.h`, same API and symbol
|
|
names), so it is the zlib that HDF5, libtiff, cpp-httplib and GEMMI all link. It is
|
|
built during the configure rather than added as a subproject; the licence is the zlib licence
|
|
either way. Eigen is header-only: only its headers reach the binaries, and no Eigen CMake runs.
|
|
|
|
## Vendored directly in the repository
|
|
|
|
These live in the source tree (see the path) rather than being fetched; traccc and the Ceres-derived minimiser are the exceptions - code adapted into first-party files rather than a vendored directory, see the notes at the end of this file.
|
|
|
|
| Component | Path | Copyright | License (SPDX) | License text |
|
|
|---|---|---|---|---|
|
|
| [nlohmann/json](https://github.com/nlohmann/json) | `include/nlohmann/` | Niels Lohmann | MIT | [nlohmann-json.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/nlohmann-json.txt) |
|
|
| [Macaron Base64](https://gist.github.com/tomykaira/f0fd86b6c73063283afe550bc5d77594) | `include/base64/` | tomykaira | MIT | [base64-macaron.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/base64-macaron.txt) |
|
|
| [TinyCBOR](https://github.com/intel/tinycbor) | `frame_serialize/tinycbor/` | Intel Corporation | MIT | [tinycbor.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/tinycbor.txt) |
|
|
| [Bitshuffle](https://github.com/kiyo-masui/bitshuffle) | `compression/bitshuffle/` | Kiyoshi Masui | MIT | [bitshuffle.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/bitshuffle.txt) |
|
|
| [Bitshuffle (h-perf)](https://github.com/kalcutter/bitshuffle) | `compression/bitshuffle_hperf/` | Kal Conley | Apache-2.0 | [bitshuffle-hperf.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/bitshuffle-hperf.txt) |
|
|
| [LZ4](https://github.com/lz4/lz4) | `compression/lz4/` | Yann Collet | BSD-2-Clause | [lz4.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/lz4.txt) |
|
|
| [HLS arbitrary-precision types](https://github.com/Xilinx/HLS_arbitrary_Precision_Types) | `fpga/include/` | Xilinx, Inc. | Apache-2.0 | [xilinx-hls-headers.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/xilinx-hls-headers.txt) |
|
|
| [GEMMI](https://github.com/project-gemmi/gemmi) | `gemmi_gph/` | Global Phasing Ltd. | MPL-2.0 | [gemmi.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/gemmi.txt) |
|
|
| [PEGTL](https://github.com/taocpp/PEGTL) | `gemmi_gph/gemmi/third_party/tao/` | Dr. Colin Hirsch and Daniel Frey | MIT | [pegtl.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/pegtl.txt) |
|
|
| [sajson](https://github.com/chadaustin/sajson) | `gemmi_gph/gemmi/third_party/sajson.h` | Chad Austin | MIT | [sajson.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/sajson.txt) |
|
|
| [fast_float](https://github.com/fastfloat/fast_float) | `gemmi_gph/gemmi/third_party/fast_float.h` | The fast_float authors (Daniel Lemire et al.) | Apache-2.0 OR MIT OR BSL-1.0 | [fast-float.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/fast-float.txt) |
|
|
| [half](https://half.sourceforge.net/) | `gemmi_gph/gemmi/third_party/half.hpp` | Christian Rau | MIT | [half.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/half.txt) |
|
|
| [pocketfft](https://github.com/mreineck/pocketfft) | `gemmi_gph/gemmi/third_party/pocketfft_hdronly.h` | Max-Planck-Society; Peter Bell; MIT (FFTW-derived parts) | BSD-3-Clause | [pocketfft.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/pocketfft.txt) |
|
|
| [tinydir](https://github.com/cxong/tinydir) | `gemmi_gph/gemmi/third_party/tinydir.h` | Cong Xu, Lautis Sun, Baudouin Feildel, Andargor | BSD-2-Clause | [tinydir.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/tinydir.txt) |
|
|
| [traccc (ACTS)](https://github.com/acts-project/traccc) | `image_analysis/spot_finding/StrongPixelSet.cpp`, `SpotExtractorGPU.cu` | CERN, for the benefit of the ACTS project | MPL-2.0 | [traccc.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/traccc.txt) |
|
|
| [Ceres Solver](https://github.com/ceres-solver/ceres-solver) (adapted) | `image_analysis/geom_refinement/LMSolver.h`, `LMSolver.cpp` | Google Inc. | BSD-3-Clause | [ceres-solver.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/ceres-solver.txt) |
|
|
| [xbflash.qspi](https://github.com/Xilinx/XRT) | `tools/xbflash.qspi/` | Xilinx / AMD | Apache-2.0 | [xbflash-qspi.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/xbflash-qspi.txt) |
|
|
| [wingetopt](https://github.com/alex85k/wingetopt) | `tools/wingetopt/` | Todd C. Miller; The NetBSD Foundation | ISC AND BSD-2-Clause | [wingetopt.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/wingetopt.txt) |
|
|
|
|
## Data files in the repository
|
|
|
|
Not code and not linked into any binary: input files of the battery's timing benchmark
|
|
(`tools/battery/timing.json`), kept verbatim as downloaded.
|
|
|
|
| Component | Path | Copyright | License (SPDX) | License text |
|
|
|---|---|---|---|---|
|
|
| [AlphaFold Protein Structure Database](https://alphafold.ebi.ac.uk/) predictions AF-P68082-F1, AF-P62894-F1, AF-P17090-F1, AF-P32322-F1 and AF-Q65MG6-F1 (v6), with their predicted aligned error | `tools/battery/models/AF-*` | DeepMind Technologies Limited; EMBL-EBI | CC-BY-4.0 | [alphafold-db.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/alphafold-db.txt) |
|
|
| [wwPDB](https://www.wwpdb.org/) entries 4DC8, 4NWV, 9GJX, 9S02 and 9ZLO, deposited coordinates (mmCIF as the [RCSB PDB](https://www.rcsb.org/) serves them) | `tools/battery/models/pdb/` | the depositors; the wwPDB | CC0-1.0 | [wwPDB usage policy](https://www.wwpdb.org/about/usage-policies) |
|
|
|
|
The deposited entries are the reference models the benchmark's placements are checked against, and
|
|
4NWV's is also moved by a fixed transform at run time to make one start model.
|
|
|
|
## Runtime libraries and SDKs (shipped in binaries, not in the source tree)
|
|
|
|
| Component | Used by | License | Notice |
|
|
|---|---|---|---|
|
|
| [Qt 6](https://www.qt.io/) | `jfjoch_viewer` | LGPL-3.0 | [notice](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/Qt6-NOTICE.txt), [LGPL-3.0](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/Qt6-LGPL-3.0.txt) |
|
|
| [NVIDIA CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) (cudart, cuFFT) | CUDA builds | NVIDIA CUDA EULA | [notice](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/NVIDIA-CUDA-NOTICE.txt), [EULA](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/NVIDIA-CUDA-EULA.txt) |
|
|
|
|
## 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, traccc): file-level copyleft. GEMMI is vendored in `gemmi_gph/`
|
|
in trimmed form; libzmq and Eigen are fetched at build time (Eigen is header-only). The
|
|
corresponding source is available from each project upstream.
|
|
* **GEMMI's own bundled third-party headers** — PEGTL, sajson, fast_float, half, pocketfft and
|
|
tinydir, all under `gemmi_gph/gemmi/third_party/` — are listed separately above rather than being
|
|
absorbed into GEMMI's row: they are other authors' code under other licences (MIT, BSD and
|
|
Apache/MIT/BSL), and GEMMI's MPL-2.0 does not speak for them. Their terms are carried in the
|
|
headers themselves rather than in `LICENSE` files, so the `licenses/*.txt` copies are kept by hand;
|
|
only PEGTL ships a `LICENSE`, which `COLLECT.sh` copies.
|
|
* **traccc** is the one entry that is not a vendored directory. Its sparse connected-component
|
|
labelling enters two otherwise first-party files: `StrongPixelSet.cpp` adapts the SparseCCL source,
|
|
and `SpotExtractorGPU.cu` follows the design of its GPU counterpart. MPL-2.0 is file-level, so both
|
|
files name the origin at the top and are covered by `licenses/traccc.txt`. See
|
|
[ACKNOWLEDGEMENT.md](ACKNOWLEDGEMENT.md) for the citation.
|
|
* **Ceres Solver** is also fetched and linked (table above); separately, `LMSolver.h`/`.cpp` re-implement
|
|
its trust-region Levenberg-Marquardt minimiser, projected line search, polynomial step choice and
|
|
sphere manifold for the crystal refinement, following its source. Both files name the origin at the
|
|
top and are covered by `licenses/ceres-solver.txt`.
|
|
* **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.
|