ruby/tool/gem-unpack.rb
nagachika 2d26e45135 merge revision(s) a2c66f52f4:
Make dependency-free gemspec files

	The default gems have not been installed yet in the build directory,
	bundled gems depending on them can not work.  As those dependencies
	should be usable there even without rubygems, make temporary gemspec
	files without the dependencies, and use them in the build directory.
	---
	 ext/extmk.rb       | 11 +++++++++++
	 tool/gem-unpack.rb |  4 ++++
	 2 files changed, 15 insertions(+)
2022-10-15 16:26:46 +09:00

26 lines
768 B
Ruby

require 'fileutils'
require 'rubygems'
require 'rubygems/package'
# This library is used by "make extract-gems" to
# unpack bundled gem files.
def Gem.unpack(file, dir = nil, spec_dir = nil)
pkg = Gem::Package.new(file)
spec = pkg.spec
target = spec.full_name
target = File.join(dir, target) if dir
pkg.extract_files target
if spec.extensions.empty?
spec_dir ||= target
else
spec_dir = target
end
FileUtils.mkdir_p(spec_dir)
File.binwrite(File.join(spec_dir, "#{spec.name}-#{spec.version}.gemspec"), spec.to_ruby)
unless spec.extensions.empty? or spec.dependencies.empty?
spec.dependencies.clear
end
File.binwrite(File.join(spec_dir, ".bundled.#{spec.name}-#{spec.version}.gemspec"), spec.to_ruby)
puts "Unpacked #{file}"
end