-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Libv8::Node::Paths with RubyGems >=3.3.21 on *-linux-gnu platforms #36
base: master
Are you sure you want to change the base?
Conversation
- Add make targets for local building and testing This is especially useful for building and testing on Darwin - Split makefile in two: one direct and one for docker This is necessary because direct targets and dockerized targets overlap on Linux. - Fix a few Dockerfile oversights due to updates in libexec
- arm64-darwin from x86_64-darwin (also added to CI) - x86_64-darwin from arm64-darwin - x86_64-linux from aarch64-linux
Use `xargs` to build the `ar` command line instead of running `ar` manually to reduce startup costs. Build the symbol table after adding each file instead of continually rebuilding it.
* Running libv8 on GraalVM LLVM is unlikely to ever work, instead using Graal.js makes more sense. This is already the case in mini_racer. libv8-node is a necessary dependency of mini_racer on CRuby, so for TruffleRuby the extconf.rb simply creates a dummy Makefile.
Skip compilation on TruffleRuby
This fixes an issue where functions that require ICU data segfault the process due to an unexpected lack of ICU data. The actual ICU data is provided by the icudt71_dat object.
Add cpp test, fix locale issues and fix CI issues
Just ran into the same issue. What's holding back a merge? |
Small bits of time I have available are spent on the catch up plan: rubyjs/mini_racer#277 I'll eventually get back to this. It might also be linked to rubyjs/mini_racer#284 (comment) as the |
This breaks install of
|
RubyGems 3.3.21 changed the value format of `Gem::Platform.local` for Ruby configured with `*-linux-gnu` as the platform name. ```console $ ruby -ve 'p Gem::VERSION; p Gem::Platform.local.to_s' ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux-gnu] "3.3.20" "x86_64-linux" $ ruby -ve 'p Gem::VERSION; p Gem::Platform.local.to_s' ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux-gnu] "3.3.21" "x86_64-linux-gnu" $ ruby -ve 'p Gem::VERSION; p Gem::Platform.local.to_s' ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux-gnu] "3.3.24" "x86_64-linux-gnu" ``` As you can see, it now has the `-gnu` prefix and `Libv8::Node::Paths.object_paths` thus has it when the built binary actually lives in the directory `x86_64-linux`, breaking the build of the gems like mini_racer on those platforms. [`RUBY_TARGET_PLATFORM` is set to `*-linux`](https://github.com/knu/libv8-node/blob/ad9105562185571f7b486f7770986f6a160318b2/libexec/platform#L28-L29), so `Libv8::Node::Paths.platform` needs to align with that.
Done. I'm not following the changes since I submitted this PR, though. |
FYI So instead, PRs should typically target the latest I've been tempted to simply clear out
@SamSaffron as I mentioned here (way down in the comment I'm working on it (well I'm going to work on it during the coming week as soon as time permits)
It's not "brand new Ruby", it's RubyGems on rubies that have Doesn't mean a fix is not warranted but let's be reasonable about the actual urgency. |
I would +1 your suggestions regarding the master branch. That would clarify things quite a bit. |
Just a note, I'm not forgetting about this, I just keep on getting short-handed on time. |
Thanks for keeping me up to date, I do appreciate it greatly. I'm not proficient in this space, node/js/etc, but if there is anything I can do to help, please do let me know. |
Released 22.5.1.0 which does NOT include a fix yet. I have it scheduled next, should be 22.5.1.1. |
Thanks for the update and progress. We have a few more tasks on a current project that should take another 3 weeks. So I understand you are maintaining this on your own time and appreciate all the effort and updates. |
RubyGems 3.3.21 changed the value format of
Gem::Platform.local
for Ruby configured with*-linux-gnu
as the platform name.As you can see, it now has the
-gnu
prefix andLibv8::Node::Paths.object_paths
thus has it when the built binary actually lives in the directoryx86_64-linux
, breaking the build of the gems like mini_racer on those platforms.RUBY_TARGET_PLATFORM
is set to*-linux
, soLibv8::Node::Paths.platform
needs to align with that.