summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuta Saito <kateinoigakukun@gmail.com>2021-12-18 14:59:39 +0000
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-12-21 15:14:54 +0900
commit3c7e95966d6b9efd201170eb59b0e4a3c4eb6134 (patch)
tree45b9f307be80ff60c6f6a0ebc7a43fccffc1000e
parent9b917315f4a5418344df54865cc10bdc7e1f60b7 (diff)
rbinstall.rb: install ext only when it's configured [Bug #18414]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5297
-rw-r--r--common.mk1
-rwxr-xr-xtool/rbinstall.rb17
2 files changed, 18 insertions, 0 deletions
diff --git a/common.mk b/common.mk
index a2fbac18aa..14ef9cb4ec 100644
--- a/common.mk
+++ b/common.mk
@@ -176,6 +176,7 @@ GOLFPRELUDES = {$(srcdir)}golf_prelude.c
SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
--extout="$(EXTOUT)" \
+ --ext-build-dir="./ext" \
--mflags="$(MFLAGS)" \
--make-flags="$(MAKEFLAGS)"
EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 80d65bba13..0b1195e360 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -61,6 +61,7 @@ def parse_args(argv = ARGV)
opt.on('-n', '--dry-run') {$dryrun = true}
opt.on('--dest-dir=DIR') {|dir| $destdir = dir}
opt.on('--extout=DIR') {|dir| $extout = (dir unless dir.empty?)}
+ opt.on('--ext-build-dir=DIR') {|v| $ext_build_dir = v }
opt.on('--make=COMMAND') {|make| $make = make}
opt.on('--mantype=MAN') {|man| $mantype = man}
opt.on('--make-flags=FLAGS', '--mflags', Shellwords) do |v|
@@ -151,6 +152,9 @@ def parse_args(argv = ARGV)
$dir_mode ||= $prog_mode | 0700
$script_mode ||= $prog_mode
+ if $ext_build_dir.nil?
+ raise OptionParser::MissingArgument.new("--ext-build-dir=DIR")
+ end
end
$install_procs = Hash.new {[]}
@@ -729,6 +733,16 @@ module RbInstall
(ruby_libraries + built_libraries).sort
end
+ def skip_install?(files)
+ case type
+ when "ext"
+ # install ext only when it's configured
+ !File.exist?("#{$ext_build_dir}/#{relative_base}/Makefile")
+ when "lib"
+ files.empty?
+ end
+ end
+
private
def type
/\/(ext|lib)?\/.*?\z/ =~ @base_dir
@@ -966,6 +980,9 @@ def install_default_gem(dir, srcdir, bindir)
spec = load_gemspec(src)
file_collector = RbInstall::Specs::FileCollector.new(src)
files = file_collector.collect
+ if file_collector.skip_install?(files)
+ next
+ end
spec.files = files
spec
}