ruby-changes:38729
From: nobu <ko1@a...>
Date: Wed, 10 Jun 2015 11:06:46 +0900 (JST)
Subject: [ruby-changes:38729] nobu:r50810 (trunk): fake.rb.in: accurate fake
nobu 2015-06-10 11:06:28 +0900 (Wed, 10 Jun 2015) New Revision: 50810 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=50810 Log: fake.rb.in: accurate fake * template/fake.rb.in: turn into erb template from autoconf template to fake more accurately. * common.mk (fake.rb): needs preprocessed file now. * version.c (Init_version): add dummy expression to RUBY_ENGINE_VERSION. Modified files: trunk/ChangeLog trunk/common.mk trunk/template/fake.rb.in trunk/version.c Index: ChangeLog =================================================================== --- ChangeLog (revision 50809) +++ ChangeLog (revision 50810) @@ -1,3 +1,13 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Jun 10 11:06:25 2015 Nobuyoshi Nakada <nobu@r...> + + * template/fake.rb.in: turn into erb template from autoconf + template to fake more accurately. + + * common.mk (fake.rb): needs preprocessed file now. + + * version.c (Init_version): add dummy expression to + RUBY_ENGINE_VERSION. + Tue Jun 9 12:31:25 2015 Marc-Andre Lafortune <ruby-core@m...> * lib/prime.rb: Simplify and optimize EratosthenesSieve Index: common.mk =================================================================== --- common.mk (revision 50809) +++ common.mk (revision 50810) @@ -549,10 +549,10 @@ fake: $(CROSS_COMPILING)-fake https://github.com/ruby/ruby/blob/trunk/common.mk#L549 yes-fake: $(arch)-fake.rb $(RBCONFIG) PHONY no-fake: PHONY -$(arch)-fake.rb: $(RBCONFIG) $(srcdir)/template/fake.rb.in $(srcdir)/tool/expand-config.rb rbconfig.rb - @$(BOOTSTRAPRUBY) $(srcdir)/tool/expand-config.rb \ - -output=$@ -mode=$(INSTALL_PROG_MODE) -expand -config=rbconfig.rb \ - srcdir="$(srcdir)" BASERUBY="$(BASERUBY)" $(srcdir)/template/fake.rb.in +$(arch)-fake.rb: $(srcdir)/template/fake.rb.in $(srcdir)/tool/generic_erb.rb version.i + $(ECHO) generating $@ + @$(BOOTSTRAPRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/fake.rb.in \ + i=version.i srcdir="$(srcdir)" BASERUBY="$(BASERUBY)" btest: $(TEST_RUNNABLE)-btest no-btest: PHONY Index: version.c =================================================================== --- version.c (revision 50809) +++ version.c (revision 50810) @@ -38,11 +38,11 @@ VALUE ruby_engine_name = Qnil; https://github.com/ruby/ruby/blob/trunk/version.c#L38 void Init_version(void) { - VALUE v = MKSTR(version); + VALUE version; /* * The running version of ruby */ - rb_define_global_const("RUBY_VERSION", v); + rb_define_global_const("RUBY_VERSION", (version = MKSTR(version))); /* * The date this ruby was released */ @@ -75,7 +75,7 @@ Init_version(void) https://github.com/ruby/ruby/blob/trunk/version.c#L75 /* * The version of the engine or interpreter this ruby uses. */ - rb_define_global_const("RUBY_ENGINE_VERSION", v); + rb_define_global_const("RUBY_ENGINE_VERSION", (1 ? version : MKSTR(version))); } /*! Prints the version information of the CRuby interpreter to stdout. */ Index: template/fake.rb.in =================================================================== --- template/fake.rb.in (revision 50809) +++ template/fake.rb.in (revision 50810) @@ -1,4 +1,18 @@ https://github.com/ruby/ruby/blob/trunk/template/fake.rb.in#L1 -baseruby="@BASERUBY@" +<% +arg = {} +while /\A(\w+)=(.*)/ =~ ARGV[0] + arg[$1] = $2 + arg[$1].tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR + ARGV.shift +end +if arg['i'] + src = File.read(arg['i']) + arg['versions'] = version = {} + src.scan(/rb_define_global_const\("(RUBY_\w+)",\s*(?:.*rb_\w*str_new\w*\((\w+)|\(*\(VALUE\)\((.+)\)\)\s*<<\s?)/) do |n, s, i| + version[n] = i ? i.to_i : src[/\b#{s}\[\]\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*);/m, 1].gsub(/\A"|"\z|" *"/, '').gsub(/\\(.)/, '\1') + end +end +%>baseruby="<%=arg['BASERUBY']%>" ruby="${RUBY-$baseruby}" _= "eval" "{" \ @@ -10,20 +24,13 @@ ruby=ruby https://github.com/ruby/ruby/blob/trunk/template/fake.rb.in#L24 class Object remove_const :CROSS_COMPILING if defined?(CROSS_COMPILING) CROSS_COMPILING = RUBY_PLATFORM - remove_const :RUBY_PLATFORM - remove_const :RUBY_VERSION - remove_const :RUBY_PATCHLEVEL - remove_const :RUBY_RELEASE_DATE - remove_const :RUBY_DESCRIPTION if defined?(RUBY_DESCRIPTION) - RUBY_PLATFORM = "@arch@" - RUBY_VERSION = "@RUBY_PROGRAM_VERSION@" - RUBY_PATCHLEVEL = @PATCHLEVEL@ - RUBY_RELEASE_DATE = "@RUBY_RELEASE_DATE@" - patchlevel_str = RUBY_PATCHLEVEL == -1 ? "dev" : "p#{RUBY_PATCHLEVEL}" - RUBY_DESCRIPTION = "ruby #{RUBY_VERSION}#{patchlevel_str} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]" + constants.grep(/^RUBY_/) {|n| remove_const n} +% arg['versions'].each {|n, v| + <%=n%> = <%=v.inspect%> +% } end builddir = File.dirname(File.expand_path(__FILE__)) -top_srcdir = File.expand_path("@srcdir@", builddir) +top_srcdir = File.expand_path("<%=arg['srcdir']%>", builddir) $:.unshift(builddir) fake = File.join(top_srcdir, "tool/fake.rb") eval(File.read(fake), nil, fake) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/