diff options
Diffstat (limited to 'tool/rbinstall.rb')
-rwxr-xr-x | tool/rbinstall.rb | 17 |
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 } |