Skip to content

eckitlib: Add version 2.1.1.26 - #2147

Merged
luhenry merged 3 commits into
mainfrom
port/eckitlib
Sep 21, 2026
Merged

luhenry merged 3 commits into
mainfrom
port/eckitlib

Conversation

@luhenry

@luhenry luhenry commented Sep 21, 2026

Copy link
Copy Markdown
Member

Compiles ECMWF's eckit C++ toolkit (core, codec, geo, spec, sql, linalg, mpi, web) and ships it as the eckitlib binary wrapper wheel — no Python bindings. Upstream publishes no riscv64 wheel.

Mirrors upstream's python/eckitlib/buildconfig and post-build.sh; upstream's wheel job calls a private wheelmaker image, so those CMake parameters and the auditwheel repair are replayed directly.

Differs from upstream

  • ENABLE_PYTHON=0 - the Cython extension it adds is installed into the separate eckit distribution, never into this wheel.
  • One py3-none wheel - upstream's cp310..cp314 payloads are byte-identical, nothing uses the Python C API.

Matrix: single ABI-independent wheel, as above.

Testing

  • upstream ships no wheel-level test suite, so the installed wheel is exercised with findlibs.load('eckit'), a ctypes load of all twelve libraries, and calls into libeckit's eckit_version_str/eckit_git_sha1 checked against the metadata the wheel declares. The eckit-version binary 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 72f97c4 on riscv64.

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
@github-actions

github-actions Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-09-21 08:15 UTC

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.
@luhenry
luhenry merged commit 31ec04f into main Sep 21, 2026
10 checks passed
@luhenry
luhenry deleted the port/eckitlib branch September 21, 2026 07:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant