Skip to content

Commit 1f3e767

Browse files
Detect WASI exec-model by adhoc way for now
1 parent e7629e2 commit 1f3e767

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

lib/ruby_wasm/packager/core.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ def specs_with_extensions
5959
end
6060
end
6161

62+
def wasi_exec_model
63+
# TODO: Detect WASI exec-model from binary exports (_start or _initialize)
64+
use_js_gem = @packager.specs.any? do |spec|
65+
spec.name == "js"
66+
end
67+
use_js_gem ? "reactor" : "command"
68+
end
69+
6270
def cache_key(digest)
6371
raise NotImplementedError
6472
end
@@ -127,8 +135,7 @@ def _link_gem_exts(executor, build, gem_home)
127135
wasi_sdk_path = toolchain.wasi_sdk_path
128136
libraries << File.join(wasi_sdk_path, "share/wasi-sysroot/lib/wasm32-wasi", lib)
129137
end
130-
# TODO: Detect WASI exec-model from binary exports (_start or _initialize)
131-
wasi_adapter = RubyWasm::Packager::ComponentAdapter.wasi_snapshot_preview1("reactor")
138+
wasi_adapter = RubyWasm::Packager::ComponentAdapter.wasi_snapshot_preview1(wasi_exec_model)
132139
adapters = [wasi_adapter]
133140
dl_openable_libs = []
134141
dl_openable_libs << [File.join(ruby_root, "usr"), Dir.glob(File.join(ruby_root, "usr", "local", "lib", "ruby", "**", "*.so"))]
@@ -334,7 +341,7 @@ def link_gem_exts(executor, gem_home, module_bytes)
334341
linker.module(module_bytes)
335342
linker.adapter(
336343
"wasi_snapshot_preview1",
337-
File.binread(RubyWasm::Packager::ComponentAdapter.wasi_snapshot_preview1("reactor"))
344+
File.binread(RubyWasm::Packager::ComponentAdapter.wasi_snapshot_preview1(wasi_exec_model))
338345
)
339346

340347
linker.encode()

0 commit comments

Comments
 (0)