Commit 7dda3122 authored by Joshua Haberman's avatar Joshua Haberman

Merge pull request #1473 from nicolasnoble/rake-tweaks

Few tweaks to the rakefile to permit native gems compilation with the proto files generation.
parents 09f1757c 236b9393
PATH PATH
remote: . remote: .
specs: specs:
google-protobuf (3.0.0.alpha.5.0) google-protobuf (3.0.0.alpha.5.0.5)
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
......
...@@ -5,6 +5,40 @@ require "rake/testtask" ...@@ -5,6 +5,40 @@ require "rake/testtask"
spec = Gem::Specification.load("google-protobuf.gemspec") spec = Gem::Specification.load("google-protobuf.gemspec")
well_known_protos = %w[
google/protobuf/any.proto
google/protobuf/api.proto
google/protobuf/duration.proto
google/protobuf/empty.proto
google/protobuf/field_mask.proto
google/protobuf/source_context.proto
google/protobuf/struct.proto
google/protobuf/timestamp.proto
google/protobuf/type.proto
google/protobuf/wrappers.proto
]
# These are omitted for now because we don't support proto2.
proto2_protos = %w[
google/protobuf/descriptor.proto
google/protobuf/compiler/plugin.proto
]
genproto_output = []
# We won't have access to .. from within docker, but the proto files
# will be there, thanks to the :genproto rule dependency for gem:native.
unless ENV['IN_DOCKER'] == 'true'
well_known_protos.each do |proto_file|
input_file = "../src/" + proto_file
output_file = "lib/" + proto_file.sub(/\.proto$/, ".rb")
genproto_output << output_file
file output_file => input_file do |file_task|
sh "../src/protoc -I../src --ruby_out=lib #{input_file}"
end
end
end
if RUBY_PLATFORM == "java" if RUBY_PLATFORM == "java"
if `which mvn` == '' if `which mvn` == ''
raise ArgumentError, "maven needs to be installed" raise ArgumentError, "maven needs to be installed"
...@@ -30,37 +64,15 @@ else ...@@ -30,37 +64,15 @@ else
task 'gem:windows' do task 'gem:windows' do
require 'rake_compiler_dock' require 'rake_compiler_dock'
RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.6" RakeCompilerDock.sh "bundle && IN_DOCKER=true rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.5:2.0.0"
end end
end
well_known_protos = %w[
google/protobuf/any.proto
google/protobuf/api.proto
google/protobuf/duration.proto
google/protobuf/empty.proto
google/protobuf/field_mask.proto
google/protobuf/source_context.proto
google/protobuf/struct.proto
google/protobuf/timestamp.proto
google/protobuf/type.proto
google/protobuf/wrappers.proto
]
# These are omitted for now because we don't support proto2.
proto2_protos = %w[
google/protobuf/descriptor.proto
google/protobuf/compiler/plugin.proto
]
genproto_output = []
well_known_protos.each do |proto_file| if RUBY_PLATFORM =~ /darwin/
input_file = "../src/" + proto_file task 'gem:native' do
output_file = "lib/" + proto_file.sub(/\.proto$/, ".rb") system "rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.5:2.0.0"
genproto_output << output_file end
file output_file => input_file do |file_task| else
sh "../src/protoc -I../src --ruby_out=lib #{input_file}" task 'gem:native' => [:genproto, 'gem:windows']
end end
end end
......
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "google-protobuf" s.name = "google-protobuf"
s.version = "3.0.0.alpha.5.0" s.version = "3.0.0.alpha.5.0.5"
s.licenses = ["BSD"] s.licenses = ["BSD"]
s.summary = "Protocol Buffers" s.summary = "Protocol Buffers"
s.description = "Protocol Buffers are Google's data interchange format." s.description = "Protocol Buffers are Google's data interchange format."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment