-
Notifications
You must be signed in to change notification settings - Fork 15.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ruby google-protobuf linux precompiled gem is not compatible with linux-musl #16853
Comments
As a workaround, uninstalling the prebuilt gem and reinstall platform ruby to build from source fixes the issue:
For bundler, the following in Gemfile would work: gem 'google-protobuf', force_ruby_platform: true if RUBY_PLATFORM.include?('linux-musl') |
There are a few options here:
Again, please refer to rake-compiler's documentation on details: https://github.com/rake-compiler/rake-compiler-dock?tab=readme-ov-file#linux-gnu-and-musl-important-details |
@dazuma - what's the expected platform support for |
As said early, even if we don't "officially" support linux-musl, we can avoid it from breaking out of box. - Just ship the gem with label |
I'd really appreciate if @ntkme's comment could be actioned pls
|
This issue used to be aarch64-linux-musl only. However, with 4.29.3 release, that
This issue can be worked around by force compiling from source by adding the following in Gemfile: gem 'google-protobuf', force_ruby_platform: true if RUBY_PLATFORM.include?('linux-musl') @JasonLunn I highly suggest that we take action now to update rake-compiler and split |
The statistics from my own gem that has 10M+ total download shows that roughly 10% of x86_64-linux are from linux-musl, which is definitely not a small number. E.g. As of writing, the download counts for the latest version show:
The statistics for google-protobuf might be different, but the total download for google-protobuf is way higher that even only 5% would affect tons of users. I know lots of users in ruby community uses |
I was probably the earliest adaptor of splitting From my own experience with it, I can say that as of now it's reliable with ruby >=3.1 and the default rubygems/bundler or higher version from them. In fact, Now it's time to adopt |
I share the desire to split the builds into |
@dazuma In fact shipping separate The way it works is that you can set different ruby version and rubygems version requirements on the platform ruby gem and native prebuilt gems. For example:
This allow older version of ruby and rubygems/bundler to install the gem by compiling from source. For google-protobuf, we can require 3.0 on the platform ruby gem, and require ruby 3.0 AND rubygems 3.3.22. You can learn more here about in this issue: rake-compiler/rake-compiler-dock#117 and why ruby 3.2 instead of rubygems 3.3.22 on native gem might be a better idea in this comment rake-compiler/rake-compiler-dock#117 (comment) |
@ntkme It sounds like the above would force ALL users of Ruby 3.0 on Linux to install the gem from source. That's a regression we're trying to avoid. (The news about Debian-sid and Ruby 3.1 is also disappointing. But I don't think we can wait another year for this.) |
Yes, I agree not able to use prebuilt is a “regression”. However, I’d argue it’s way better than segmentation fault on musl-libc, especially that 4.29.3 literally just regressed with segmentation fault on x86_64-linux-musl. It used to have segmentation fault only on aarch64-linux-musl, which has a very tiny user base, but now impacting many more users (about 10x more based on download stats on sass-embedded and nokogiri). The 4.29.3 segmentation fault regression on all ruby versions on x86_64-linux-musl is much worse than asking ruby 3.0 on any linux to compile from source. I think it’s worth trading the compiling from source “regression” to fix the segmentation fault, especially given that the compiling from source “regression” will likely break much smaller number of installation on ruby 3.0 on Linux without a working compiler. In addition, the installation time error will be more trivial for users to deal with than a runtime segmentation fault. After all, I don’t have statistics to proof which one has a border impact on the user base, but here are the two things we are trading:
I would recommend that we don’t wait. |
What version of protobuf and what language are you using?
Version: 4.26.1 or higher on aarch64 / 4.29.3 on x86_64
Language: Ruby
What operating system (Linux, Windows, ...) and version?
Alpine Linux 3.19.1
What runtime / compiler are you using (e.g., python version or gcc version)
ruby 3.3.1 (2024-04-23 revision c56cd86388) [aarch64-linux-musl]
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [x86_64-linux-musl]
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x86_64-linux-musl]
What did you do?
Steps to reproduce the behavior:
What did you expect to see
google-protobuf should work on linux-musl just like how it works on linux-gnu
What did you see instead?
google-protobuf prebuilt library is strictly linked to glibc and it's not compatible with musl-libc
Anything else we should know about your project / environment
Please see rake-compiler's documentation regarding recent changes in rubygems in regarding to -linux, -linux-gnu, and -linux-musl platforms: https://github.com/rake-compiler/rake-compiler-dock?tab=readme-ov-file#linux-gnu-and-musl-important-details
The text was updated successfully, but these errors were encountered: