Created
December 21, 2011 09:45
-
-
Save nahi/1505419 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 8290963b651a418f4d34edf33734f56913770b27 Mon Sep 17 00:00:00 2001 | |
From: Hiroshi Nakamura <nahi@ruby-lang.org> | |
Date: Wed, 21 Dec 2011 18:38:38 +0900 | |
Subject: [PATCH] Avoid circular require caused by rubygems/maven_gemify | |
Circular require detection logic was introduced by series of | |
require/autoload fixes. The file rubygems/maven_gemify.rb caused 2 | |
circular-require-warnings for 1.9 mode because RubyGems itself intends to | |
autoload SpecFetcher and RemoteFetcher. Eager loading of maven_gemify.rb | |
ruins those effort and causes warnings. | |
With this commit, maven_gemify.rb is loaded after loading | |
spec_fetcher.rb. | |
BEFORE: | |
% jruby --1.9 -v -rdigest -e 0 | |
jruby 1.7.0.dev (ruby-1.9.2-p136) (2011-08-02 08c38b4) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [linux-amd64-java] | |
/home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:1 warning: loading in progress, circular require considered harmful - rubygems | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:1 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:1 | |
Gem at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:35 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/maven_gemify.rb:3 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/maven_gemify.rb:1 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/defaults/jruby.rb:1251 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems.rb:13 | |
/home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/text.rb:1 warning: loading in progress, circular require considered harmful - rubygems | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/text.rb:1 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/text.rb:4 | |
Gem at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:35 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/maven_gemify.rb:3 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/maven_gemify.rb:1 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems/defaults/jruby.rb:1251 | |
require at org/jruby/RubyKernel.java:1034 | |
(root) at /home/nahi/git/jruby/lib/ruby/site_ruby/1.8/rubygems.rb:13 | |
-e:1 warning: Useless use of a literal in void context. | |
AFTER: | |
% jruby 1.7.0.dev (ruby-1.9.2-p136) (2011-08-02 a70e633) (Java HotSpot(TM) 64-Bit Server VM 1.7.0) [linux-amd64-java] | |
-e:1 warning: Useless use of a literal in void context. | |
--- | |
lib/rubygems/defaults/jruby.rb | 1 - | |
lib/rubygems/spec_fetcher.rb | 4 ++++ | |
2 files changed, 4 insertions(+), 1 deletions(-) | |
diff --git a/lib/rubygems/defaults/jruby.rb b/lib/rubygems/defaults/jruby.rb | |
index 80cc39f..20391a0 100644 | |
--- a/lib/rubygems/defaults/jruby.rb | |
+++ b/lib/rubygems/defaults/jruby.rb | |
@@ -1,5 +1,4 @@ | |
require 'rubygems/config_file' | |
-require 'rubygems/maven_gemify' # Maven support | |
require 'rbconfig' | |
module Gem | |
diff --git a/lib/rubygems/spec_fetcher.rb b/lib/rubygems/spec_fetcher.rb | |
index d99cef5..0f98900 100644 | |
--- a/lib/rubygems/spec_fetcher.rb | |
+++ b/lib/rubygems/spec_fetcher.rb | |
@@ -297,3 +297,7 @@ class Gem::SpecFetcher | |
end | |
+# Load rubygems/maven_gemify.rb here because; | |
+# * want to require only spec_fetcher is required to avoid circular require. | |
+# * need to require after spec_fetcher and remote_fetcher to override those definitions. | |
+require 'rubygems/maven_gemify' | |
-- | |
1.7.5.4 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment