Skip to content
Latchkey

cibuildwheel "Repaired wheel is not manylinux compliant" in CI

cibuildwheel runs auditwheel to repair Linux wheels into a manylinux tag by bundling external shared libraries. If the wheel still references a library or glibc symbol outside the manylinux policy after repair, auditwheel reports the repaired wheel as non-compliant and the build fails.

What this error means

After the repair step, the log shows that the repaired wheel is not manylinux compliant, often naming a glibc symbol version or a library that violates the chosen policy.

cibuildwheel
auditwheel: error: cibuildwheel: Repaired wheel is not manylinux compliant
  Failed to find a manylinux policy: requires GLIBC_2.34 (manylinux_2_28 allows up to 2.28)

Common causes

A newer glibc symbol than the policy allows

The extension was built against a glibc newer than the target manylinux policy permits, so no compliant tag fits.

A library that cannot be bundled

Some libraries (for example GL or X11) are excluded from bundling by policy and must come from the system, breaking compliance if linked directly.

How to fix it

Build inside a matching manylinux image

  1. Pick a manylinux image whose glibc matches your policy target.
  2. Set the cibuildwheel image so the build glibc is within policy.
  3. Re-run so the repaired wheel is compliant.
.github/workflows/ci.yml
env:
  CIBW_MANYLINUX_X86_64_IMAGE: "manylinux_2_28"

Exclude system libraries from bundling

Tell auditwheel to leave policy-excluded libraries to the host instead of vendoring them.

.github/workflows/ci.yml
env:
  CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel repair --exclude libGL.so.1 -w {dest_dir} {wheel}"

How to prevent it

  • Build in a manylinux image that matches your target policy.
  • Avoid linking system libraries that policy forbids bundling.
  • Run auditwheel show on every Linux wheel before publishing.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →