You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GLIBC is the "GNU C Library", a core part of the Linux operating system. It's a bunch of wrappers around Linux kernel system calls (so it's essential for all programs).
Wasp's executable depends on GLIBC.
GLIBC is a dynamically linked library, meaning that it's not packaged into the executable during build. Instead, the executable expects to find it on the host system and "import" it dynamically.
Problems occur when you run a program on a system with a GLIBC version that's older than the one used when compiling (because then your program relies on features that don't exist on the host system).
So, what sometimes happens with Wasp:
We compile wasp on a new Linux system with a recent GLIBC version (e.g., Ubuntu 22.04 with GLIBC 2.34).
Users try to run wasp on an older Linux system with an older GLIBC version (e.g., Ubuntu 20.04 with GLIBC 2.31).
Wasp fails because it can't find the newer GLIBC functions it relies on.
We usually fix the problem by telling our CI to use the lowest possible version for building Linux executables. This maximizes compatibility (explained here).
The current problem
Wasp will probably always break for some portion of users:
GitHub only allows us to build on Ubuntu versions still within their LTS period (the oldest being 22.04 at the time of writing).
Users are possibly still using older versions despite the LTS expiry (20.04 at the time of writing).
So there's always a gap between what Github allows us to build on and what some users are still running. This gap is largest immediately after each LTS expiry. Here's what happens when users try to run Wasp 0.16.3 on Ubuntu 20:
filip@ubuntu-20$ wasp version
/home/filip/.local/share/wasp-lang/0.16.3/wasp-bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/filip/.local/share/wasp-lang/0.16.3/wasp-bin)
/home/filip/.local/share/wasp-lang/0.16.3/wasp-bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/filip/.local/share/wasp-lang/0.16.3/wasp-bin)
/home/filip/.local/share/wasp-lang/0.16.3/wasp-bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/filip/.local/share/wasp-lang/0.16.3/wasp-bin)
The main question is:
Does the problem affect a significant portion of our users and is it something we want to fix?
@sodic that is a good analysis! I am not sure at the moment what is the right move, it feels like we should investigate more. Maybe look into what others are doing.
There was this comment on that older issue:
If I were you, I would just do what the rest of the world does and build on a distribution like Alpine that uses musl. This will greatly simplify things.
That potentially sounds like an interesting direction, if it makes sense for our use case.
Why is GLIBC problematic?
Quick background for anyone unfamiliar:
So, what sometimes happens with Wasp:
wasp
on a new Linux system with a recent GLIBC version (e.g., Ubuntu 22.04 with GLIBC 2.34).wasp
on an older Linux system with an older GLIBC version (e.g., Ubuntu 20.04 with GLIBC 2.31).We usually fix the problem by telling our CI to use the lowest possible version for building Linux executables. This maximizes compatibility (explained here).
The current problem
Wasp will probably always break for some portion of users:
So there's always a gap between what Github allows us to build on and what some users are still running. This gap is largest immediately after each LTS expiry. Here's what happens when users try to run Wasp 0.16.3 on Ubuntu 20:
The main question is:
@Martinsos What do you think?
If so, I see two possible fixes:
Motivation and references
This issue pops up every once in a while:
GLIBC_2.34
not found #867 (thanks @EmmanuelTheCoder!)The text was updated successfully, but these errors were encountered: