[前][次][番号順一覧][スレッド一覧]

ruby-changes:12615

From: yugui <ko1@a...>
Date: Thu, 30 Jul 2009 23:12:43 +0900 (JST)
Subject: [ruby-changes:12615] Ruby:r24327 (trunk): * tool/compile_prelude.rb: replaces "require" with in-place evaluation

yugui	2009-07-30 23:12:25 +0900 (Thu, 30 Jul 2009)

  New Revision: 24327

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24327

  Log:
    * tool/compile_prelude.rb: replaces "require" with in-place evaluation
      so that copy & paste for lib/rubygems/default.rb is not necessary.
    * gem_prelude.rb: removes copied codes from lib/rubygems/defaults.rb.
      uses require instead.
    
    * common.mk (prelude.c): adds dependency for lib/rubygems/defaults.rb.

  Modified files:
    trunk/ChangeLog
    trunk/common.mk
    trunk/gem_prelude.rb
    trunk/tool/compile_prelude.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24326)
+++ ChangeLog	(revision 24327)
@@ -1,3 +1,13 @@
+Thu Jul 30 22:28:04 2009  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* tool/compile_prelude.rb: replaces "require" with in-place evaluation
+	  so that copy & paste for lib/rubygems/default.rb is not necessary.
+
+	* gem_prelude.rb: removes copied codes from lib/rubygems/defaults.rb.
+	  uses require instead.
+
+	* common.mk (prelude.c): adds dependency for lib/rubygems/defaults.rb.
+
 Thu Jul 30 21:56:18 2009  Yusuke Endoh  <mame@t...>
 
 	* test/ruby/test_rand.rb: add tests for Random class.
Index: gem_prelude.rb
===================================================================
--- gem_prelude.rb	(revision 24326)
+++ gem_prelude.rb	(revision 24327)
@@ -1,6 +1,5 @@
 # depends on: array.rb dir.rb env.rb file.rb hash.rb module.rb regexp.rb
 # vim: filetype=ruby
-# THIS FILE WAS AUTOGENERATED, DO NOT EDIT
 
 # NOTICE: Ruby is during initialization here.
 # * Encoding.default_external does not reflects -E.
@@ -91,113 +90,12 @@
     end
 
     # begin rubygems/defaults
+    # NOTE: this require will be replaced with in-place eval before compilation.
+    require 'lib/rubygems/defaults.rb'
+    # end rubygems/defaults
 
-    @post_install_hooks   ||= []
-    @post_uninstall_hooks ||= []
-    @pre_uninstall_hooks  ||= []
-    @pre_install_hooks    ||= []
 
     ##
-    # An Array of the default sources that come with RubyGems
-
-    def self.default_sources
-      %w[http://gems.rubyforge.org/]
-    end
-
-    ##
-    # Default home directory path to be used if an alternate value is not
-    # specified in the environment
-
-    def self.default_dir
-      if defined? RUBY_FRAMEWORK_VERSION then
-        File.join File.dirname(ConfigMap[:sitedir]), 'Gems',
-                  ConfigMap[:ruby_version]
-      elsif RUBY_VERSION >= '1.9.2' then
-        File.join(ConfigMap[:rubylibprefix], 'gems',
-                  ConfigMap[:ruby_version])
-      # only Ruby 1.9.1 has a peculiar feature
-      elsif RUBY_VERSION > '1.9' and 
-        File.join(ConfigMap[:libdir], ConfigMap[:ruby_install_name], 'gems',
-                  ConfigMap[:ruby_version])
-      else
-        File.join(ConfigMap[:libdir], ruby_engine, 'gems',
-                  ConfigMap[:ruby_version])
-      end
-    end
-  
-    ##
-    # Path for gems in the user's home directory
-  
-    def self.user_dir
-      File.join(Gem.user_home, '.gem', ruby_engine,
-                ConfigMap[:ruby_version])
-    end
-  
-    ##
-    # Default gem load path
-  
-    def self.default_path
-      if File.exist?(Gem.user_home)
-        [user_dir, default_dir]
-      else
-        [default_dir]
-      end
-    end
-  
-    ##
-    # Deduce Ruby's --program-prefix and --program-suffix from its install name
-  
-    def self.default_exec_format
-      exec_format = ConfigMap[:ruby_install_name].sub('ruby', '%s') rescue '%s'
-  
-      unless exec_format =~ /%s/ then
-        raise Gem::Exception,
-          "[BUG] invalid exec_format #{exec_format.inspect}, no %s"
-      end
-  
-      exec_format
-    end
-  
-    ##
-    # The default directory for binaries
-  
-    def self.default_bindir
-      if defined? RUBY_FRAMEWORK_VERSION then # mac framework support
-        '/usr/bin'
-      else # generic install
-        ConfigMap[:bindir]
-      end
-    end
-  
-    ##
-    # The default system-wide source info cache directory
-  
-    def self.default_system_source_cache_dir
-      File.join Gem.dir, 'source_cache'
-    end
-  
-    ##
-    # The default user-specific source info cache directory
-  
-    def self.default_user_source_cache_dir
-      File.join Gem.user_home, '.gem', 'source_cache'
-    end
-  
-    ##
-    # A wrapper around RUBY_ENGINE const that may not be defined
-  
-    def self.ruby_engine
-      if defined? RUBY_ENGINE then
-        RUBY_ENGINE
-      else
-        'ruby'
-      end
-    end
-  
-  
-    # end rubygems/defaults
-
-    ##
     # Methods before this line will be removed when QuickLoader is replaced
     # with the real RubyGems
 
Index: common.mk
===================================================================
--- common.mk	(revision 24326)
+++ common.mk	(revision 24327)
@@ -696,7 +696,7 @@
 miniprelude.c: $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb
 	$(BASERUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb $@
 
-prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(PRELUDE_SCRIPTS) $(PREP)
+prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(srcdir)/lib/rubygems/defaults.rb $(PRELUDE_SCRIPTS) $(PREP)
 	$(COMPILE_PRELUDE) $(PRELUDE_SCRIPTS) $@
 
 golf_prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(srcdir)/prelude.rb $(srcdir)/golf_prelude.rb $(PREP)
Index: tool/compile_prelude.rb
===================================================================
--- tool/compile_prelude.rb	(revision 24326)
+++ tool/compile_prelude.rb	(revision 24327)
@@ -23,6 +23,10 @@
 def c_esc(str)
   '"' + str.gsub(C_ESC_PAT) { C_ESC[$&] } + '"'
 end
+def prelude_name(*path_nests)
+  prelude = path_nests.map{|prelude_path| File.basename(prelude_path, ".rb") }.join(":")
+  "<internal:" + prelude + ">"
+end
 
 mkconf = nil
 setup_ruby_prefix = nil
@@ -47,6 +51,16 @@
         "nil"
       end
     }
+    line.gsub!(/require\s*(\(?)\s*(["'])(.*?)\2\s*\1/) {
+      orig, path = $&, $3
+      srcdir = File.expand_path("../..", __FILE__)
+      path = File.expand_path(path, srcdir)
+      if File.exist?(path)
+        "eval(%s, TOPLEVEL_BINDING, %s, %d)" % [ File.read(path).dump, prelude_name(filename, path).dump, 1]
+      else
+        orig
+      end
+    }
     lines << c_esc(line)
   }
   setup_lines = []
@@ -60,11 +74,16 @@
 require 'erb'
 
 tmp = ERB.new(<<'EOS', nil, '%').result(binding)
+/* -*-c-*-
+ THIS FILE WAS AUTOGENERATED BY tool/compile_prelude.rb. DO NOT EDIT.
+
+ soruces: <%= preludes.join(', ') %>
+*/
 #include "ruby/ruby.h"
 #include "vm_core.h"
 
 % preludes.zip(lines_list).each_with_index {|(prelude, (setup_lines, lines)), i|
-static const char prelude_name<%=i%>[] = <%=c_esc("<internal:" + File.basename(prelude, ".rb") + ">")%>;
+static const char prelude_name<%=i%>[] = <%=c_esc(prelude_name(prelude))%>;
 static const char prelude_code<%=i%>[] =
 %   (setup_lines+lines).each {|line|
 <%=line%>

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]