ruby: fix yjit for target and host build
authorLuiz Angelo Daros de Luca <luizluca@gmail.com>
Sun, 20 Oct 2024 03:28:42 +0000 (00:28 -0300)
committerHannu Nyman <hannu.nyman@iki.fi>
Sat, 26 Oct 2024 11:51:33 +0000 (14:51 +0300)
commit23f08217ac6c260739c5c811ded4816ac7ea914e
treee49c169db2d0b21a4b9bc224f75ec036a6f5647d
parent857efd12c319ca9557639b9f39bb98eb8aac74a9
ruby: fix yjit for target and host build

Since ruby 3.3.0, yjit was converted into rust code. During build, ruby will try try to use the whatever rustc is available in $PATH, including the one provided by the OS. Variations in that rustc can generate something between a perfect funcional build with yjit enabled and a broken build like this (from github actions):

  2024-10-16T05:06:05.9863422Z linking static-library libruby-static.a
  2024-10-16T05:06:06.0625182Z LLVM ERROR: Invalid encoding
  2024-10-16T05:06:06.1531894Z make[4]: *** [Makefile:318: libruby-static.a] Aborted (core dumped)

Ruby 3.3.5 still only supports yjit for x86_64 and aarch64. Even for those targets, ruby build does not support cross-compiling.

This commit adds rust as a dependency for those supported archs, even when cross-compiling, to let it work when host and target arch matches.

We don't need yjit for host build and we can disable it.

Closes #25151, #25052

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
lang/ruby/Makefile