Skip to content

Commit f806582

Browse files
install .rb files after original ruby installation completed
1 parent 012cb4b commit f806582

File tree

2 files changed

+45
-35
lines changed

2 files changed

+45
-35
lines changed

lib/ruby_wasm/build_system/product/crossruby.rb

Lines changed: 45 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,49 +17,61 @@ def linklist(crossruby)
1717
File.join(product_build_dir(crossruby), "link.filelist")
1818
end
1919

20-
def define_task(crossruby)
21-
task "#{crossruby.name}-ext-#{@name}" => [crossruby.configure] do
22-
make_args = []
23-
make_args << "CC=#{@toolchain.cc}"
24-
make_args << "LD=#{@toolchain.ld}"
25-
make_args << "AR=#{@toolchain.ar}"
26-
make_args << "RANLIB=#{@toolchain.ranlib}"
20+
def make_args(crossruby)
21+
make_args = []
22+
make_args << "CC=#{@toolchain.cc}"
23+
make_args << "LD=#{@toolchain.ld}"
24+
make_args << "AR=#{@toolchain.ar}"
25+
make_args << "RANLIB=#{@toolchain.ranlib}"
2726

28-
make_args << "DESTDIR=#{crossruby.dest_dir}"
27+
make_args << "DESTDIR=#{crossruby.dest_dir}"
28+
make_args
29+
end
2930

31+
def define_task(crossruby)
32+
task "#{crossruby.name}-ext-#{@name}" => [crossruby.configure] do
3033
lib = @name
31-
source = crossruby.source
3234
objdir = product_build_dir crossruby
3335
FileUtils.mkdir_p objdir
34-
extconf_args = [
35-
"--disable=gems",
36-
# HACK: top_srcdir is required to find ruby headers
37-
"-e",
38-
%Q('$top_srcdir="#{source.src_dir}"'),
39-
# HACK: extout is required to find config.h
40-
"-e",
41-
%Q('$extout="#{crossruby.build_dir}/.ext"'),
42-
# HACK: force static ext build by imitating extmk
43-
"-e",
44-
"'$static = true; trace_var(:$static) {|v| $static = true }'",
45-
# HACK: $0 should be extconf.rb path due to mkmf source file detection
46-
# and we want to insert some hacks before it. But -e and $0 cannot be
47-
# used together, so we rewrite $0 in -e.
48-
"-e",
49-
%Q('$0="#{@srcdir}/extconf.rb"'),
50-
"-e",
51-
%Q('require_relative "#{@srcdir}/extconf.rb"'),
52-
"-I#{crossruby.build_dir}"
53-
]
54-
sh "#{crossruby.baseruby_path} #{extconf_args.join(" ")}", chdir: objdir
55-
make_cmd = %Q(make -C "#{objdir}" #{make_args.join(" ")} static)
56-
sh make_cmd
36+
do_extconf crossruby
37+
sh %Q(make -C "#{objdir}" #{make_args(crossruby).join(" ")} #{lib}.a)
5738
# A ext can provide link args by link.filelist. It contains only built archive file by default.
5839
unless File.exist?(linklist(crossruby))
5940
File.write(linklist(crossruby), Dir.glob("#{objdir}/*.a").join("\n"))
6041
end
6142
end
6243
end
44+
45+
def do_extconf(crossruby)
46+
objdir = product_build_dir crossruby
47+
source = crossruby.source
48+
extconf_args = [
49+
"--disable=gems",
50+
# HACK: top_srcdir is required to find ruby headers
51+
"-e",
52+
%Q('$top_srcdir="#{source.src_dir}"'),
53+
# HACK: extout is required to find config.h
54+
"-e",
55+
%Q('$extout="#{crossruby.build_dir}/.ext"'),
56+
# HACK: force static ext build by imitating extmk
57+
"-e",
58+
"'$static = true; trace_var(:$static) {|v| $static = true }'",
59+
# HACK: $0 should be extconf.rb path due to mkmf source file detection
60+
# and we want to insert some hacks before it. But -e and $0 cannot be
61+
# used together, so we rewrite $0 in -e.
62+
"-e",
63+
%Q('$0="#{@srcdir}/extconf.rb"'),
64+
"-e",
65+
%Q('require_relative "#{@srcdir}/extconf.rb"'),
66+
"-I#{crossruby.build_dir}"
67+
]
68+
sh "#{crossruby.baseruby_path} #{extconf_args.join(" ")}", chdir: objdir
69+
end
70+
71+
def do_install_rb(crossruby)
72+
objdir = product_build_dir crossruby
73+
sh %Q(make -C "#{objdir}" #{make_args(crossruby).join(" ")} install-rb)
74+
end
6375
end
6476

6577
class CrossRubyProduct < BuildProduct
@@ -125,8 +137,7 @@ def define_task
125137
next if File.exist?(artifact)
126138
rm_rf dest_dir
127139
cp_r "#{dest_dir}-install", dest_dir
128-
ruby_api_version =
129-
`#{baseruby_path} -e 'print RbConfig::CONFIG["ruby_version"]'`
140+
@user_exts.each { |ext| ext.do_install_rb(self) }
130141
sh "tar cfz #{artifact} -C rubies #{name}"
131142
end
132143
end

lib/ruby_wasm/rake_task.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,4 @@ def add_product(product)
7878
@products_to_define << product
7979
product
8080
end
81-
8281
end

0 commit comments

Comments
 (0)