[前][次][番号順一覧][スレッド一覧]

ruby-changes:72809

From: Yuta <ko1@a...>
Date: Thu, 4 Aug 2022 16:29:36 +0900 (JST)
Subject: [ruby-changes:72809] 6d8b9a9d61 (master): Resolve abi symbol references from miniruby to avoid circular deps

https://git.ruby-lang.org/ruby.git/commit/?id=6d8b9a9d61

From 6d8b9a9d619821b722273d93cdc4645ae2e23ede Mon Sep 17 00:00:00 2001
From: Yuta Saito <kateinoigakukun@g...>
Date: Sat, 30 Jul 2022 17:25:12 +0900
Subject: Resolve abi symbol references from miniruby to avoid circular deps

Adding `ruby` to `PREP` causes the following circular dependencies
because `PREP` is used as a prerequisite by some targets required to
build `ruby` target itself.
```
make: Circular .rbconfig.time <- ruby dependency dropped.
make: Circular builtin_binary.inc <- ruby dependency dropped.
make: Circular ext/extinit.c <- ruby dependency dropped.
make: Circular ruby <- ruby dependency dropped.
```

Adding a new Make variable like `EXTPREP` only for exts may be also
reasonable, but it would introduce another complexity into our build
system. `-bundle_loader` doesn't care that link-time and run-time
loader executables are different as long as bound symbols are provided,
so it's ok to resolve from miniruby to simplify our build.
---
 configure.ac    | 5 ++---
 enc/Makefile.in | 2 +-
 ext/extmk.rb    | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index 1808a643f3..c68b7632e6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3015,7 +3015,6 @@ STATIC= https://github.com/ruby/ruby/blob/trunk/configure.ac#L3015
                           # When building ext bundles, a mach-o bundle needs to know its loader
                           # program to bind symbols from the ruby executable
                           EXTDLDFLAGS="-bundle_loader '\$(BUILTRUBY)'"
-                          PREP="$PREP"' $(PROGRAM)'
 			])
 			rb_cv_dlopen=yes],
         [aix*], [	: ${LDSHARED='$(CC)'}
@@ -3340,7 +3339,7 @@ AS_IF([test x"$cross_compiling" = xyes], [ https://github.com/ruby/ruby/blob/trunk/configure.ac#L3339
   AC_SUBST(XRUBY_LIBDIR)
   AC_SUBST(XRUBY_RUBYLIBDIR)
   AC_SUBST(XRUBY_RUBYHDRDIR)
-  PREP="$PREP "'$(arch)-fake.rb'
+  PREP='$(arch)-fake.rb'
   RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
   RUNRUBY='$(RUNRUBY_COMMAND)'
   XRUBY='$(MINIRUBY)'
@@ -3350,7 +3349,7 @@ AS_IF([test x"$cross_compiling" = xyes], [ https://github.com/ruby/ruby/blob/trunk/configure.ac#L3349
 ], [
   MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
   MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
-  PREP="$PREP "'miniruby$(EXEEXT)'
+  PREP='miniruby$(EXEEXT)'
   RUNRUBY_COMMAND='$(MINIRUBY) $(tooldir)/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
   RUNRUBY='$(RUNRUBY_COMMAND) --'
   XRUBY='$(RUNRUBY)'
diff --git a/enc/Makefile.in b/enc/Makefile.in
index 0e1a27a667..dd8ca1b528 100644
--- a/enc/Makefile.in
+++ b/enc/Makefile.in
@@ -36,7 +36,7 @@ RUBY_SO_NAME = @RUBY_SO_NAME@ https://github.com/ruby/ruby/blob/trunk/enc/Makefile.in#L36
 LIBRUBY = @LIBRUBY@
 LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
 LIBRUBYARG_STATIC = $(LIBRUBYARG_SHARED)
-BUILTRUBY = $(topdir)/ruby$(EXEEXT)
+BUILTRUBY = $(topdir)/miniruby$(EXEEXT)
 
 empty =
 AR = @AR@
diff --git a/ext/extmk.rb b/ext/extmk.rb
index b0d84ef00f..1624ec9099 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -427,7 +427,7 @@ end https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L427
 topruby = $ruby
 $ruby = topruby.join(' ')
 $mflags << "ruby=#$ruby"
-$builtruby = '$(topdir)/ruby' + EXEEXT # Must be an executable path
+$builtruby = '$(topdir)/miniruby' + EXEEXT # Must be an executable path
 
 MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
 
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]