mini_racer: BUG?: Bump mini_racer from 0.4.0 to 0.5.0 getting compile errors
I see them in the GitHub Actions as well. Not sure exactly what caused it, but didn’t see an existing issue so reporting
e.g. https://github.com/rubyjs/mini_racer/runs/4174922268?check_suite_focus=true
building against Ruby 2.7.2, heroku buildpack running on the heroku/heroku:18-build image and node 10.15.3
(
export HEROKU_STACK="18"
export ruby_version="2.7.2"
echo "https://heroku-buildpack-ruby.s3.amazonaws.com/heroku-${HEROKU_STACK}/ruby-${ruby_version}.tgz"
export node_version="10.15.3"
echo "https://s3pository.heroku.com/node/v${node_version}/node-v${node_version}-linux-x64.tar.gz"
)
stacktrace from circleci
seems to be specific to libv8-node-15.14.0.0 -> libv8-node-16.10.0.0 requires I install node 16.13.0? (nope, that didn’t work)
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/root/server/vendor/bundle/ruby/2.7.0/gems/mini_racer-0.5.0/ext/mini_racer_extension
/tmp/buildpack/ruby/ruby-2.7.2/bin/ruby -I
/tmp/buildpack/ruby/ruby-2.7.2/lib/ruby/2.7.0 -r
./siteconf20211111-3208-urf2xb.rb extconf.rb
checking for -lpthread... yes
creating Makefile
current directory:
/root/server/vendor/bundle/ruby/2.7.0/gems/mini_racer-0.5.0/ext/mini_racer_extension
make "DESTDIR=" clean
current directory:
/root/server/vendor/bundle/ruby/2.7.0/gems/mini_racer-0.5.0/ext/mini_racer_extension
make "DESTDIR="
compiling mini_racer_extension.cc
mini_racer_extension.cc: In function 'void* gvl_ruby_callback(void*)':
mini_racer_extension.cc:1255:92: warning: 'VALUE
ruby::backward::cxxanyargs::rb_rescue2(VALUE (*)(...), VALUE, VALUE (*)(...),
VALUE, ...)' is deprecated: Use of ANYARGS in this function is deprecated
[-Wdeprecated-declarations]
RUBY_METHOD_FUNC(rescue_callback), callback_data_value,
rb_eException, (VALUE)0);
^
In file included from
/tmp/buildpack/ruby/ruby-2.7.2/include/ruby-2.7.0/ruby/ruby.h:2863:0,
from
/tmp/buildpack/ruby/ruby-2.7.2/include/ruby-2.7.0/ruby.h:33,
from mini_racer_extension.cc:2:
/tmp/buildpack/ruby/ruby-2.7.2/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:222:1:
note: declared here
rb_rescue2(type *q, VALUE w, type *e, VALUE r, ...)
^~~~~~~~~~
linking shared-object mini_racer_extension.so
g++: error:
/root/server/vendor/bundle/ruby/2.7.0/gems/libv8-node-16.10.0.0-x86_64-linux-musl/vendor/v8/x86_64-linux/libv8/obj/libv8_monolith.a:
No such file or directory
Makefile:260: recipe for target 'mini_racer_extension.so' failed
make: *** [mini_racer_extension.so] Error 1
make failed, exit code 2
Gem files will remain installed in
/root/server/vendor/bundle/ruby/2.7.0/gems/mini_racer-0.5.0 for inspection.
Results logged to
/root/server/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/mini_racer-0.5.0/gem_make.out
An error occurred while installing mini_racer (0.5.0), and Bundler
cannot continue.
Make sure that `gem install mini_racer -v '0.5.0' --source
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 33
- Comments: 17
Commits related to this issue
- Gemfile: Limit version of mini_racer To avoid this: https://github.com/rubyjs/mini_racer/issues/220 — committed to phosei/wink by phosei 3 years ago
- Limit version of mini_racer To avoid this: https://github.com/rubyjs/mini_racer/issues/220 — committed to phosei/wink by phosei 3 years ago
- Downgrade mini_racer to 0.4 https://github.com/rubyjs/mini_racer/issues/220 — committed to quintel/etcentral by antw 3 years ago
- Upgrade Docker bundler & rubygems We have a dependabot/terraform PR problem: all the dependabot-triggered builds fail. A propos of https://github.com/rubyjs/mini_racer/issues/220#issuecomment-102025... — committed to UKGovernmentBEIS/beis-report-official-development-assistance by rgarner 2 years ago
- Bundle update with unpinned mini_racer (0.6.2) It was surprisingly complicated to get an unpinned mini_racer. Mini_racer requires compilation, and this was failing on version 0.5.0 or higher. https:... — committed to UKGovernmentBEIS/beis-report-official-development-assistance by dragon-dxw 2 years ago
- Bundle update with unpinned mini_racer (0.6.2) It was surprisingly complicated to get an unpinned mini_racer. Mini_racer requires compilation, and this was failing on version 0.5.0 or higher. https:... — committed to UKGovernmentBEIS/beis-report-official-development-assistance by dragon-dxw 2 years ago
- Bundle update with unpinned mini_racer (0.6.2) It was surprisingly complicated to get an unpinned mini_racer. Mini_racer requires compilation, and this was failing on version 0.5.0 or higher. https:... — committed to UKGovernmentBEIS/beis-report-official-development-assistance by dragon-dxw 2 years ago
- https://github.com/rubyjs/mini_racer/issues/220#issuecomment-1010724771 — committed to rswag/rswag by jtannas 2 years ago
Is there a fix for this? This is still happening with v0.6.0 as well.
Sorry, I should have read more of the context: https://github.com/rubyjs/libv8-node/issues/5, https://github.com/rubygems/rubygems/issues/3174. The bug lies in rubygems. A fix was merged (https://github.com/rubygems/rubygems/pull/4082), with a second rubygems PR outstanding (https://github.com/rubygems/rubygems/pull/4488).
Despite that second PR not being merged/released yet, simply updating rubygems allows me to successfully install the gem now: 🎉
Edit: Bundler still uses the wrong version - hence the second PR
This isn’t a bug in mini racer or in Heroku. This is a bug in bundler.
Make sure you run:
Then add the results to git before you try to deploy again. Previously bundler would raise an error if you tried deploying to a linux target without the linux platform locked. It looks like there’s been a regression and that error is no longer raised. If that error still existed it would prevent this problem from happening as it wouldn’t even let you try to
bundle installwithout the correct platform being listed.I’m going to try creating a fat gem which includes both linux and linux-musl libs (which I don’t quite like since it doubles the gem size, but even when I get to fix the root rubygems/bundler issue old versions of these would still be affected)
@lloeki thanks so much for all the work you’ve done here. Like I asked on the other repo, is there anything I can do to help fix this? It’s not fair to put all this on you but I’m not sure on what needs to be done or how I can help.
@tsugimoto I saw #218 but since it’s a different error, I wasn’t confident it was the same issue, even if the result is the same. Thanks for cross-linking though
Correct, but also, make sure to remove any platform-mismatched gem that may have been erroneously installed previously, otherwise bundler may be lazy and pick those up instead of hitting rubygems.org again. In some cases bundler was being stubborn and I’ve had to install the gem first with
gem install, then proceed withbundle install.It would indeed, but it should also helps in some corner cases e.g:
a) one created the lockfile on another platform than linux and did not run
bundle lock --add-platformb) one is on either linux (gnu) or linux-musl and the lockfile does not exist yet c) a linux-musl gem on linux (gnu) cannot work, but could be picked up if it is previously installed for whatever reasonAlso got this. But maybe I have something to add: it only happens on Ruby 2.7 and 2.6, not on 3.0.
See: https://github.com/opal/opal/runs/4202357932
You’re
FetchingandInstalling libv8-node 16.10.0.0 (x86_64-linux-musl), so I suppose it’s likely a duplicate of #218