aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-30 14:12:25 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-30 14:12:25 +0000
commite60463034a468ec9fcee73466e76bd541c9a39c3 (patch)
treefbb640c59324a524ee50396c7e7a40923cdaa7a4
parent045136d47599596c78e72ecb8de688671dfae669 (diff)
downloadruby-e60463034a468ec9fcee73466e76bd541c9a39c3.tar.gz
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog10
-rw-r--r--common.mk2
-rw-r--r--gem_prelude.rb108
-rwxr-xr-xtool/compile_prelude.rb21
4 files changed, 34 insertions, 107 deletions
diff --git a/ChangeLog b/ChangeLog
index 66773ac554..16b3f8cdd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Thu Jul 30 22:28:04 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * 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@tsg.ne.jp>
* test/ruby/test_rand.rb: add tests for Random class.
diff --git a/common.mk b/common.mk
index f50a67a3d7..de69872337 100644
--- a/common.mk
+++ b/common.mk
@@ -696,7 +696,7 @@ known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_
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)
diff --git a/gem_prelude.rb b/gem_prelude.rb
index e93f6045f9..d32cbe9b42 100644
--- a/gem_prelude.rb
+++ b/gem_prelude.rb
@@ -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,112 +90,11 @@ if defined?(Gem) then
end
# begin 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
-
-
+ # NOTE: this require will be replaced with in-place eval before compilation.
+ require 'lib/rubygems/defaults.rb'
# end rubygems/defaults
+
##
# Methods before this line will be removed when QuickLoader is replaced
# with the real RubyGems
diff --git a/tool/compile_prelude.rb b/tool/compile_prelude.rb
index e0a011ce2d..48b9e2e1cf 100755
--- a/tool/compile_prelude.rb
+++ b/tool/compile_prelude.rb
@@ -23,6 +23,10 @@ C_ESC_PAT = Regexp.union(*C_ESC.keys)
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 @@ lines_list = preludes.map {|filename|
"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 @@ lines_list = preludes.map {|filename|
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%>