This Time Self-Hosted
dark mode light mode Search

Porting to Ruby NG eclasses

So thanks to Alex and Hans, who handled the review and commit in tree of the new eclasses we finally got them available, and the new Ruby packages added from now on are going to be based off those.

Just so you know that without having to go reading all the older posts, this results in the following good things:

  • we can package gems without using the rubygems code in the ebuild; this means that we follow Gentoo procedure for unpacking, preparing, compiling and installing the code;
  • we don’t blindly install the contents of gems: no more double-installation of compiled extensions, or object files, or tests, or any other shit that the gem has been picking up during the packaging step;
  • we don’t install a “cache” copy of the old gem either;
  • we can run test during the test phase of the ebuild, to make sure that the code we’re going to install is working to a degree;
  • we can fully support installation for multiple Ruby implementations, including user choice of implementations and full dependency tree support for them;
  • this means that we’ll soon be able to properly support JRuby as a first-class citizen in Gentoo (I need to talk to the Java guys since I need a couple of changes to the JRuby ebuild for that).

Unfortunately the porting is far from simple for a long list of reasons; there are gems that don’t package tests, others that don’t package in the gem enough files to regenerate the documentation. There are gems that require new dependencies for the tests, which means that we’re dropping keywords one after the other and that’s going to be bothersome for the arch teams. There are gems that fail their own tests by default (and that’s not just with Ruby 1.9 or JRuby that can be considered still “niche” implementations).

But probably the worst issue is with the cyclic dependencies, for instance between json and rubyforge, or with the cucumber dependencies. In those cases, when you do want to run tests, you need first to install every dependency without tests, and then you should be able to try them out. And that means spending quite a bit of time for them to work.

So please don’t blame us for not having completed the transition already; rather try to support us during this timeframe!

Comments 3
  1. > enlighten me – w.t.f. is cucumber dependency?That must be what I have! Whenever I have pickled cucumber of the right kind (schlesische Art), I quickly eat them all.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.