Skip to content

pylibmc: add build-pylibmc.yml for riscv64 wheels - #1504

Merged
luhenry merged 3 commits into
mainfrom
pylibmc
Sep 8, 2026
Merged

pylibmc: add build-pylibmc.yml for riscv64 wheels#1504
luhenry merged 3 commits into
mainfrom
pylibmc

Conversation

@luhenry

@luhenry luhenry commented Sep 8, 2026

Copy link
Copy Markdown
Member

C extension binding libmemcached, a client library for memcached. Upstream publishes no riscv64 wheel.

Mirrors upstream's cd.yml cibuildwheel build.

Differs from upstream

  • Builds libmemcached-awesome from source in CIBW_BEFORE_ALL - Rocky 10 has no libmemcached-devel for riscv64 (no EPEL), unlike upstream's yum install.
  • SASL support left at its (off) CMake default - untested by pylibmc's own suite, and avoids a large transitive Kerberos/GSSAPI dependency chain.

Testing

  • same as upstream (runtests.py-equivalent pytest tests), against a real memcached server started in CIBW_BEFORE_TEST.

License: Wheel bundles libmemcached-awesome (BSD-3-Clause); upstream ships no licence text for it, so the build adds one.

Not yet build-tested locally this session (no working container runtime available); relies on the pull_request CI run for the actual riscv64 build/test/publish-dry-run verification.

pylibmc binds libmemcached, which has no riscv64 devel package
available (EPEL is absent for this arch, and Rocky 10's own repos
carry no libmemcached-devel at all). Build libmemcached-awesome, the
maintained header/API/SONAME-compatible fork, from source in
CIBW_BEFORE_ALL instead, and package its BSD-3-Clause licence text
alongside pylibmc's own since auditwheel vendors the resulting
libmemcached.so into the wheel.
CIBW_BEFORE_ALL_LINUX runs inside the manylinux container via sh -c,
which does not inherit the job's plain env: vars -- only what
CIBW_ENVIRONMENT passes through. LIBMEMCACHED_VERSION was unset there,
so the download URL collapsed to .../tags/.tar.gz and 404'd.
src/libmemcached/CMakeLists.txt calls flex_target() to generate the
CSL scanner (csl/scanner.l); bison ships in the manylinux image
already but flex does not, so FindFLEX never defines the command and
configure fails with 'Unknown CMake command flex_target'.
@luhenry
luhenry merged commit 2001213 into main Sep 8, 2026
9 checks passed
@luhenry
luhenry deleted the pylibmc branch September 8, 2026 10:19
@luhenry luhenry linked an issue Sep 8, 2026 that may be closed by this pull request
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.

pylibmc riscv64 support

1 participant