Skip to content

Instantly share code, notes, and snippets.

@nahi
Created December 21, 2011 09:45
Show Gist options
  • Save nahi/1505419 to your computer and use it in GitHub Desktop.
Save nahi/1505419 to your computer and use it in GitHub Desktop.
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