Hello, The ebuild for Ruby 1.9.2 incorrectly unbundles gems from the core build of Ruby for unspecified reasons. This does not actually work because, for example, the published racc gem is not the same as the racc code included with the proper ruby distribution and introduces compatibility errors. The racc gem is no longer maintained and should never be installed on a new ruby 1.9.x system. More generally, what is the advantage of removing these sub-trees from the ruby install? We're having problems where our application code is not compatible with Gentoo systems because modules that are normally installed as part of core Ruby do not exist. Reproducible: Always
Created attachment 269851 [details] New Ruby-1.9.2 build with racc included
I've attached a corrected ebuild. Since racc is now part of the core library and the gem is incompatible with Ruby 1.9, this modified ebuild does not strip it from the main build of Ruby.
NOTE: The racc gem should be masked for all ruby versions 1.9*
BTW, here's an example block of ruby code that fails on the Gentoo version of Ruby 1.9 + Rails 3. Note that due to the wonders of monkey-patching, the error is within Net::HTTP::Post and the monkey patch is in the old racc 1.4.5 gem: req = Net::HTTP::Post.new('/some/path') req.set_form_data("key" => "foo\nbar") req.body == "key=foo%0abar" #false (wrong!) req.body == "key=foo%0a&key=bar" #true (wrong!)
This seems reasonable. More broadly, Gentoo's Ruby installation ought not to break applications' expectations of what it means to have Ruby installed (i.e. what is included), or else they cannot reliably declare their own dependencies.
I've looked at this issue and found that all ruby implementations ship these particular files, including ruby 1.8, so I have decided to leave them in ruby 1.9 as well. ruby-1.9.2-r1 has them included. Given that we provide the gem and the c-based parser for the other ruby implementations I don't see a reason to remove the ruby19 target from dev-ruby/racc.
Thank you!