@@ -48,6 +48,7 @@ def vendor_gem_cache(pkg)
48
48
require_relative "../packages/gems/js/lib/js/version"
49
49
sh "gem" , "-C" , "packages/gems/js" , "build" , "-o" ,
50
50
File . join ( vendor_cache_dir , "js-#{ JS ::VERSION } .gem" )
51
+ JS ::VERSION
51
52
end
52
53
53
54
namespace :npm do
@@ -62,7 +63,7 @@ namespace :npm do
62
63
# Skip if the package does not require building ruby
63
64
next unless build_command
64
65
65
- vendor_gem_cache ( pkg )
66
+ js_gem_version = vendor_gem_cache ( pkg )
66
67
67
68
env = {
68
69
# Share ./build and ./rubies in the same workspace
@@ -80,12 +81,15 @@ namespace :npm do
80
81
mkdir_p dist_dir
81
82
if pkg [ :target ] . start_with? ( "wasm32-unknown-wasi" )
82
83
Dir . chdir ( cwd || base_dir ) do
84
+ # Uninstall js gem to re-install just-built js gem
85
+ sh "gem" , "uninstall" , "js" , "-v" , js_gem_version , "--force"
86
+ # Install gems including js gem
83
87
sh "bundle" , "install"
84
88
85
89
sh env ,
86
90
"bundle" , "exec" ,
87
91
*build_command ,
88
- "--no-stdlib" ,
92
+ "--no-stdlib" , "--remake" ,
89
93
"-o" ,
90
94
File . join ( dist_dir , "ruby.wasm" )
91
95
sh env ,
@@ -97,6 +101,9 @@ namespace :npm do
97
101
component_path = File . join ( pkg_dir , "tmp" , "ruby.component.wasm" )
98
102
FileUtils . mkdir_p ( File . dirname ( component_path ) )
99
103
104
+ # Remove js gem from the ./bundle directory to force Bundler to re-install it
105
+ rm_rf FileList [ File . join ( pkg_dir , "bundle" , "**" , "js-#{ js_gem_version } " ) ]
106
+
100
107
sh env . merge ( "RUBY_WASM_EXPERIMENTAL_DYNAMIC_LINKING" => "1" ) ,
101
108
*build_command , "-o" , component_path
102
109
sh "npx" , "jco" , "transpile" ,
0 commit comments