docs: publish third-party notices as a documentation page
The THIRD_PARTY_NOTICES.md manifest lived only at the repo root and was referenced from docs/SOFTWARE.md via a ../ link that escapes the Sphinx source tree, so it never rendered in the published docs and was absent from the navigation. Add docs/THIRD_PARTY_NOTICES.md to the General toctree and fix the SOFTWARE.md link. The docs page is generated from the canonical root file by update_version.sh (like the python-client docs): licenses/*.txt links point at the repository, and the project-license links point at the in-docs LICENSE / FPGA_LICENSE pages. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -40,4 +40,4 @@ where they are not present system-wide, install them into a prefix and point `CM
|
||||
it (see [Building from source on Windows](JFJOCH_VIEWER.md#building-from-source-on-windows)).
|
||||
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_NOTICES.md](../THIRD_PARTY_NOTICES.md) and the `licenses/` directory.
|
||||
[Third-party software notices](THIRD_PARTY_NOTICES.md) and the `licenses/` directory.
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
<!--
|
||||
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.
|
||||
|
||||
## 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) | (pinned) | 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.1.0 | The HDF Group; UIUC | BSD-3-Clause-style | [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.39.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.1 | 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) |
|
||||
| [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) | (pinned) | 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) |
|
||||
| [Catch2](https://github.com/catchorg/Catch2) | 3.13.0 | Catch2 Authors | BSL-1.0 | [catch2.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/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](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 Cutter (DECTRIS) | 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) |
|
||||
| [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) |
|
||||
|
||||
## 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) |
|
||||
| [zlib](https://zlib.net/) | everywhere (compression) | Zlib | [zlib.txt](https://gitea.psi.ch/mx/jungfraujoch/src/branch/main/licenses/zlib.txt) |
|
||||
| [Eigen](https://gitlab.com/libeigen/eigen) | analysis libs, Ceres, ffbidx (header-only) | 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) |
|
||||
|
||||
## 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.
|
||||
@@ -17,6 +17,7 @@ Jungfraujoch is distributed under the GPLv3 license.
|
||||
|
||||
ACKNOWLEDGEMENT
|
||||
LICENSE
|
||||
THIRD_PARTY_NOTICES
|
||||
DETECTORS
|
||||
HARDWARE
|
||||
SOFTWARE
|
||||
|
||||
+18
-1
@@ -52,7 +52,24 @@ mkdir -p docs/python_client/docs
|
||||
cp python-client/README.md docs/python_client
|
||||
cp python-client/docs/*.md docs/python_client/docs
|
||||
|
||||
git add broker/gen/model/*.cpp broker/gen/model/*.h frontend/src/openapi/models/*.ts docs/python_client/*.md docs/python_client/docs/*.md
|
||||
# Mirror the root third-party notices into the docs tree so they are published with
|
||||
# the documentation. The verbatim license texts (licenses/*.txt) are not part of the
|
||||
# docs source tree, so point those links at the repository; the project-license links
|
||||
# point at the in-docs LICENSE / FPGA_LICENSE pages.
|
||||
REPOBASE=https://gitea.psi.ch/mx/jungfraujoch/src/branch/main
|
||||
{
|
||||
echo "<!--"
|
||||
echo " Auto-generated from THIRD_PARTY_NOTICES.md by update_version.sh — do not hand-edit."
|
||||
echo " Edit the canonical THIRD_PARTY_NOTICES.md at the repository root instead."
|
||||
echo "-->"
|
||||
echo
|
||||
sed -e "s,](licenses/,]($REPOBASE/licenses/,g" \
|
||||
-e "s,](LICENSE)),](LICENSE.md)),g" \
|
||||
-e "s,](fpga/LICENSE),](FPGA_LICENSE.md),g" \
|
||||
THIRD_PARTY_NOTICES.md
|
||||
} > docs/THIRD_PARTY_NOTICES.md
|
||||
|
||||
git add broker/gen/model/*.cpp broker/gen/model/*.h frontend/src/openapi/models/*.ts docs/python_client/*.md docs/python_client/docs/*.md docs/THIRD_PARTY_NOTICES.md
|
||||
|
||||
sed -i "s,release =.*,release = \'$VERSION\'," docs/conf.py
|
||||
sed -i "s,\"version\":.*,\"version\": \"$VERSION\"\,," frontend/package.json
|
||||
|
||||
Reference in New Issue
Block a user