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