Skip to content

Publish a Linux nightly, and build it against an older glibc (or musl) — current Ubuntu 24.04 builds require glibc 2.38+ #616

Description

@logbie

Summary

WFL publishes a Windows MSI nightly but no Linux artifact, so Linux users build from source (~25 min on a small box). I've stood up a nightly Linux builder, and in doing so hit a portability constraint worth recording: a binary built on Ubuntu 24.04 links against glibc 2.38/2.39 and will not run on older distributions.

$ ./wfl --version
./wfl: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./wfl)
./wfl: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.39' not found (required by ./wfl)

The same binary runs fine on Ubuntu 24.04. So any published Linux nightly built on a current runner is implicitly "Ubuntu 24.04 or newer" — which excludes Debian 12, Ubuntu 22.04, and most enterprise LTS distros still in wide use.

Suggestions (pick whichever fits the project's goals)

  1. Build the release artifact against an older glibc — e.g. build in a Debian 12 or Ubuntu 22.04 container. Binaries built against an older glibc run on newer systems; the reverse is not true. Cheapest option, widest reach, no code change.
  2. Ship a statically-linked x86_64-unknown-linux-musl build alongside the glibc one. Fully portable, no libc dependency at all. Some crates need attention under musl, but for a CLI/interpreter it's usually painless.
  3. At minimum, document the floor — state the minimum glibc/distro in the release notes and in Docs/, so a user on Debian 12 gets an explanation rather than a linker error.

Related: this affects the WFL Foundation principle of being approachable — the first thing a new Linux user meets shouldn't be a glibc symbol error.

Environment

  • wfl 26.7.37, built from main with cargo build --release --locked (rustc 1.97.0) on Ubuntu 24.04 x86_64
  • Fails on: Debian-based image with glibc < 2.38

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions