Skip to content

Commit 6206a1e

Browse files
committed
Implement MiniRacer for TruffleRuby
1 parent 7419fd1 commit 6206a1e

File tree

9 files changed

+437
-24
lines changed

9 files changed

+437
-24
lines changed

.github/workflows/ci.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,26 @@ on:
33
- push
44

55
jobs:
6+
test-truffleruby:
7+
name: Test TruffleRuby
8+
runs-on: ubuntu-20.04
9+
env:
10+
TRUFFLERUBYOPT: "--jvm --polyglot"
11+
steps:
12+
- name: Checkout
13+
uses: actions/checkout@v2
14+
- name: Setup Ruby
15+
uses: ruby/setup-ruby@v1
16+
with:
17+
ruby-version: truffleruby+graalvm-head
18+
- name: Install GraalVM js component
19+
run: if ! gu list | grep '^js '; then gu install js; fi
20+
- name: Bundle
21+
run: bundle install
22+
- name: Compile
23+
run: bundle exec rake compile
24+
- name: Test
25+
run: bundle exec rake test
626
test-darwin:
727
strategy:
828
fail-fast: false

Rakefile

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
require "bundler/gem_tasks"
22
require "rake/testtask"
3-
require "rake/extensiontask"
43

54
Rake::TestTask.new(:test) do |t|
65
t.libs << "test"
@@ -11,8 +10,21 @@ end
1110
task :default => [:compile, :test]
1211

1312
gem = Gem::Specification.load( File.dirname(__FILE__) + '/mini_racer.gemspec' )
14-
Rake::ExtensionTask.new( 'mini_racer_loader', gem )
15-
Rake::ExtensionTask.new( 'mini_racer_extension', gem )
13+
14+
if RUBY_ENGINE == "truffleruby"
15+
task :compile do
16+
# noop
17+
end
18+
19+
task :clean do
20+
# noop
21+
end
22+
else
23+
require 'rake/extensiontask'
24+
Rake::ExtensionTask.new( 'mini_racer_loader', gem )
25+
Rake::ExtensionTask.new( 'mini_racer_extension', gem )
26+
end
27+
1628

1729

1830
# via http://blog.flavorjon.es/2009/06/easily-valgrind-gdb-your-ruby-c.html

ext/mini_racer_extension/extconf.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
require 'mkmf'
2+
3+
if RUBY_ENGINE == "truffleruby"
4+
File.write("Makefile", dummy_makefile($srcdir).join(""))
5+
return
6+
end
7+
28
require_relative '../../lib/mini_racer/version'
39
gem 'libv8-node', MiniRacer::LIBV8_NODE_VERSION
410
require 'libv8-node'

ext/mini_racer_loader/extconf.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
require 'mkmf'
22

3+
if RUBY_ENGINE == "truffleruby"
4+
File.write("Makefile", dummy_makefile($srcdir).join(""))
5+
return
6+
end
7+
38
extension_name = 'mini_racer_loader'
49
dir_config extension_name
510

lib/mini_racer.rb

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
require "mini_racer/version"
2-
require "mini_racer_loader"
32
require "pathname"
43

5-
ext_filename = "mini_racer_extension.#{RbConfig::CONFIG['DLEXT']}"
6-
ext_path = Gem.loaded_specs['mini_racer'].require_paths
7-
.map { |p| (p = Pathname.new(p)).absolute? ? p : Pathname.new(__dir__).parent + p }
8-
ext_found = ext_path.map { |p| p + ext_filename }.find { |p| p.file? }
9-
10-
raise LoadError, "Could not find #{ext_filename} in #{ext_path.map(&:to_s)}" unless ext_found
11-
MiniRacer::Loader.load(ext_found.to_s)
4+
if RUBY_ENGINE == "truffleruby"
5+
require "mini_racer/truffleruby"
6+
else
7+
require "mini_racer_loader"
8+
ext_filename = "mini_racer_extension.#{RbConfig::CONFIG['DLEXT']}"
9+
ext_path = Gem.loaded_specs['mini_racer'].require_paths
10+
.map { |p| (p = Pathname.new(p)).absolute? ? p : Pathname.new(__dir__).parent + p }
11+
ext_found = ext_path.map { |p| p + ext_filename }.find { |p| p.file? }
12+
13+
raise LoadError, "Could not find #{ext_filename} in #{ext_path.map(&:to_s)}" unless ext_found
14+
MiniRacer::Loader.load(ext_found.to_s)
15+
end
1216

1317
require "thread"
1418
require "json"

0 commit comments

Comments
 (0)