Heads up: Rebuild for Ruby 1.9.3

Vít Ondruch vondruch at redhat.com
Thu Jan 26 07:49:52 UTC 2012


Dne 25.1.2012 22:46, Mo Morsi napsal(a):
> On 01/25/2012 03:40 AM, Vít Ondruch wrote:
>> Dne 25.1.2012 00:52, Rex Dieter napsal(a):
>>> Mo Morsi wrote:
>>>
>>>> On 01/24/2012 04:50 AM, Bohuslav Kabrda wrote:
>>>>> Hi,
>>>>> since we finally got our Ruby 1.9.3 feature page [1] approved, we are
>>>>> starting rebuild for Ruby 1.9.3. Everyone who owns a package that 
>>>>> depends
>>>>> on Ruby or Rubygems should rebuild it in the special Koji target
>>>>> "f17-ruby". This target will be merged into rawhide just before the
>>>>> branching, which will occur on 2012-02-07. After this deadline, 
>>>>> you will
>>>>> need to go through the standard Bodhi update process. The detailed
>>>>> instructions on rebuilding the packages, including our suggested 
>>>>> changes
>>>>> can be found in [2]. Feel free to contact me or Vit Ondruch 
>>>>> (vondruch at
>>>>> redhat dot com) or write to ruby-sig mailing lists, if you run 
>>>>> into any
>>>>> kind of problems.
>>>>>
>>>>>
>>>> I'm somewhat confused. Has the issue w/ sudo gem install been 
>>>> resolved?
>>> Any citation or bug references for this problem you mention?
>>>
>>> -- rex
>>>
>>
>> Let me clear the situation. First of all, this is not issue of "sudo 
>> gem install". That command works just fine. That is issue with 
>> Bundler. Unfortunately, Bundler is one big hack above RubyGems based 
>> on some assumptions which are not true. It can be seen on its code 
>> where is a lot of custom logic for specific version o RubyGems and 
>> Bundler has a lot more quirks with regard of its usage on package 
>> driven systems. It can break for example with every upstream change 
>> of RubyGems. Now what is the issue:
>>
>> Ruby, speaking about upstream as well as 1.8 in Fedora, traditionally 
>> broke the FHS. We tried to remove this breakage with Ruby 1.9. 
>> RubyGems traditionally installs their binary extensions into the same 
>> place as their platform independent code, incompatible with FHS. To 
>> be somehow compatible with FHS, this was changed and for Ruby 1.8, 
>> the binary extensions were installed into ruby_sitedir. That results 
>> in conflicting binary RPMs which conflicts among their versions, 
>> although this was never the case for RubyGems packages. So for Ruby 
>> 1.9.3 we tried to work on this issue and we modified RubyGems to be 
>> able to load the libraries, where the noarch part is placed in share 
>> and the binary library in lib, so RPM packaged gems are installed 
>> into /usr/share and their binary libraries into /usr/lib. Moreover, 
>> we changed how RubyGems works, e.g. by default, "gem install" 
>> installs gems into your home directory, so you don't need sudo to 
>> work with gems anymore. However, if your are using "gem install" with 
>> root users, they are installed into /usr/local/share and their binary 
>> libraries are installed into /usr/local/lib.
>>
>> Now there comes Bundler. Assuming it knows everything about RubyGems, 
>> they put together their custom logic how to populate Ruby's load 
>> paths, which does not work well with changes we made into RubyGems, 
>> i.e. it cannot add the binary extension path to the Ruby's load path, 
>> resulting in failure when loading the gem. Nevertheless, this is 
>> going to be handled in RPM packaged Bundler and it will work properly 
>> as long as user uses RPM packaged Bundler. Once somebody installs 
>> upstream version of Bundler, the Bundler fails naturally.
>>
>> So there are probably 4 solutions to this issue:
>>
>> 1) Always use Bundler provided by Fedora which will works as it should.
>> 2) Force Ruby and RubyGems upstream to properly support FHS. I 
>> already provided patches [1] but I need your support.
>> 3) Revert the customized behavior of RubyGems and break FHS.
>> 4) Treat root as regular user and install gem also into root's home 
>> directory, but it obviously doesn't make sense.
>>
>> So obviously I have chosen 1) and trying to move forward with 2). 
>> That works most of the times. It breaks only in situation, when you 
>> install upstream Bundler using "sudo gem install" and later you want 
>> to use some system wide gem with binary extension. If you install 
>> gems using "gem install" into your home dir (preferred, default way), 
>> it works every time. Mixing of RPMs with other package managers has 
>> its limits and this is one of them.
>>
>
>
> OK so the only thing that will not work after everything is said and 
> done is running 'sudo bundle install' if you've installed bunder via 
> 'gem install bundler' and not 'yum install rubygem-bundler' correct?
>
> If that is the case, I can live with this as running 'bundle install' 
> as sudo is discouraged upstream anyways. I've seen a few cases which 
> this is used as a hacky workaround, but I think the intention on 
> bundler is to vendorize dependencies locally and is not meant for 
> system-wide management.
>
> My only concern is that upstream practices will change yet again in a 
> manner which our reworking of the load paths to conform to the FHS 
> will be incompatible. Try as we might, I don't believe the Fedora ruby 
> community has enough sway with the upstream ruby community to change 
> their practices (yet) so I'm willing to go forward with this new 
> direction provided that if it becomes incompatible w/ a widespread 
> upstream practice down the road, we evaluate the situation and 
> possibly make the necessary changes to play well w/ the Ruby 
> community. At least until the day we can reasonably influence the 
> direction of the upstream practices.
>
>   -Mo
>
> _______________________________________________
> ruby-sig mailing list
> ruby-sig at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/ruby-sig

Nicely summarized.

BTW Red Hat already employs one of ruby-core commiters, so who knows ;)


Vit


More information about the ruby-sig mailing list