From: "jeremyevans0 (Jeremy Evans) via ruby-core" Date: 2023-12-19T20:02:39+00:00 Subject: [ruby-core:115797] [Ruby master Bug#19683] ruby-3.3.0-preview1 does not build with BSD make without --with-baseruby Issue #19683 has been updated by jeremyevans0 (Jeremy Evans). I tried the following patch and I was able to build master (which requires BASERUBY) and 3.3.0-rc1 (which does not) with it using OpenBSD make: ```diff diff --git a/common.mk b/common.mk index 0125645e37..6c637e0936 100644 --- a/common.mk +++ b/common.mk @@ -395,8 +395,7 @@ configure-ext: $(EXTS_MK) build-ext: $(EXTS_MK) $(Q)$(MAKE) -f $(EXTS_MK) $(mflags) libdir="$(libdir)" LIBRUBY_EXTS=$(LIBRUBY_EXTS) \ - EXTENCS="$(ENCOBJS)" BASERUBY="$(BASERUBY)" MINIRUBY="$(MINIRUBY)" \ - UPDATE_LIBRARIES=no $(EXTSTATIC) + EXTENCS="$(ENCOBJS)" MINIRUBY="$(MINIRUBY)" UPDATE_LIBRARIES=no $(EXTSTATIC) $(Q)$(MAKE) $(EXTS_NOTE) exts-note: $(EXTS_MK) ``` It passed on CI except on Windows when compiling with Visual Studio. It failed on Windows due to `ripper`. `ext/ripper/depend` uses `BASERUBY`: ``` BISON = $(BASERUBY) $(top_srcdir)/tool/lrama/exe/lrama ``` This cannot be easily switched to `RUBY`, because `lrama` requires `strscan`, and `strscan` is currently not built until after `ripper`. Even if you work around that to build `strscan` before `ripper`, `RUBY` here does not allow loading the `strscan` extension library: ``` ../../miniruby -I'../..' -I'../.././lib' -I'../../.ext/x86_64-openbsd7.4' -I'../../.ext/common' ../.././tool/lrama/exe/lrama -t -v -oripper.c - ripper.y < ripper.y /home/jeremy/tmp/ruby/tool/lrama/lib/lrama/lexer.rb:1:in `require': this executable file can't load extension libraries (LoadError) ``` For Ruby 3.3.0, the `tool/missing-baseruby` approach I mentioned earlier appears to work. I submitted a pull request for that approach: https://github.com/ruby/ruby/pull/9299 Longer term alternative possible solutions to avoid need for `BASERUBY` in `build-ext` task for use by `ripper`: * Change `lrama` so it doesn't need `strscan` and can use `RUBY` instead of `BASERUBY` * Create `ripper.y.c` when `parse.y.c` is created, at top level * Maybe `ripper` will be removed or replaced by prism and will not need lrama? ---------------------------------------- Bug #19683: ruby-3.3.0-preview1 does not build with BSD make without --with-baseruby https://bugs.ruby-lang.org/issues/19683#change-105742 * Author: jeremyevans0 (Jeremy Evans) * Status: Open * Priority: Normal * Target version: 3.3 * ruby -v: ruby 3.3.0preview1 (2023-05-12 master a1b01e7701) [x86_64-openbsd7.3] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- ruby-3.3.0-preview1 does not build with BSD make without `--with-baseruby`. However, it builds fine with GNU make and when using BSD make with `--with-baseruby`. Previous Ruby tarball releases have built fine with BSD make without `--with-baseruby`, so this issue has been introduced recently. When building with BSD make without `--with-baseruby`, building fails after generating RI format with: ``` /bin/sh: false: not found *** Error 127 in . (exts.mk:94 'ruby': @make UPDATE_LIBRARIES=no EXTENCS=dmyenc.o BASERUBY=echo\ executable\ host\ ruby\ is\ required.\ \ ...) *** Error 2 in /home/jeremy/local/ruby-3.3.0-preview1 (Makefile:948 'build-ext': @make -f exts.mk libdir="/usr/local/lib" LIBRUBY_EXTS=./...) ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/