rbinstall.rb: install ext only when it's configured [Bug #18414]

This commit is contained in:
Yuta Saito 2021-12-18 14:59:39 +00:00 коммит произвёл Nobuyoshi Nakada
Родитель 9b917315f4
Коммит 3c7e95966d
2 изменённых файлов: 18 добавлений и 0 удалений

Просмотреть файл

@ -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) \

Просмотреть файл

@ -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
}