Ruby FFI implementation (#13343)
Supersedes #11483.
Closes #13343
COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/13343 from protocolbuffers:simultaneous_ffi bcb4bb7842e672acf1a803fbd9abc6a27d00c020
PiperOrigin-RevId: 550782245
diff --git a/ruby/google-protobuf.gemspec b/ruby/google-protobuf.gemspec
index fbf0631..296cdb2 100644
--- a/ruby/google-protobuf.gemspec
+++ b/ruby/google-protobuf.gemspec
@@ -10,15 +10,31 @@
s.email = "protobuf@googlegroups.com"
s.metadata = { "source_code_uri" => "https://github.com/protocolbuffers/protobuf/tree/#{git_tag}/ruby" }
s.require_paths = ["lib"]
- s.files = Dir.glob('lib/**/*.rb')
+ s.files = Dir.glob('lib/**/*.{rb,rake}')
if RUBY_PLATFORM == "java"
s.platform = "java"
- s.files += ["lib/google/protobuf_java.jar"]
+ s.files += ["lib/google/protobuf_java.jar"] +
+ Dir.glob('ext/**/*').reject do |file|
+ File.basename(file) =~ /^((convert|defs|map|repeated_field)\.[ch]|
+ BUILD\.bazel|extconf\.rb|wrap_memcpy\.c)$/x
+ end
+ s.extensions = ["ext/google/protobuf_c/Rakefile"]
+ s.add_dependency "ffi", "~>1"
+ s.add_dependency "ffi-compiler", "~>1"
else
- s.files += Dir.glob('ext/**/*')
- s.extensions= ["ext/google/protobuf_c/extconf.rb"]
- s.add_development_dependency "rake-compiler-dock", "= 1.2.1" end
+ s.files += Dir.glob('ext/**/*').reject do |file|
+ File.basename(file) =~ /^(BUILD\.bazel)$/
+ end
+ s.extensions = %w[
+ ext/google/protobuf_c/extconf.rb
+ ext/google/protobuf_c/Rakefile
+ ]
+ s.add_development_dependency "rake-compiler-dock", "= 1.2.1"
+ end
s.required_ruby_version = '>= 2.5'
+ s.add_development_dependency "rake", "~> 13"
+ s.add_development_dependency "ffi", "~>1"
+ s.add_development_dependency "ffi-compiler", "~>1"
s.add_development_dependency "rake-compiler", "~> 1.1.0"
s.add_development_dependency "test-unit", '~> 3.0', '>= 3.0.9'
end