Skip to content

cmeel-m4: Add version 1.4.20 - #4847

Open
luhenry wants to merge 1 commit into
mainfrom
cmeel-m4
Open

luhenry wants to merge 1 commit into
mainfrom
cmeel-m4

Conversation

@luhenry

@luhenry luhenry commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Wraps GNU M4 through the cmeel build-backend, producing a py3-none wheel holding only the bin/m4 binary. Upstream publishes no riscv64 wheel. m4 is a build-time tool several other cmeel-* wrappers declare as an extra == "build" dependency (cmeel-autoconf/cmeel-automake/cmeel-gettext/cmeel-texinfo), not a library linked at runtime.

Mirrors upstream's release.yml, manylinux leg only.

Differs from upstream

  • The real published x86_64 wheel ships no LICENSE/COPYING file at all — a gap in the upstream wrapper itself (present on every platform, not riscv64-specific) against this repo's own licensing check (wheel must carry upstream's LICENSE). GNU m4's release tarball ships COPYING at its top level. The wrapper's ExternalProject_Add(m4 ...) extracts into <bin>/m4-prefix/src/m4 (confirmed against CMake's own ExternalProject.cmake module source, not guessed), so a second install(FILES ...) rule beside the existing "dummy README.md" one picks it up into the wheel. Will send the same fix upstream.

Testing

  • Smoke-tests m4 --version after installing the wheel into a venv.

License: GPL-3.0-only. No special GPL procedure applies here (that's scoped to GPL components pulled from our own build environment, e.g. gcc) — this is the repo's ordinary "wheel carries upstream LICENSE" check, same as any other license.

Built on cp312.

GNU M4 wraps its own upstream autotools build (./configure && make &&
make install via ExternalProject_Add) through the cmeel build-backend,
same shape already proven here by cmeel-fmt/cmeel-gmp/cmeel-gklib/
cmeel-cppad/cmeel-coinutils/cmeel-lapack: one has-sitelib=false py3-none
wheel holding only the bin/m4 binary, no Python extension to build per
interpreter. m4 is a build-time tool declared as an extra == "build"
dependency by several other cmeel-* wrappers (cmeel-autoconf/
cmeel-automake/cmeel-gettext/cmeel-texinfo), not a library other
packages link against at runtime.

GPL-3.0-only (GNU m4 itself). Re-read patching-and-licensing.md
directly rather than from memory: the documented GPL procedure (the
collect-gpl-sources job) is scoped to GPL components pulled in from our
own build environment (e.g. the manylinux image's gcc), not to porting
a project whose own upstream source happens to be GPL-licensed. The
actual applicable check is the doc's ordinary two bullets ("wheel
carries upstream LICENSE" + "linked libraries' own licence reqs met"),
same as every other license in this repo. Confirmed against the real
published x86_64 wheel (cmeel_m4-1.4.20-0-py3-none-manylinux_2_28_x86_64.whl,
unzip -l) that it ships no LICENSE/COPYING file at all - a genuine gap
in the upstream wrapper itself, present on every platform, not
riscv64-specific. GNU m4's own release tarball ships COPYING at its top
level (confirmed: tar -tJf m4-1.4.20.tar.xz). This wrapper's
ExternalProject_Add(m4 ...) uses BUILD_IN_SOURCE ON with no explicit
SOURCE_DIR, so CMake's own documented default applies (confirmed
against the real ExternalProject.cmake module source and its
extractfile.cmake.in single-top-level-directory-rename logic, not
guessed): SOURCE_DIR = <CMAKE_CURRENT_BINARY_DIR>/m4-prefix/src/m4, so
COPYING lands there once the build step runs, before the top-level
install() rules execute. Added a second install(FILES ...) rule beside
the wrapper's existing "dummy README.md" one, pointing at that path -
patching the build to add the missing LICENSE, per
patching-and-licensing.md's documented remedy; will send the same fix
upstream to cmake-wheel/cmeel-m4.

No architectural riscv64 concern: GNU m4 is portable C with no
SIMD/arch-specific code path, already built on every Linux distro's
riscv64 port. Verified against the real published x86_64 wheel that the
actual binary is bin/m4 (plus a scripts/ entry point), no .so to link
cross-package.

docs/packages/cmeel-m4.yaml: license GPL-3.0-only; the built wheel now
carries GNU m4's own COPYING via the CMakeLists.txt patch above.
luhenry added a commit that referenced this pull request Nov 12, 2026
Both were parked only on disk (402M avail at the time, not enough to
safely clone+build). Disk has since recovered (~9.8GB freed); both
ported now with the standard missing-LICENSE patch already scoped for
them: cmeel-m4 PR #4847, cmeel-glpk PR #4848.

This branch has not been deployed

No deployments
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