From 68a092a4691efc8aba9a8ae7b27c2ad51c840bf9 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 5 Sep 2022 11:00:20 +0900 Subject: Set fake.rb variables by command line arguments Then fallbacks to preprocessed version.h. --- template/fake.rb.in | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/template/fake.rb.in b/template/fake.rb.in index 9177fb10c5..67eb6dcec0 100644 --- a/template/fake.rb.in +++ b/template/fake.rb.in @@ -9,19 +9,23 @@ while /\A(\w+)=(.*)/ =~ ARGV[0] end if inc = arg['i'] src = inc == '-' ? STDIN.read : File.read(inc) - def src.value(name) - eval(self[/\bruby_#{name}(?:\[\])?\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*(?=;)|[^{};]+)/m, 1]. - gsub(/#/, '\\#'). - gsub(/((?:\G|[^\\])(?:\\\\)*)\n/, '\1')) - end - arg['versions'] = version = {} - File.read(File.join(arg['srcdir'], 'version.c')). - scan(/rb_define_global_const\("(RUBY_\w+)",[^;]*?\bMK(?:INT|STR)\(([^()]*)\)/m) do |n, v| - version[n] = src.value(v) +else + src = "" +end +def src.value(name) + unless val = self[/\bruby_#{name}(?:\[\])?\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*(?=;)|[^{};]+)/m, 1] + return end - arg['RUBY_DESCRIPTION_WITH_MJIT'] = src.value('description_with_mjit') - arg['RUBY_DESCRIPTION_WITH_YJIT'] = src.value('description_with_yjit') + eval(val.gsub(/#/, '\\#').gsub(/((?:\G|[^\\])(?:\\\\)*)\n/, '\1')) +end +version = Hash.new {|h, v| h[v] || src.value(v)} +arg['versions'] = version +File.read(File.join(arg['srcdir'], 'version.c')). + scan(/rb_define_global_const\("(RUBY_\w+)",[^;]*?\bMK(?:INT|(STR))\(([^()]*)\)/m) do |n, s, v| + version[n] = arg[v] || (s ? "" : 0) end +arg['RUBY_DESCRIPTION_WITH_MJIT'] = arg['description_with_mjit'] || "" +arg['RUBY_DESCRIPTION_WITH_YJIT'] = arg['description_with_yjit'] || "" %>baseruby="<%=arg['BASERUBY']%>" _\ =begin -- cgit v1.2.1