[前][次][番号順一覧][スレッド一覧]

ruby-changes:72538

From: Nobuyoshi <ko1@a...>
Date: Thu, 14 Jul 2022 09:00:28 +0900 (JST)
Subject: [ruby-changes:72538] a2c66f52f4 (master): Make dependency-free gemspec files

https://git.ruby-lang.org/ruby.git/commit/?id=a2c66f52f4

From a2c66f52f402cb58372e271226f3341065561e53 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Wed, 13 Jul 2022 18:58:32 +0900
Subject: 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(+)

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:: https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L565
   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) https://github.com/ruby/ruby/blob/trunk/tool/gem-unpack.rb#L18
   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
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]