Bugs item #28154, was opened at 2010-04-29 11:35
You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=575&aid=28154&group_id=126

Category: other
Group: v1.3.x
>Status: Closed
Resolution: None
Priority: 3
Submitted By: Randall Lucas (rlucas)
Assigned to: Nobody (None)
Summary: Gem.binary_mode version test for Ruby 1.9 sets invalid rb:ascii-8bit 
mode

Initial Comment:
In rubygems.rb, line 344, self.binary_mode makes a check for RUBY_VERSION and 
sets @binary_mode accordingly.  However, it assumes wrongly that the mode 
"rb:ascii-8bit" is available for all RUBY_VERSION > '1.9'.  In fact, that mode 
does NOT work in Ruby 1.9.0, and was added in 1.9.1.  (See support below from 
Ruby core SVN.)

This manifests as a cryptic error:

ERROR:  While executing gem ... (ArgumentError)
    illegal access mode rb:ascii-8bit

(full debugging error output below).

Suggested fix: alter self.binary_mode to check for RUBY_VERSION > '1.9.0' thus:

binary_mode ||= RUBY_VERSION > '1.9.0' ? 'rb:ascii-8bit' : 'rb'

---
Support from Ruby core SVN for the mode name-change that breaks between 1.9.0 
and 1.9.1:

>From 
>http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/tags/v1_9_0_5/enc/ascii.c?view=log

Revision 13670  - (view) (download) (annotate) - [select for diffs]
Modified Wed Oct 10 06:50:33 2007 UTC (2 years, 6 months ago) by akr
Original Path: trunk/ascii.c
File length: 2408 byte(s)
Diff to previous 12376 (colored)

* encoding.c (rb_enc_init): don't alias iso-8859-1 to ascii.

* ascii.c (OnigEncodingASCII): change the name US-ASCII to ASCII-8BIT.


---
version info:

$ uname -a
Linux arrakis 2.6.18-6-amd64 #1 SMP Sat Feb 20 23:34:55 UTC 2010 x86_64 
GNU/Linux

$ ruby -v
ruby 1.9.0 (2006-06-08) [x86_64-linux]

$ sudo gem --debug install rake
Exception `NameError' at 
/usr/local/lib/site_ruby/1.9/rubygems/command_manager.rb:163 - uninitialized 
constant Gem::Commands::InstallCommand
Exception `Gem::LoadError' at /usr/local/lib/site_ruby/1.9/rubygems.rb:778 - 
Could not find RubyGem test-unit (>= 0)

Exception `Gem::LoadError' at /usr/local/lib/site_ruby/1.9/rubygems.rb:778 - 
Could not find RubyGem sources (> 0.0.1)

Exception `ArgumentError' at /usr/local/lib/site_ruby/1.9/rubygems/format.rb:50 
- illegal access mode rb:ascii-8bit
ERROR:  While executing gem ... (ArgumentError)
    illegal access mode rb:ascii-8bit
        /usr/local/lib/site_ruby/1.9/rubygems/format.rb:50:in `initialize'
        /usr/local/lib/site_ruby/1.9/rubygems/format.rb:50:in 
`Gem::Format#from_file_by_path'
        /usr/local/lib/site_ruby/1.9/rubygems/installer.rb:118:in `initialize'
        /usr/local/lib/site_ruby/1.9/rubygems/dependency_installer.rb:257:in 
`Gem::DependencyInstaller#install'
        /usr/local/lib/site_ruby/1.9/rubygems/dependency_installer.rb:240:in 
`Gem::DependencyInstaller#install'
        
/usr/local/lib/site_ruby/1.9/rubygems/commands/install_command.rb:119:in 
`execute'
        
/usr/local/lib/site_ruby/1.9/rubygems/commands/install_command.rb:116:in 
`execute'
        /usr/local/lib/site_ruby/1.9/rubygems/command.rb:258:in 
`Gem::Command#invoke'
        /usr/local/lib/site_ruby/1.9/rubygems/command_manager.rb:134:in 
`process_args'
        /usr/local/lib/site_ruby/1.9/rubygems/command_manager.rb:104:in 
`Gem::CommandManager#run'
        /usr/local/lib/site_ruby/1.9/rubygems/gem_runner.rb:58:in 
`Gem::GemRunner#run'
        /usr/bin/gem:21

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.9.0 (2006-06-08) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby1.9/gems/1.9
  - RUBY EXECUTABLE: /usr/bin/ruby1.9
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby1.9/gems/1.9
     - /home/rlucas/.gem/ruby/1.9
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/


----------------------------------------------------------------------

Comment By: Randall Lucas (rlucas)
Date: 2010-05-01 10:43

Message:
Looks like it's fixed in trunk anyhow.  FYI.

----------------------------------------------------------------------

Comment By: Randall Lucas (rlucas)
Date: 2010-05-01 10:37

Message:
Well, the unsuitability of 1.9.0 is certainly crystal-clear
to me *now.*  But it *does* exist out there in the wild. 
Debian 4.0 and 5.0 (both the oldstable and stable) provide
1.9.0 as their Ruby 1.9 packages:

http://packages.debian.org/lenny/interpreters/ruby1.9

http://packages.debian.org/etch/interpreters/ruby1.9

But the real issue here is the correctness of the version
checks.  I'm not so much suggesting that Rubygems be changed
so as to accommodate 1.9.0, but rather asking that it not
falsely give 1.9.0 credit for being a fully self-actualized
and production-ready 1.9.1 version ;)

----------------------------------------------------------------------

Comment By: Eric Hodel (drbrain)
Date: 2010-04-30 22:04

Message:
As far as I know 1.9.0 was never supposed to be a stable release used in 
production.

There are no 1.9.0 releases in ftp.ruby-lang.org/pub/ruby and no patchlevels 
were released for it in /pub/ruby/1.9.0 (only snapshots).

Is there some reason you can't use 1.9.1?

----------------------------------------------------------------------

You can respond by visiting: 
http://rubyforge.org/tracker/?func=detail&atid=575&aid=28154&group_id=126
_______________________________________________
Rubygems-developers mailing list
http://rubyforge.org/projects/rubygems
Rubygems-developers@rubyforge.org
http://rubyforge.org/mailman/listinfo/rubygems-developers

Reply via email to