diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-07-13 18:58:32 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-07-14 09:00:13 +0900 |
commit | a2c66f52f402cb58372e271226f3341065561e53 (patch) | |
tree | 1163eaadd9bf06f52f4db4465b9b04b5a214f615 | |
parent | e1a4e44f14482814a0540ae0a4b31d858ff56f53 (diff) | |
download | ruby-a2c66f52f402cb58372e271226f3341065561e53.tar.gz |
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.
-rwxr-xr-x | ext/extmk.rb | 11 | ||||
-rw-r--r-- | tool/gem-unpack.rb | 4 |
2 files changed, 15 insertions, 0 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb index 306d6e7c99..f805338404 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -565,6 +565,17 @@ clean-so:: end } +if @gemname + gemdir = File.join($top_srcdir, ext_prefix, @gemname) + if File.exist?(spec_file = File.join(gemdir, ".bundled.#{@gemname}.gemspec")) or + File.exist?(spec_file = File.join(gemdir, "#{@gemname}.gemspec")) + dest = "#{File.dirname(ext_prefix)}/specifications" + FileUtils.mkdir_p(dest) + File.copy_stream(spec_file, "#{dest}/#{@gemname}.gemspec") + puts "copied #{@gemname}.gemspec" + end +end + dir = Dir.pwd FileUtils::makedirs(ext_prefix) Dir::chdir(ext_prefix) diff --git a/tool/gem-unpack.rb b/tool/gem-unpack.rb index 16ee89f62d..0ba23ef4d3 100644 --- a/tool/gem-unpack.rb +++ b/tool/gem-unpack.rb @@ -18,5 +18,9 @@ def Gem.unpack(file, dir = nil, spec_dir = nil) 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 |