diff --git a/.github/workflows/build-fastjet.yml b/.github/workflows/build-fastjet.yml index 0b1536b2d64c..1ed4c597458a 100644 --- a/.github/workflows/build-fastjet.yml +++ b/.github/workflows/build-fastjet.yml @@ -88,9 +88,30 @@ jobs: cp /usr/local/share/doc/CGAL/LICENSE {project}/LICENSE.CGAL && cp /usr/local/share/doc/CGAL/LICENSE.GPL {project}/LICENSE.CGAL.GPL && cp /usr/local/share/doc/CGAL/LICENSE.LGPL {project}/LICENSE.CGAL.LGPL + # CIBW_BEFORE_ALL_LINUX replaces upstream's pyproject.toml [tool.cibuildwheel.linux] + # before-all rather than adding to it, so it has to repeat that before-all's own + # boost/CGAL install (the CIBW_BEFORE_BUILD license copy above depends on it) in + # addition to the rustup install below. + # The `test` extra (cp312/313/314) pulls in graphed, a maturin/PyO3 package with no + # riscv64 wheel. maturin's own Rust auto-install (puccinialin) computes the wrong rustup + # target triple for riscv64 and fails, so install a working toolchain via rustup.rs + # before it gets the chance to try, same as build-minijinja.yml/build-qoi.yml. + CIBW_BEFORE_ALL_LINUX: >- + curl -L https://archives.boost.io/release/1.88.0/source/boost_1_88_0.tar.bz2 -o boost_1_88_0.tar.bz2 && + tar --bzip2 -xf boost_1_88_0.tar.bz2 && + mv boost_1_88_0/boost /usr/include/boost && + curl -L https://github.com/CGAL/cgal/releases/download/v6.0.1/CGAL-6.0.1-library.zip -o CGAL-6.0.1-library.zip && + unzip -q CGAL-6.0.1-library.zip && + mkdir CGAL-6.0.1/build && + cmake -S CGAL-6.0.1 -B CGAL-6.0.1/build -DCMAKE_BUILD_TYPE="Release" && + cmake --build CGAL-6.0.1/build --clean-first && + cmake --install CGAL-6.0.1/build && + rm -r CGAL-6.0.1 CGAL-6.0.1-library.zip && + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y # Our registry carries awkward-cpp 56, not PyPI's newest 57: stay on awkward 2.13.0. CIBW_ENVIRONMENT: >- SETUPTOOLS_SCM_PRETEND_VERSION_FOR_FASTJET=${{ env.FASTJET_VERSION }} + PATH="$PATH:$HOME/.cargo/bin" PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ PIP_ONLY_BINARY=numpy,awkward-cpp,pyarrow,pandas,boost-histogram # pandas (via dask-awkward[test]) has no free-threaded riscv64 wheel, so cp314t gets diff --git a/docs/packages/fastjet.yaml b/docs/packages/fastjet.yaml index 98d0ea22e0e0..f0c62e6e2ced 100644 --- a/docs/packages/fastjet.yaml +++ b/docs/packages/fastjet.yaml @@ -19,3 +19,5 @@ versions: - filename: fastjet-3.5.1.4-cp314-cp314t-manylinux_2_39_riscv64.whl sha256: d865aa2b4128527a1f6e51a7d349f8e899df0a774368e060dde3f2f6389caba7 requires-python: '>=3.10' +- version: 3.5.1.5 +- version: 3.5.2.0 diff --git a/patches/fastjet/3.5.1.5/0001-pyproject-ship-licence-files-of-bundled-libraries.patch b/patches/fastjet/3.5.1.5/0001-pyproject-ship-licence-files-of-bundled-libraries.patch new file mode 100644 index 000000000000..b31c11236123 --- /dev/null +++ b/patches/fastjet/3.5.1.5/0001-pyproject-ship-licence-files-of-bundled-libraries.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 2 Oct 2026 12:00:00 +0200 +Subject: [PATCH] pyproject: ship licence files of bundled libraries + +The wheels compile and ship FastJet (extern/fastjet-core, GPL-2.0-or-later), +SISCone (GPL-2.0-or-later) and the fastjet-contrib packages (each under +its own COPYING) as fastjet/lib64/*.so, and compile CGAL (GPL-3.0-or-later +/ LGPL-3.0-or-later) and Boost (BSL-1.0) headers into libfastjet, but +only carry the binding's own BSD-3-Clause LICENSE. + +List the in-tree COPYING files, and widen LICENSE to LICENSE* so the +CGAL and Boost notices staged as LICENSE. at the project root +before the wheel build are packaged into dist-info/licenses/ too. The +sdist still only matches LICENSE at its root. + +Upstream-Status: To upstream [not yet submitted; the same gap exists in every fastjet wheel on PyPI, so it needs a maintainer discussion rather than a drive-by PR] +--- + pyproject.toml | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index ade2171..741d23d 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -11,7 +11,13 @@ dynamic = ["version"] + requires-python = ">=3.10" + readme = "README.md" + license = "BSD-3-clause" +-license-files = ["LICENSE"] ++license-files = [ ++ "LICENSE*", ++ "extern/fastjet-core/COPYING", ++ "extern/fastjet-core/plugins/SISCone/siscone/COPYING", ++ "extern/fastjet-contrib/COPYING", ++ "extern/fastjet-contrib/*/COPYING", ++] + classifiers = [ + "Development Status :: 1 - Planning", + "Intended Audience :: Developers", +-- +2.43.0 + diff --git a/patches/fastjet/3.5.2.0/0001-pyproject-ship-licence-files-of-bundled-libraries.patch b/patches/fastjet/3.5.2.0/0001-pyproject-ship-licence-files-of-bundled-libraries.patch new file mode 100644 index 000000000000..b31c11236123 --- /dev/null +++ b/patches/fastjet/3.5.2.0/0001-pyproject-ship-licence-files-of-bundled-libraries.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 2 Oct 2026 12:00:00 +0200 +Subject: [PATCH] pyproject: ship licence files of bundled libraries + +The wheels compile and ship FastJet (extern/fastjet-core, GPL-2.0-or-later), +SISCone (GPL-2.0-or-later) and the fastjet-contrib packages (each under +its own COPYING) as fastjet/lib64/*.so, and compile CGAL (GPL-3.0-or-later +/ LGPL-3.0-or-later) and Boost (BSL-1.0) headers into libfastjet, but +only carry the binding's own BSD-3-Clause LICENSE. + +List the in-tree COPYING files, and widen LICENSE to LICENSE* so the +CGAL and Boost notices staged as LICENSE. at the project root +before the wheel build are packaged into dist-info/licenses/ too. The +sdist still only matches LICENSE at its root. + +Upstream-Status: To upstream [not yet submitted; the same gap exists in every fastjet wheel on PyPI, so it needs a maintainer discussion rather than a drive-by PR] +--- + pyproject.toml | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index ade2171..741d23d 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -11,7 +11,13 @@ dynamic = ["version"] + requires-python = ">=3.10" + readme = "README.md" + license = "BSD-3-clause" +-license-files = ["LICENSE"] ++license-files = [ ++ "LICENSE*", ++ "extern/fastjet-core/COPYING", ++ "extern/fastjet-core/plugins/SISCone/siscone/COPYING", ++ "extern/fastjet-contrib/COPYING", ++ "extern/fastjet-contrib/*/COPYING", ++] + classifiers = [ + "Development Status :: 1 - Planning", + "Intended Audience :: Developers", +-- +2.43.0 +