Skip to content

Commit 09b4087

Browse files
Move rbwasm build invocation to rake task
to control cache key in rake
1 parent 2bdc25a commit 09b4087

File tree

8 files changed

+62
-46
lines changed

8 files changed

+62
-46
lines changed

Rakefile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,26 @@ BUILDS =
2121
NPM_PACKAGES = [
2222
{
2323
name: "ruby-head-wasm-emscripten",
24-
build: "head-wasm32-unknown-emscripten-full",
24+
ruby_version: "head",
25+
gemfile: nil,
2526
target: "wasm32-unknown-emscripten"
2627
},
2728
{
2829
name: "ruby-head-wasm-wasi",
29-
build: "head-wasm32-unknown-wasi-full-js-debug",
30+
ruby_version: "head",
31+
gemfile: "packages/npm-packages/ruby-wasm-wasi/Gemfile",
3032
target: "wasm32-unknown-wasi"
3133
},
3234
{
3335
name: "ruby-3.3-wasm-wasi",
34-
build: "3.3-wasm32-unknown-wasi-full-js-debug",
36+
ruby_version: "3.3",
37+
gemfile: "packages/npm-packages/ruby-wasm-wasi/Gemfile",
3538
target: "wasm32-unknown-wasi"
3639
},
3740
{
3841
name: "ruby-3.2-wasm-wasi",
39-
build: "3.2-wasm32-unknown-wasi-full-js-debug",
42+
ruby_version: "3.2",
43+
gemfile: "packages/npm-packages/ruby-wasm-wasi/Gemfile",
4044
target: "wasm32-unknown-wasi"
4145
}
4246
]

packages/npm-packages/ruby-3.2-wasm-wasi/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@
2828
"build:static:files": "../ruby-wasm-wasi/tools/pack-static-files.sh ./dist",
2929
"build:static:compat": "../ruby-wasm-wasi/tools/pack-compat-shim.mjs --dist=./dist --pkg=ruby-3.2-wasm-wasi",
3030
"build:static": "npm run build:static:files && npm run build:static:compat",
31-
"build:wasm": "../ruby-wasm-wasi/tools/pack-ruby-wasm.sh 3.2 ./dist",
3231
"build:rollup": "rollup -c rollup.config.mjs",
33-
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
32+
"build": "npm run build:deps && npm run build:static && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
3433
},
3534
"repository": "https://github.com/ruby/ruby.wasm",
3635
"homepage": "https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-3.2-wasm-wasi",

packages/npm-packages/ruby-3.3-wasm-wasi/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@
2828
"build:static:files": "../ruby-wasm-wasi/tools/pack-static-files.sh ./dist",
2929
"build:static:compat": "../ruby-wasm-wasi/tools/pack-compat-shim.mjs --dist=./dist --pkg=ruby-3.3-wasm-wasi",
3030
"build:static": "npm run build:static:files && npm run build:static:compat",
31-
"build:wasm": "../ruby-wasm-wasi/tools/pack-ruby-wasm.sh 3.3 ./dist",
3231
"build:rollup": "rollup -c rollup.config.mjs",
33-
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
32+
"build": "npm run build:deps && npm run build:static && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
3433
},
3534
"repository": "https://github.com/ruby/ruby.wasm",
3635
"homepage": "https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-3.3-wasm-wasi",

packages/npm-packages/ruby-head-wasm-emscripten/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
"README.md"
1212
],
1313
"scripts": {
14-
"build:ruby": "rake build:head-wasm32-unknown-emscripten-full",
15-
"build:package": "./build-package.sh ../../../rubies/ruby-head-wasm32-unknown-emscripten-full",
16-
"build": "npm run build:ruby && npm run build:package"
14+
"build": "./build-package.sh ../../../rubies/ruby-head-wasm32-unknown-emscripten-full"
1715
},
1816
"repository": "https://github.com/ruby/ruby.wasm",
1917
"homepage": "https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-head-wasm-emscripten",

packages/npm-packages/ruby-head-wasm-wasi/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@
2828
"build:static:files": "../ruby-wasm-wasi/tools/pack-static-files.sh ./dist",
2929
"build:static:compat": "../ruby-wasm-wasi/tools/pack-compat-shim.mjs --dist=./dist --pkg=ruby-head-wasm-wasi",
3030
"build:static": "npm run build:static:files && npm run build:static:compat",
31-
"build:wasm": "../ruby-wasm-wasi/tools/pack-ruby-wasm.sh head ./dist",
3231
"build:rollup": "rollup -c rollup.config.mjs",
33-
"build": "npm run build:deps && npm run build:static && npm run build:wasm && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
32+
"build": "npm run build:deps && npm run build:static && npm run build:rollup && ../ruby-wasm-wasi/tools/post-build.sh ./dist"
3433
},
3534
"repository": "https://github.com/ruby/ruby.wasm",
3635
"homepage": "https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-head-wasm-wasi",

packages/npm-packages/ruby-wasm-wasi/tools/pack-ruby-wasm.sh

Lines changed: 0 additions & 31 deletions
This file was deleted.

tasks/ci.rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def rake_task_matrix
6868
artifact: "packages/npm-packages/#{pkg[:name]}/#{pkg[:name]}-*.tgz",
6969
artifact_name: "npm-#{pkg[:name]}",
7070
builder: pkg[:target],
71-
rubies_cache_key: ruby_cache_keys[pkg[:build]]
71+
rubies_cache_key: npm_pkg_rubies_cache_key(pkg)
7272
}
7373
# Run tests only if the package has 'test' script
7474
package_json =

tasks/packaging.rake

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,62 @@ tools = {
55
"WASMOPT" => wasi_sdk.wasm_opt
66
}
77

8+
def npm_pkg_build_command(pkg)
9+
[
10+
"bundle", "exec", "rbwasm",
11+
"build",
12+
"--ruby-version", pkg[:ruby_version],
13+
"--target", pkg[:target],
14+
"--build-profile", "full",
15+
]
16+
end
17+
18+
def npm_pkg_rubies_cache_key(pkg)
19+
build_command = npm_pkg_build_command(pkg)
20+
require "open3"
21+
cmd = build_command + ["--print-ruby-cache-key"]
22+
stdout, status = Open3.capture2(*cmd)
23+
unless status.success?
24+
raise "Command failed with status (#{status.exitstatus}): #{cmd.join ""}"
25+
end
26+
require "json"
27+
JSON.parse(stdout)["hexdigest"]
28+
end
29+
830
namespace :npm do
931
NPM_PACKAGES.each do |pkg|
1032
base_dir = Dir.pwd
1133
pkg_dir = "#{Dir.pwd}/packages/npm-packages/#{pkg[:name]}"
1234

1335
namespace pkg[:name] do
36+
build_command = npm_pkg_build_command(pkg)
37+
38+
desc "Build ruby for npm package #{pkg[:name]}"
39+
task "ruby" do
40+
env = {
41+
# Share ./build and ./rubies in the same workspace
42+
"RUBY_WASM_ROOT" => base_dir,
43+
}
44+
if gemfile_path = pkg[:gemfile]
45+
env["BUNDLE_GEMFILE"] = File.join(base_dir, gemfile_path)
46+
else
47+
# Explicitly disable rubygems integration since Bundler finds
48+
# Gemfile in the repo root directory.
49+
build_command.push "--disable-gems"
50+
end
51+
dist_dir = File.join(pkg_dir, "dist")
52+
if pkg[:target] == "wasm32-unknown-wasi"
53+
sh env, *build_command, "--no-stdlib", "-o", File.join(dist_dir, "ruby.wasm")
54+
sh env, *build_command, "-o", File.join(dist_dir, "ruby.debug+stdlib.wasm")
55+
sh wasi_sdk.wasm_opt, "--strip-debug", File.join(dist_dir, "ruby.wasm"), "-o", File.join(dist_dir, "ruby.wasm")
56+
sh wasi_sdk.wasm_opt, "--strip-debug", File.join(dist_dir, "ruby.debug+stdlib.wasm"), "-o", File.join(dist_dir, "ruby+stdlib.wasm")
57+
elsif pkg[:target] == "wasm32-unknown-emscripten"
58+
sh env, *build_command, "-o", "/dev/null"
59+
end
60+
end
61+
1462
desc "Build npm package #{pkg[:name]}"
15-
task "build" do
63+
task "build" => ["ruby"] do
1664
sh tools, "npm run build", chdir: pkg_dir
1765
end
1866

0 commit comments

Comments
 (0)