Hello Andreas

Thank you for your research.

The standard gems are indeed a source of confusion both in Ruby
distribution and in Arch packages.

One thing that could really help here is a working proposal with a patch to
PKGBUILD. If you can come up with one please file an arch bug and share it
with me so I can look at it.

On Wed, Jun 1, 2022 at 10:45 AM Andreas 'Segaja' Schleifer <
seg...@archlinux.org> wrote:

> Hello everyone,
>
> while trying to package the ruby framework rails [0] I stumbled over the
> fact that ruby itself is shipping an assortment of "default gems" which
> they call "Standard Library" [1] [2]
> and something called "Bundled Gems" [3], which is another set of "default
> gems".
> The problem I see in these gems is that they are pulled into the ruby
> source repo [4] from their dedicated original sources before a ruby release
> and then get used in the release.
> Furthermore ruby itself does not release a new version of itself whenever
> a gem of this standard library updates, which means that over time sooner
> or later most of these gems in the bundle
> will be out-of-date.
> Now apparently ruby has a general solution for that. You can have multiple
> versions of one gem installed, the "default" versions do show up with a
> default prefix in the `gem list` output.
>
> So much for the actual ruby state. Now I would like to highlight some
> points I found out about how Arch Linux is packaging ruby and the issues I
> see with it.
>
> Our ruby package [5] is currently removing a total of nine pre-shipped
> gems from the main ruby release with the comment that they are shipped in
> seperate packages [6].
> I recently checked and found out that three of these removed gems are not
> provided as packages (anymore?). Namely rbs, typerof and erb.
> Furthermore the PKGBUILD has code in there which states that it removes
> *all* bundled gems to avoid conflicts [7], but when I run a `gem list |
> grep 'default'` I still see the default gems.
> After some research I found out the reason is because the path in which
> the default gems are located are not the path that we are removing with
> these three lines of code.
> It could be that the location of these default gems changed in some
> version and was never updated.
>
> The problem I see in the current situation is that we have most of the
> default gems still installed and then some of them get upgraded (sometimes
> even to a higher major version) by dedicated packages.
> This can potentially break dependency changes if one of the not upgraded
> default gems is requiring the gem that was upgraded to a new major version.
>
> From my point of view the only real fix for this is to make sure that we
> again remove all the default gems so that they can be packaged seperatly.
> Whether or not we want to provide all gems from the
> "standard library" and "bundled gems" is then a different question and
> would in the end require more ruby packages.
> Also I would recomment to add a comment to the PKGBUILD file of these gems
> stating that they are part of the "standard library" / "bundled gems" and
> such shouldn't be dropped from the repos in the future.
>
> We also could think about putting all the "standard library" gems (and
> maybe even the "bundled gems") in a package group called "ruby-stdlib" or a
> meta-package (which I think is better).
> That way users could easily install all of them with one command and we
> also know which packages belong to the "ruby standard library".
>
> One side effect I see with this approach is that we currently have "hidden
> dependencies" on some of the standard library gems like in case of
> ruby-nokogiri [8], which is depending on ruby-racc which is not listed in
> the PKGBUILD file.
> Currently this package only works because racc is one of the gems in the
> standard library [9] and such pre-installed. If we now cleanup the ruby
> package we need to fix such issues.
>
>
> Best regards
> Segaja
>
>
> [0] https://rubyonrails.org/
> [1] https://rubyreferences.github.io/rubyref/stdlib.html
> [2] https://ruby-doc.org/stdlib-3.1.2/
> [3] https://rubyreferences.github.io/rubyref/stdlib/bundled.html
> [4] https://github.com/ruby/ruby/tree/master/lib
> [5] https://archlinux.org/packages/extra/x86_64/ruby/
> [6]
> https://github.com/archlinux/svntogit-packages/blob/packages/ruby/trunk/PKGBUILD#L56-L79=
> [7]
> https://github.com/archlinux/svntogit-packages/blob/packages/ruby/trunk/PKGBUILD#L81-L84=
> [8] https://bugs.archlinux.org/task/71500
> [9]
> https://rubyreferences.github.io/rubyref/stdlib/string-utilities/racc.html
>

Reply via email to