-
Notifications
You must be signed in to change notification settings - Fork 96
Description
I am trying to install mini_racer v0.19.0 on a MacBook Pro and I am getting the following error:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/mini_racer-0.19.0/ext/mini_racer_extension
/Users/antonio.facciolo/.rbenv/versions/3.4.4/bin/ruby extconf.rb
checking for -lpthread... yes
checking for -lobjc... yes
checking for whether -Wl,--exclude-libs=ALL is accepted as LDFLAGS... no
creating Makefile
current directory: /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/mini_racer-0.19.0/ext/mini_racer_extension
make DESTDIR\= sitearchdir\=./.gem.20250716-48170-u24r96 sitelibdir\=./.gem.20250716-48170-u24r96 clean
current directory: /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/mini_racer-0.19.0/ext/mini_racer_extension
make DESTDIR\= sitearchdir\=./.gem.20250716-48170-u24r96 sitelibdir\=./.gem.20250716-48170-u24r96
compiling mini_racer_extension.c
In file included from mini_racer_extension.c:13:
./serde.c:101:27: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
n = next_power_of_two(n);
~~~~~~~~~~~~~~~~~ ^
./serde.c:111:14: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
b->cap = n;
~ ^
./serde.c:398:29: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
des_object_ref(arg, u);
~~~~~~~~~~~~~~ ^
./serde.c:572:33: warning: implicit conversion loses integer precision: 'unsigned long long' to 'int' [-Wshorten-64-to-32]
des_bigint(arg, *p, u, 1-2*t);
~~~~~~~~~~ ~^~~~
mini_racer_extension.c:610:23: warning: incompatible pointer types passing 'unsigned long[64]' to parameter of type 'const uint64_t *' (aka 'const unsigned long long *')
[-Wincompatible-pointer-types]
ser_bigint(s, limbs, countof(limbs), sign);
^~~~~
./serde.c:243:48: note: passing argument to parameter 'p' here
static void ser_bigint(Ser *s, const uint64_t *p, size_t n, int sign)
^
mini_racer_extension.c:535:32: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int')
[-Wshorten-64-to-32]
ser_array_begin(s, n);
~~~~~~~~~~~~~~~ ^
mini_racer_extension.c:539:30: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int')
[-Wshorten-64-to-32]
ser_array_end(s, n);
~~~~~~~~~~~~~ ^
mini_racer_extension.c:541:31: warning: implicit conversion loses integer precision: 'long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
ser_object_ref(s, FIX2LONG(id));
~~~~~~~~~~~~~~ ^~~~~~~~~~~~
/Users/antonio.facciolo/.rbenv/versions/3.4.4/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:46:22: note: expanded from macro 'FIX2LONG'
#define FIX2LONG RB_FIX2LONG /**< @old{RB_FIX2LONG} */
^
/Users/antonio.facciolo/.rbenv/versions/3.4.4/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:53:22: note: expanded from macro 'RB_FIX2LONG'
#define RB_FIX2LONG rb_fix2long /**< @alias{rb_fix2long} */
^
mini_racer_extension.c:570:35: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int')
[-Wshorten-64-to-32]
ser_object_end(s, n);
~~~~~~~~~~~~~~ ^
mini_racer_extension.c:575:31: warning: implicit conversion loses integer precision: 'long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
ser_object_ref(s, FIX2LONG(id));
~~~~~~~~~~~~~~ ^~~~~~~~~~~~
/Users/antonio.facciolo/.rbenv/versions/3.4.4/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:46:22: note: expanded from macro 'FIX2LONG'
#define FIX2LONG RB_FIX2LONG /**< @old{RB_FIX2LONG} */
^
/Users/antonio.facciolo/.rbenv/versions/3.4.4/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:53:22: note: expanded from macro 'RB_FIX2LONG'
#define RB_FIX2LONG rb_fix2long /**< @alias{rb_fix2long} */
^
mini_racer_extension.c:690:31: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'int' [-Wshorten-64-to-32]
deadline = deadline_ms(c->timeout);
~~~~~~~~~~~ ~~~^~~~~~~
mini_racer_extension.c:771:43: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'int' [-Wshorten-64-to-32]
deadline = deadline_ms(c->idle_gc);
~~~~~~~~~~~ ~~~^~~~~~~
12 warnings generated.
compiling mini_racer_v8.cc
clang: warning: argument unused during compilation: '-rdynamic' [-Wunused-command-line-argument]
In file included from mini_racer_v8.cc:1:
In file included from /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8.h:24:
In file included from /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-array-buffer.h:13:
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-memory-span.h:45:36: error: no member named
'enable_view' in namespace 'std::ranges'
inline constexpr bool std::ranges::enable_view<v8::MemorySpan<T>> = true;
~~~~~~~~~~~~~^
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-memory-span.h:45:47: error: expected ';' at
end of declaration
inline constexpr bool std::ranges::enable_view<v8::MemorySpan<T>> = true;
^
;
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-memory-span.h:45:47: error: expected
unqualified-id
In file included from mini_racer_v8.cc:1:
In file included from /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8.h:24:
In file included from /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-array-buffer.h:15:
In file included from /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-platform.h:14:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string:532:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/string_view:191:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__ranges/enable_view.h:32:23: error: redefinition of 'enable_view'
inline constexpr bool enable_view = derived_from<_Tp, view_base>;
^
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/libv8-node-24.1.0.0-x86_64-darwin/vendor/v8/include/v8-memory-span.h:45:36: note: previous
definition is here
inline constexpr bool std::ranges::enable_view<v8::MemorySpan<T>> = true;
^
4 errors generated.
make: *** [mini_racer_v8.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/mini_racer-0.19.0 for inspection.
Results logged to /Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/extensions/x86_64-darwin-21/3.4.0/mini_racer-0.19.0/gem_make.out
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:126:in 'Gem::Ext::Builder.run'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:52:in 'block in Gem::Ext::Builder.make'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:44:in 'Array#each'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:44:in 'Gem::Ext::Builder.make'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/ext_conf_builder.rb:44:in 'Gem::Ext::ExtConfBuilder.build'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:195:in 'Gem::Ext::Builder#build_extension'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:229:in 'block in Gem::Ext::Builder#build_extensions'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:226:in 'Array#each'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/ext/builder.rb:226:in 'Gem::Ext::Builder#build_extensions'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/3.4.0/rubygems/installer.rb:844:in 'Gem::Installer#build_extensions'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/rubygems_gem_installer.rb:111:in
'Bundler::RubyGemsGemInstaller#build_extensions'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/rubygems_gem_installer.rb:30:in
'Bundler::RubyGemsGemInstaller#install'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/source/rubygems.rb:220:in 'Bundler::Source::Rubygems#install'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/installer/gem_installer.rb:55:in 'Bundler::GemInstaller#install'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/installer/gem_installer.rb:17:in
'Bundler::GemInstaller#install_from_spec'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/installer/parallel_installer.rb:133:in
'Bundler::ParallelInstaller#do_install'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/installer/parallel_installer.rb:124:in 'block in
Bundler::ParallelInstaller#worker_pool'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/worker.rb:62:in 'Bundler::Worker#apply_func'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/worker.rb:57:in 'block in Bundler::Worker#process_queue'
<internal:kernel>:168:in 'Kernel#loop'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/worker.rb:54:in 'Bundler::Worker#process_queue'
/Users/antonio.facciolo/.rbenv/versions/3.4.4/lib/ruby/gems/3.4.0/gems/bundler-2.6.9/lib/bundler/worker.rb:90:in 'block (2 levels) in Bundler::Worker#create_threads'
An error occurred while installing mini_racer (0.19.0), and Bundler cannot continue.
In Gemfile:
mini_racer
MacOSX 12.7.6
Darwin 21.6.0
Ruby 3.4.4 (also tried with 3.4.5)
Bundler 2.6.9 (also tried with 2.7.0)
Rubygems v3.6.7
I have already asked ChatGPT:
This line shows the root issue:
error: no member named 'enable_view' in namespace 'std::ranges'
This means:
The C++ headers shipped with your system (macOS Command Line Tools) already define enable_view in std::ranges. But the libv8-node vendored by mini_racer tries to define it again, which leads to a conflict.
This is due to:
Newer versions of the macOS Clang toolchain already having full support for C++20 ranges. But libv8-node (vendored V8 engine) assuming an older compiler.
The suggested solutions were to downgrade ruby (I don't want to), use precompiled libv8-node and patch libv8-node.
I have tried to use a precompiled libv8-node with the following command
gem install libv8-node -v '24.1.0.0' --platform ruby
but the installation failed as well with the same error (because in fact that's the problem I think). It tried to compile it anyway.
Mini_racer v0.18.1 was working fine.
It's not a big deal for me, I will stay with the previous version for the moment.
If someone could help to find out what's happening or I could solve the problem, many thanks in advance.