@@ -25,6 +25,8 @@ def npm_pkg_build_command(pkg)
25
25
end
26
26
27
27
def npm_pkg_rubies_cache_key ( pkg )
28
+ vendor_gem_cache ( pkg )
29
+
28
30
build_command = npm_pkg_build_command ( pkg )
29
31
return nil unless build_command
30
32
require "open3"
@@ -39,6 +41,17 @@ def npm_pkg_rubies_cache_key(pkg)
39
41
JSON . parse ( stdout ) [ "hexdigest" ]
40
42
end
41
43
44
+ def vendor_gem_cache ( pkg )
45
+ return unless pkg [ :gemfile ]
46
+ pkg_dir = File . dirname ( pkg [ :gemfile ] )
47
+ pkg_dir = File . expand_path ( pkg_dir )
48
+ vendor_cache_dir = File . join ( pkg_dir , "vendor" , "cache" )
49
+ mkdir_p vendor_cache_dir
50
+ require_relative "../packages/gems/js/lib/js/version"
51
+ sh "gem" , "-C" , "packages/gems/js" , "build" , "-o" ,
52
+ File . join ( vendor_cache_dir , "js-local.gem" )
53
+ end
54
+
42
55
namespace :npm do
43
56
NPM_PACKAGES . each do |pkg |
44
57
base_dir = Dir . pwd
@@ -51,6 +64,8 @@ namespace :npm do
51
64
# Skip if the package does not require building ruby
52
65
next unless build_command
53
66
67
+ vendor_gem_cache ( pkg )
68
+
54
69
env = {
55
70
# Share ./build and ./rubies in the same workspace
56
71
"RUBY_WASM_ROOT" => base_dir
@@ -67,11 +82,6 @@ namespace :npm do
67
82
mkdir_p dist_dir
68
83
if pkg [ :target ] . start_with? ( "wasm32-unknown-wasi" )
69
84
Dir . chdir ( cwd || base_dir ) do
70
- vendor_cache_dir = File . join ( pkg_dir , "vendor" , "cache" )
71
- mkdir_p vendor_cache_dir
72
- require_relative "../packages/gems/js/lib/js/version"
73
- sh "gem" , "-C" , File . join ( base_dir , "packages/gems/js" ) , "build" , "-o" ,
74
- File . join ( pkg_dir , "vendor" , "cache" , "js-local.gem" )
75
85
76
86
sh env ,
77
87
*build_command ,
0 commit comments