소스 검색

Merge pull request #1214 from haberman/binarygem

Added support for binary gems.
Joshua Haberman 9 년 전
부모
커밋
bc215089ca
4개의 변경된 파일26개의 추가작업 그리고 8개의 파일을 삭제
  1. 4 2
      ruby/Gemfile.lock
  2. 11 0
      ruby/Rakefile
  3. 6 5
      ruby/google-protobuf.gemspec
  4. 5 1
      ruby/lib/google/protobuf.rb

+ 4 - 2
ruby/Gemfile.lock

@@ -1,7 +1,7 @@
 PATH
   remote: .
   specs:
-    google-protobuf (3.0.0.alpha.4.0)
+    google-protobuf (3.0.0.alpha.5.0)
 
 GEM
   remote: https://rubygems.org/
@@ -10,6 +10,7 @@ GEM
     rake (10.4.2)
     rake-compiler (0.9.5)
       rake
+    rake-compiler-dock (0.5.1)
     rubygems-tasks (0.2.4)
     test-unit (3.0.9)
       power_assert
@@ -21,8 +22,9 @@ PLATFORMS
 DEPENDENCIES
   google-protobuf!
   rake-compiler
+  rake-compiler-dock
   rubygems-tasks
   test-unit
 
 BUNDLED WITH
-   1.10.6
+   1.11.2

+ 11 - 0
ruby/Rakefile

@@ -20,6 +20,17 @@ else
   Rake::ExtensionTask.new("protobuf_c", spec) do |ext|
     ext.ext_dir = "ext/google/protobuf_c"
     ext.lib_dir = "lib/google"
+    ext.cross_compile = true
+    ext.cross_platform = [
+      'x86-mingw32', 'x64-mingw32',
+      'x86_64-linux', 'x86-linux',
+      'universal-darwin'
+    ]
+  end
+
+  task 'gem:windows' do
+    require 'rake_compiler_dock'
+    RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.6"
   end
 end
 

+ 6 - 5
ruby/google-protobuf.gemspec

@@ -8,12 +8,13 @@ Gem::Specification.new do |s|
   s.authors     = ["Protobuf Authors"]
   s.email       = "protobuf@googlegroups.com"
   s.require_paths = ["lib"]
-  s.files       = `git ls-files -z`.split("\x0").find_all{|f| f =~ /lib\/.+\.rb/}
-  unless RUBY_PLATFORM == "java"
-    s.files     += `git ls-files "*.c" "*.h" extconf.rb Makefile`.split
-    s.extensions= ["ext/google/protobuf_c/extconf.rb"]
-  else
+  s.files       = Dir.glob('lib/**/*.rb')
+  if RUBY_PLATFORM == "java"
     s.files     += ["lib/google/protobuf_java.jar"]
+  else
+    s.files     += Dir.glob('ext/**/*')
+    s.extensions= ["ext/google/protobuf_c/extconf.rb"]
+    s.add_development_dependency "rake-compiler-dock"
   end
   s.test_files  = ["tests/basic.rb",
                   "tests/stress.rb",

+ 5 - 1
ruby/lib/google/protobuf.rb

@@ -44,7 +44,11 @@ if RUBY_PLATFORM == "java"
   require 'json'
   require 'google/protobuf_java'
 else
-  require 'google/protobuf_c'
+  begin
+    require "google/#{RUBY_VERSION.sub(/\.\d$/, '')}/protobuf_c"
+  rescue LoadError
+    require 'google/protobuf_c'
+  end
 end
 
 require 'google/protobuf/repeated_field'