summaryrefslogtreecommitdiff
path: root/tool/rbinstall.rb
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 /tool/rbinstall.rb
parent9b917315f4a5418344df54865cc10bdc7e1f60b7 (diff)
downloadruby-3c7e95966d6b9efd201170eb59b0e4a3c4eb6134.tar.gz
rbinstall.rb: install ext only when it's configured [Bug #18414]
Diffstat (limited to 'tool/rbinstall.rb')
-rwxr-xr-xtool/rbinstall.rb17
1 files changed, 17 insertions, 0 deletions
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
}