[DRE-maint] Bug#1069089: ruby-rubygems: Broken platform detection which lead to unability to install sass-embedded
David Rodriguez
deivid.rodriguez at riseup.net
Fri Sep 13 13:14:04 BST 2024
Hi Antonio!
Indeed if this is only a problem in Ruby < 3.1, it does not seem like a big deal. I think it’s probably fine to leave things as they are.
Thank you!
On Tue, 10 Sep 2024 20:39:30 -0300 Antonio Terceiro <terceiro at debian.org> wrote:
> On Mon, Aug 26, 2024 at 04:00:06PM +0200, David Rodríguez wrote:
> > Hello, RubyGems upstream maintainer here.
> >
> > I heard that Bundler now has trouble installing the proper platform specific version of any gems that ship “non-gnu” variants (not only `sass-embedded`) when using RubyGems packed by Debian due to this issue. That means that people using Debian stable fail to use Jekyll: https://github.com/jekyll/jekyll/issues/9478#issuecomment-1785797746.
> >
> > I’m not fully sure about this issues introduced by the upstream patch but happy to help out with making it possible to revert the patch.
> >
> > Thanks!
>
> Hi,
>
> The patch mentioned in the jekyll issue was written by me, and looks
> like this:
>
> ───────┬─────────────────────────────────────────────────────────────────────────────────
> │ File: debian/patches/0002-Gem-Platform-emulate-3.3.15-behavior-on-Ruby-3.1.patch
> ───────┼─────────────────────────────────────────────────────────────────────────────────
> 1 │ From: Antonio Terceiro <terceiro at debian.org>
> 2 │ Date: Fri, 13 Oct 2023 11:14:01 -0300
> 3 │ Subject: Gem::Platform: emulate 3.3.15 behavior on Ruby 3.1
> 4 │
> 5 │ rubygems 3.4 calls a Linux platform something like aarch64-linux-gnu,
> 6 │ where 3.3 called it just aarch64-linux. Given all the existing native
> 7 │ extensions for Ruby 3.1 in the Debian archive had been built
> 8 │ using rubygems 3.3, let's keep the old behavior on Ruby 3.1 as to not
> 9 │ immediately break all the existing extensions.
> 10 │ ---
> 11 │ lib/rubygems/platform.rb | 3 +++
> 12 │ 1 file changed, 3 insertions(+)
> 13 │
> 14 │ diff --git a/lib/rubygems/platform.rb b/lib/rubygems/platform.rb
> 15 │ index b721629..34d94bd 100644
> 16 │ --- a/lib/rubygems/platform.rb
> 17 │ +++ b/lib/rubygems/platform.rb
> 18 │ @@ -117,6 +117,9 @@ def initialize(arch)
> 19 │ when /^(\w+_platform)(\d+)?/ then [ $1, $2 ]
> 20 │ else [ "unknown", nil ]
> 21 │ end
> 22 │ +
> 23 │ + # emulate behavior from 3.3.15 on ruby 3.1
> 24 │ + @version = nil if (RUBY_VERSION < "3.2" && @os == "linux")
> 25 │ when Gem::Platform then
> 26 │ @cpu = arch.cpu
> 27 │ @os = arch.os
> ───────┴─────────────────────────────────────────────────────────────────────────────────
>
> As far as I can remember, it was necessary in order to not need to
> rebuilding every single Debian package that had been compiled before
> rubygems 3.4. The workaround mentioned in a previous message will work,
> but it will also break all the Debian ruby-* packages that contain
> compiled code.
>
> But, as you can see, the changed behavior only applies to ruby < 3.2. We
> are about to start a transition to ruby 3.3, and that will probably take
> a few months. After the transition is done, this problem will no longer
> be relevant.
>
> With that said, I could not reproduce this issue with the current
> default ruby. If someone can provide a minimal reproducer, I can try to
> look into it.
More information about the Pkg-ruby-extras-maintainers
mailing list