eckitlib: Add version 2.1.1.26 - #2147
Merged
Merged
Conversation
Builds the compiled eckit C++ toolkit libraries from ecmwf/eckit at tag 2.1.1 and packages them as the eckitlib binary wrapper wheel, replaying upstream's own python/eckitlib/buildconfig CMAKE_PARAMS and post-build.sh (auditwheel repair). Upstream's cp310..cp314 wheels carry byte-identical payloads since nothing links the Python C API, so one py3-none wheel is built instead of a per-interpreter matrix. The wheel bundles libcurl and its dependency closure from the image, so the licence of every RPM auditwheel grafted in is collected from the SBOM and shipped in the dist-info.
luhenry
added a commit
that referenced
this pull request
Sep 21, 2026
Contributor
|
auditwheel grafts libcurl's whole dependency closure into the wheel, so every RPM its CycloneDX SBOM names now contributes its %license files to the dist-info, and the copyleft ones (keyutils, libssh, libidn2, libunistring, libxcrypt, systemd, libcap, pcre2) get a gpl_sources job beside the build. Two distro packages need more than their own %license: pcre2 keeps its text in the pcre2-syntax subpackage, and lz4-libs ships none at all, so the collector falls back to the other packages built from the same source RPM and then to installing that source package. Rocky's lz4 licence directory holds only the GPLv2 text covering its CLI tools, so liblz4's BSD-2-Clause text comes from the lz4 repository, as upstream's own pre-compile.sh does.
The eckit-version binary the wheel ships segfaults before printing anything, on upstream's own released x86_64 wheel as much as on this build, so it proves nothing about the libraries. Call libeckit's eckit_version_str/eckit_git_sha1 entry points through ctypes instead and check both against the metadata the wheel declares.
luhenry
added a commit
that referenced
this pull request
Sep 21, 2026
490: an ecbuild project's installed config header is a feature oracle you can diff after one QEMU configure, plus where an ECMWF binary-wrapper distribution's real build recipe lives when its wheel job is private. 491: three ways rpm -ql misses the licence of an auditwheel-grafted system library, and sizing the gpl_sources job from the same SBOM.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
eckitlib2.1.1.26Compiles ECMWF's eckit C++ toolkit (core, codec, geo, spec, sql, linalg, mpi, web) and ships it as the
eckitlibbinary wrapper wheel — no Python bindings. Upstream publishes no riscv64 wheel.Mirrors upstream's
python/eckitlib/buildconfigandpost-build.sh; upstream's wheel job calls a private wheelmaker image, so those CMake parameters and theauditwheel repairare replayed directly.Differs from upstream
ENABLE_PYTHON=0- the Cython extension it adds is installed into the separateeckitdistribution, never into this wheel.py3-nonewheel - upstream's cp310..cp314 payloads are byte-identical, nothing uses the Python C API.Matrix: single ABI-independent wheel, as above.
Testing
findlibs.load('eckit'), actypesload of all twelve libraries, and calls into libeckit'seckit_version_str/eckit_git_sha1checked against the metadata the wheel declares. Theeckit-versionbinary is not run: it segfaults before printing anything, on upstream's own released x86_64 wheel as much as here.License: Wheel bundles libcurl and its transitive closure from the image (krb5, OpenLDAP, OpenSSL, libssh, libidn2/libunistring, brotli, nghttp2, lz4 and friends, under MIT, Apache-2.0, BSD and LGPL terms); upstream ships no licence text for them, so the build collects each one from its RPM and publishes the copyleft ones' sources.
Built as one wheel; twelve libraries load and eckit reports 2.1.1 at commit
72f97c4on riscv64.