truffleruby
truffleruby copied to clipboard
mini_racer fails to build libv8-node
Appears to be the same as https://github.com/oracle/truffleruby/issues/1409 which was previously fixed. mini_racer is effectively the same as ruby_racer but much much faster.
This is causing us to be blocked on adding truffleruby support to rswag https://github.com/rswag/rswag/pull/479
Here's the last few lines of the log:
clang++ -o
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/icui18n/deps/icu-small/source/i18n/decimfmt.o
../deps/icu-small/source/i18n/decimfmt.cpp '-DV8_DEPRECATION_WARNINGS'
'-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1'
'-DOPENSSL_THREADS' '-DOPENSSL_NO_ASM' '-DU_I18N_IMPLEMENTATION=1' '-DU_ATTRIBUTE_DEPRECATED='
'-D_CRT_SECURE_NO_DEPRECATE=' '-DU_STATIC_IMPLEMENTATION=1' '-DUCONFIG_NO_SERVICE=1'
'-DU_ENABLE_DYLOAD=0' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0'
-I../deps/icu-small/source/i18n -I../deps/icu-small/source/common -O3 -gdwarf-2
-mmacosx-version-min=10.13 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++14
-stdlib=libc++ -fno-exceptions -fno-strict-aliasing -MMD -MF
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/.deps//Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/icui18n/deps/icu-small/source/i18n/decimfmt.o.d.raw
-c
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/histogram/deps/histogram/src/hdr_histogram.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/clocks.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/fd_table.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/path_resolver.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/poll_oneoff.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/uv_mapping.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/uvwasi.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/wasi_rights.o
is not an object file (not allowed in a library)
error:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file:
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/uvwasi/deps/uvwasi/src/wasi_serdes.o
is not an object file (not allowed in a library)
make: ***
[/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/libhistogram.a]
Error 1
make: *** Waiting for unfinished jobs....
make: ***
[/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/libuvwasi.a]
Error 1
rm 66702363c7ca83a320a0775166a9290b787aab1d.intermediate
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/ext/libv8-node/builder.rb:14:in
`build_libv8!': failed to build libv8 16.10.0 (Libv8::Node::BuilderError)
from
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0/ext/libv8-node/location.rb:30:in
`install!'
from extconf.rb:9:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/gems/libv8-node-16.10.0.0 for
inspection.
Results logged to
/Users/bookofgreg/.rbenv/versions/truffleruby-21.3.0/lib/gems/extensions/x86_64-darwin/2.7.4.21.3.0.1/libv8-node-16.10.0.0/gem_make.out
An error occurred while installing libv8-node (16.10.0.0), and Bundler cannot continue.
Make sure that `gem install libv8-node -v '16.10.0.0' --source 'https://rubygems.org/'` succeeds
before bundling.
In Gemfile:
mini_racer was resolved to 0.6.2, which depends on
libv8-node
We have special handling for the libv8 gem which as an exception reuses the binary gem, but not for the libv8-node gem.
This lets it install but mini_racer does not work at runtime yet on TruffleRuby.
In the end I believe what you need here is mini_racer support, right? #1827 tracks that, so I'd like to close this one and please follow that issue.
Actually we should probably also allow libv8-node as a binary gem, because there is no point to compile it and it has a high chance to fail (same on CRuby if it was compiled from source), and it's a dependency of mini_racer: https://github.com/rubyjs/mini_racer/blob/746bfddfeacf671bea7d7c7dd7897a7edcc452fd/mini_racer.gemspec#L33
FWIW this is the error I see on Linux:
clang++ -o /home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/bytecode_builtins_list_generator -pthread -rdynamic -m64 -m64 -Wl,--start-group /home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/bytecode_builtins_list_generator/deps/v8/src/builtins/generate-bytecodes-builtins-list.o /home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/bytecode_builtins_list_generator/deps/v8/src/interpreter/bytecode-operands.o /home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/bytecode_builtins_list_generator/deps/v8/src/interpreter/bytecodes.o /home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj.target/tools/v8_gypfiles/libv8_libbase.a -ldl -lrt -Wl,--end-group
LD_LIBRARY_PATH=/home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/lib.host:/home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../tools/v8_gypfiles; mkdir -p /home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated; python ../../deps/v8/tools/run.py "/home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/bytecode_builtins_list_generator" "/home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated/bytecodes-builtins-list.h"
/home/eregon/.rubies/truffleruby-dev/lib/gems/gems/libv8-node-16.10.0.0/src/node-v16.10.0/out/Release/bytecode_builtins_list_generator: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory
Return code is 127
For some reason RubyGems/Bundler think x86_64-linux-musl is appropriate but that's not and fails later:
Fetching libv8-node 16.10.0.0 (x86_64-linux-musl)
Installing libv8-node 16.10.0.0 (x86_64-linux-musl)
Fetching mini_racer 0.6.2
Installing mini_racer 0.6.2 with native extensions
Thanks for linking it to the other issue, I'll follow that one also. I searched for libv8 (hence finding the ruby racer issue) but somehow missed the one about mini_racer :facepalm:
It all works fine now: https://github.com/oracle/truffleruby/issues/1827#issuecomment-1216789791
musl being used is a RubyGems/Bundler bug: https://github.com/rubygems/rubygems/issues/5508, but it shouldn't matter as we don't use libv8/libv8-node anyway for the MiniRacer bakend.