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 <terce...@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.

Attachment: signature.asc
Description: PGP signature

Reply via email to