protocolbuffers / protobuf

Protocol Buffers - Google's data interchange format
http://protobuf.dev
Other
65.5k stars 15.46k forks source link

[Ruby] 25.4 does not work on Ruby 2.7 on linux even though gemspec supports 2.7 #17612

Open LaithAzer opened 2 months ago

LaithAzer commented 2 months ago

What version of protobuf and what language are you using? Version: 3.25.4 Language: Ruby

What operating system (Linux, Windows, ...) and version? Linux

What runtime / compiler are you using (e.g., python version or gcc version) Ruby

What did you do? When attempting to install v3.25.4 on our CI pipeline on Ruby 2.7, we get an error:

google-protobuf-3.25.4-x86_64-linux requires ruby version < 3.4.dev, >= 3.0,
--
  | which is incompatible with the current version, ruby 2.7.5p203

However, this only happens in Linux and not Mac environments.

What did you expect to see I expect to see no error as the gemspec says it supports Ruby 2.7 https://github.com/protocolbuffers/protobuf/blob/v3.25.4/ruby/google-protobuf.gemspec#L34

What did you see instead? Saw error message above

Rurquhart commented 2 months ago

Encountering the same issue:

What version of protobuf and what language are you using? Version: 3.25.4 Language: Ruby 2.7.8.225

What operating system (Linux, Windows, ...) and version? Amazon Linux 2 - 4.14.348-265.565.amzn2.x86_64

What runtime / compiler are you using (e.g., python version or gcc version) Ruby 2.7.8.225

What did you do? Attempts to install the gem with: gem install google-protobuf -v 3.25.4 results in the error message:

ERROR:  Error installing google-protobuf:
        The last version of google-protobuf (= 3.25.4) to support your Ruby & RubyGems was 3.25.4. Try installing it with `gem install google-protobuf -v 3.25.4` and then running the current command again
        google-protobuf requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.7.8.225.
if-gh commented 2 months ago

OS Version: Docker image based on Ubuntu 20.04.6 LTS Ruby Version: 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]

Having the same issue with gem install google-protobuf -v 3.25.4

ERROR:  Error installing google-protobuf:
    The last version of google-protobuf (= 3.25.4) to support your Ruby & RubyGems was 3.25.4. Try installing it with `gem install google-protobuf -v 3.25.4` and then running the current command again
    google-protobuf requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.7.0.0.

And if I do not specify the version, I get

ERROR:  Error installing google-protobuf:
    The last version of google-protobuf (>= 0) to support your Ruby & RubyGems was 4.26.1. Try installing it with `gem install google-protobuf -v 4.26.1` and then running the current command again
    google-protobuf requires Ruby version >= 3.0, < 3.4.dev. The current ruby version is 2.7.0.0.

The error message seems to be misleading as well.

I had to specify 3.25.3 instead, and it works just fine


Tested on Ubuntu 22.04.4 LTS based image with ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu], and 3.25.4 installs just fine.

zhangskz commented 2 months ago

This is likely because we dropped support for Ruby 2.7 per this news entry after it was officially EOL by the language in March 2023. Generally the end of support is intended to be across all branches in that we may stop making fixes and drop test coverage if infrastructure rots (e.g. Ruby 2.7 was dropped from some CI tests). However, it was not intentional to proactively drop Ruby 2.7 in this release.

The tooling we use to release ruby binary gem is not configured to specify ruby versions per-branch by default. We can update this to restore support for Ruby 2.7 for the next v25.x patch, although note that per the above policy that Ruby 2.7 support is best-effort.