summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtool/rbinstall.rb83
-rw-r--r--version.h4
2 files changed, 72 insertions, 15 deletions
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 3338f1ef1c..b99d9ca364 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -637,6 +637,69 @@ install?(:local, :comm, :man) do
end
module RbInstall
+ module Specs
+ class FileCollector
+ def initialize(gemspec)
+ @gemspec = gemspec
+ @base_dir = File.dirname(gemspec)
+ end
+
+ def collect
+ (ruby_libraries + built_libraries).sort
+ end
+
+ private
+ def type
+ /\/(ext|lib)?\/.*?\z/ =~ @base_dir
+ $1
+ end
+
+ def ruby_libraries
+ case type
+ when "ext"
+ prefix = "#{$extout}/common/"
+ base = "#{prefix}#{relative_base}"
+ when "lib"
+ base = @base_dir
+ prefix = base.sub(/lib\/.*?\z/, "") + "lib/"
+ end
+
+ if base
+ Dir.glob("#{base}{.rb,/**/*.rb}").collect do |ruby_source|
+ remove_prefix(prefix, ruby_source)
+ end
+ else
+ [remove_prefix(File.dirname(@gemspec) + '/', @gemspec.gsub(/gemspec/, 'rb'))]
+ end
+ end
+
+ def built_libraries
+ case type
+ when "ext"
+ prefix = "#{$extout}/#{CONFIG['arch']}/"
+ base = "#{prefix}#{relative_base}"
+ dlext = CONFIG['DLEXT']
+ Dir.glob("#{base}{.#{dlext},/**/*.#{dlext}}").collect do |built_library|
+ remove_prefix(prefix, built_library)
+ end
+ when "lib"
+ []
+ else
+ []
+ end
+ end
+
+ def relative_base
+ /\/#{Regexp.escape(type)}\/(.*?)\z/ =~ @base_dir
+ $1
+ end
+
+ def remove_prefix(prefix, string)
+ string.sub(/\A#{Regexp.escape(prefix)}/, "")
+ end
+ end
+ end
+
class UnpackedInstaller < Gem::Installer
module DirPackage
def extract_files(destination_dir, pattern = "*")
@@ -726,17 +789,7 @@ install?(:ext, :comm, :gem, :'default-gems', :'default-gems-comm') do
install_default_gem('lib', srcdir)
end
install?(:ext, :arch, :gem, :'default-gems', :'default-gems-arch') do
- install_default_gem('ext', srcdir) do |path|
- # assume that gemspec and extconf.rb are placed in the same directory
- success = false
- begin
- IO.foreach(File.dirname(path[(srcdir.size+1)..-1]) + "/Makefile") do |l|
- break success = true if /^TARGET\s*=/ =~ l
- end
- rescue Errno::ENOENT
- end
- success
- end
+ install_default_gem('ext', srcdir)
end
def load_gemspec(file)
@@ -762,8 +815,12 @@ def install_default_gem(dir, srcdir)
makedirs(default_spec_dir)
gems = Dir.glob("#{srcdir}/#{dir}/**/*.gemspec").map {|src|
- next if block_given? and !yield(src)
- load_gemspec(src)
+ spec = load_gemspec(src)
+ file_collector = RbInstall::Specs::FileCollector.new(src)
+ files = file_collector.collect
+ next if files.empty?
+ spec.files = files
+ spec
}
gems.compact.sort_by(&:name).each do |gemspec|
full_name = "#{gemspec.name}-#{gemspec.version}"
diff --git a/version.h b/version.h
index f84f5317e2..450bad4341 100644
--- a/version.h
+++ b/version.h
@@ -1,10 +1,10 @@
#define RUBY_VERSION "2.6.1"
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 25
+#define RUBY_PATCHLEVEL 26
#define RUBY_RELEASE_YEAR 2019
#define RUBY_RELEASE_MONTH 1
-#define RUBY_RELEASE_DAY 18
+#define RUBY_RELEASE_DAY 24
#include "ruby/version.h"