summaryrefslogtreecommitdiff
path: root/template/fake.rb.in
blob: a2de876e356211ee438990911cceaf6d3c372726 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%
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" "{" \
"`expr \"$ruby\" : echo > /dev/null || echo exec`" \
"$ruby" '-r"`expr \"$0\" : / > /dev/null || pwd`/${0#/}" "$@";' \
"}" || "exit" "$?"
_=baseruby
ruby=ruby
class Object
  remove_const :CROSS_COMPILING if defined?(CROSS_COMPILING)
  CROSS_COMPILING = 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("<%=arg['srcdir']%>", builddir)
$:.unshift(builddir)
fake = File.join(top_srcdir, "tool/fake.rb")
eval(File.read(fake), nil, fake)
ENV["RUBYOPT"] = ["-r#{__FILE__}", ENV["RUBYOPT"]].compact.join(" ")