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

ruby-changes:72808

From: Alan <ko1@a...>
Date: Thu, 4 Aug 2022 16:29:36 +0900 (JST)
Subject: [ruby-changes:72808] e5a3f23256 (master): Use $(bindir) for path to executable in mkmf

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

From e5a3f232563139fdf15660d54aeaec112ffc2349 Mon Sep 17 00:00:00 2001
From: Alan Wu <XrXr@u...>
Date: Fri, 29 Jul 2022 13:54:27 -0400
Subject: Use $(bindir) for path to executable in mkmf

For the macOS -bundle_loader linker option, we need a path to the
Ruby exectuable. $(RUBY) is not necessarily a path since it could
be a command line invocation. That happens during build with
runruby.rb and can happen post installation if the user passes
the --ruby option to a extconf.rb. Use $(bindir) to locate
the executable instead.

Before installation, $(bindir) doesn't exist, so we need to be
able to override $(BUILTRUBY) in such situations so test-spec
and bundled extensions could build. Use a new mkmf global,
$builtruby, to do this; set it in fake.rb and in extmk.rb.

Our build system is quite complex...
---
 ext/extmk.rb | 2 +-
 lib/mkmf.rb  | 6 +++++-
 tool/fake.rb | 1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/ext/extmk.rb b/ext/extmk.rb
index 70067d28b8..b0d84ef00f 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -417,7 +417,6 @@ elsif CONFIG['EXTSTATIC'] https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L417
 else
   $ruby = '$(topdir)/ruby' + EXEEXT
 end
-$mflags << "BUILTRUBY=#$ruby"
 $ruby = [$ruby]
 $ruby << "-I'$(topdir)'"
 unless CROSS_COMPILING
@@ -428,6 +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
 
 MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
 
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 79bb96ba75..efe3419fd7 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -2076,7 +2076,11 @@ sitearch = #{CONFIG['sitearch']} https://github.com/ruby/ruby/blob/trunk/lib/mkmf.rb#L2076
 ruby_version = #{RbConfig::CONFIG['ruby_version']}
 ruby = #{$ruby.sub(%r[\A#{Regexp.quote(RbConfig::CONFIG['bindir'])}(?=/|\z)]) {'$(bindir)'}}
 RUBY = $(ruby#{sep})
-BUILTRUBY = $(RUBY)
+BUILTRUBY = #{if defined?($builtruby) && $builtruby
+    $builtruby
+  else
+    File.join('$(bindir)', CONFIG["RUBY_INSTALL_NAME"] + CONFIG['EXEEXT'])
+  end}
 ruby_headers = #{headers.join(' ')}
 
 RM = #{config_string('RM', &possible_command) || '$(RUBY) -run -e rm -- -f'}
diff --git a/tool/fake.rb b/tool/fake.rb
index 88709b2f23..91dfb041c4 100644
--- a/tool/fake.rb
+++ b/tool/fake.rb
@@ -45,6 +45,7 @@ prehook = proc do |extmk| https://github.com/ruby/ruby/blob/trunk/tool/fake.rb#L45
   $extout_prefix = '$(extout)$(target_prefix)/'
   config = RbConfig::CONFIG
   mkconfig = RbConfig::MAKEFILE_CONFIG
+  $builtruby ||= File.join(builddir, config['RUBY_INSTALL_NAME'] + config['EXEEXT'])
   RbConfig.fire_update!("builddir", builddir)
   RbConfig.fire_update!("buildlibdir", builddir)
   RbConfig.fire_update!("libdir", builddir)
-- 
cgit v1.2.1


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

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