diff options
author | murgatroid99 <mlumish@google.com> | 2015-12-18 11:16:16 -0800 |
---|---|---|
committer | murgatroid99 <mlumish@google.com> | 2015-12-18 11:18:34 -0800 |
commit | d7e1a10628b87d9437f15ffb44d74499345ba757 (patch) | |
tree | f4951a040546449bf5649d7bcf9827c13c4f9caf | |
parent | 08ae945aac08bc36f77304ea06f826a4cf52b091 (diff) |
Bundled C core with Ruby library
-rwxr-xr-x | .rspec | 6 | ||||
-rwxr-xr-x | Gemfile (renamed from src/ruby/Gemfile) | 0 | ||||
-rwxr-xr-x | Rakefile (renamed from src/ruby/Rakefile) | 21 | ||||
-rwxr-xr-x | grpc.gemspec (renamed from src/ruby/grpc.gemspec) | 21 | ||||
-rwxr-xr-x | src/ruby/.rspec | 6 | ||||
-rw-r--r-- | src/ruby/ext/grpc/extconf.rb | 68 | ||||
-rwxr-xr-x | tools/run_tests/build_ruby.sh | 2 | ||||
-rwxr-xr-x | tools/run_tests/run_ruby.sh | 2 |
8 files changed, 57 insertions, 69 deletions
diff --git a/.rspec b/.rspec new file mode 100755 index 0000000000..b94d663c9a --- /dev/null +++ b/.rspec @@ -0,0 +1,6 @@ +-Isrc/ruby +-Isrc/ruby/pb +--backtrace +--require spec/spec_helper +--format documentation +--color diff --git a/src/ruby/Gemfile b/Gemfile index 597a7d4f4b..597a7d4f4b 100755 --- a/src/ruby/Gemfile +++ b/Gemfile diff --git a/src/ruby/Rakefile b/Rakefile index cc7832b12d..079df67996 100755 --- a/src/ruby/Rakefile +++ b/Rakefile @@ -5,23 +5,28 @@ require 'rubocop/rake_task' require 'bundler/gem_tasks' # Add rubocop style checking tasks -RuboCop::RakeTask.new +RuboCop::RakeTask.new(:rubocop) do |task| + task.options = ['-c', 'src/ruby/.rubocop.yml'] + task.patterns = ['src/ruby/{lib,spec}/**/*.rb'] +end # Add the extension compiler task Rake::ExtensionTask.new 'grpc' do |ext| - ext.lib_dir = File.join('lib', 'grpc') + ext.source_pattern = '**/*.{c,h}' + ext.ext_dir = File.join('src', 'ruby', 'ext', 'grpc') + ext.lib_dir = File.join('src', 'ruby', 'lib', 'grpc') end # Define the test suites SPEC_SUITES = [ - { id: :wrapper, title: 'wrapper layer', files: %w(spec/*.rb) }, - { id: :idiomatic, title: 'idiomatic layer', dir: %w(spec/generic), + { id: :wrapper, title: 'wrapper layer', files: %w(src/ruby/spec/*.rb) }, + { id: :idiomatic, title: 'idiomatic layer', dir: %w(src/ruby/spec/generic), tags: ['~bidi', '~server'] }, - { id: :bidi, title: 'bidi tests', dir: %w(spec/generic), + { id: :bidi, title: 'bidi tests', dir: %w(src/ruby/spec/generic), tag: 'bidi' }, - { id: :server, title: 'rpc server thread tests', dir: %w(spec/generic), + { id: :server, title: 'rpc server thread tests', dir: %w(src/ruby/spec/generic), tag: 'server' }, - { id: :pb, title: 'protobuf service tests', dir: %w(spec/pb) } + { id: :pb, title: 'protobuf service tests', dir: %w(src/ruby/spec/pb) } ] namespace :suite do SPEC_SUITES.each do |suite| @@ -34,7 +39,7 @@ namespace :suite do if suite[:dir] suite[:dir].each { |f| spec_files += Dir["#{f}/**/*_spec.rb"] } end - helper = 'spec/spec_helper.rb' + helper = 'src/ruby/spec/spec_helper.rb' spec_files << helper unless spec_files.include?(helper) t.pattern = spec_files diff --git a/src/ruby/grpc.gemspec b/grpc.gemspec index 363abe9a46..5526dbeb4f 100755 --- a/src/ruby/grpc.gemspec +++ b/grpc.gemspec @@ -1,6 +1,6 @@ # -*- ruby -*- # encoding: utf-8 -$LOAD_PATH.push File.expand_path('../lib', __FILE__) +$LOAD_PATH.push File.expand_path('../src/ruby/lib', __FILE__) require 'grpc/version' Gem::Specification.new do |s| @@ -16,17 +16,20 @@ Gem::Specification.new do |s| s.required_ruby_version = '>= 2.0.0' s.requirements << 'libgrpc ~> 0.11.0 needs to be installed' - s.files = %w( Rakefile ) - s.files += Dir.glob('bin/**/*') - s.files += Dir.glob('ext/**/*') - s.files += Dir.glob('lib/**/*') - s.files += Dir.glob('pb/**/*') - s.test_files = Dir.glob('spec/**/*') + s.files = %w( Rakefile Makefile ) + s.files += Dir.glob('src/ruby/bin/**/*') + s.files += Dir.glob('src/ruby/ext/**/*') + s.files += Dir.glob('src/ruby/lib/**/*') + s.files += Dir.glob('src/ruby/pb/**/*') + s.files += Dir.glob('include/grpc/**/*') + s.files += Dir.glob('src/core/**/*') + s.test_files = Dir.glob('src/ruby/spec/**/*') + s.bindir = 'src/ruby/bin' %w(math noproto).each do |b| s.executables += ["#{b}_client.rb", "#{b}_server.rb"] end s.executables += %w(grpc_ruby_interop_client grpc_ruby_interop_server) - s.require_paths = %w( bin lib pb ) + s.require_paths = %w( src/ruby/bin src/ruby/lib src/ruby/pb ) s.platform = Gem::Platform::RUBY s.add_dependency 'google-protobuf', '~> 3.0.0alpha.1.1' @@ -41,5 +44,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'rubocop', '~> 0.30.0' s.add_development_dependency 'signet', '~>0.6.0' - s.extensions = %w(ext/grpc/extconf.rb) + s.extensions = %w(src/ruby/ext/grpc/extconf.rb) end diff --git a/src/ruby/.rspec b/src/ruby/.rspec deleted file mode 100755 index efeee2c1d2..0000000000 --- a/src/ruby/.rspec +++ /dev/null @@ -1,6 +0,0 @@ --I. --Ipb ---backtrace ---require spec_helper ---format documentation ---color diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb index db9385e961..018353ce5d 100644 --- a/src/ruby/ext/grpc/extconf.rb +++ b/src/ruby/ext/grpc/extconf.rb @@ -54,53 +54,30 @@ LIB_DIRS = [ LIBDIR ] -def check_grpc_root - grpc_root = ENV['GRPC_ROOT'] - if grpc_root.nil? - r = File.expand_path(File.join(File.dirname(__FILE__), '../../../..')) - grpc_root = r if File.exist?(File.join(r, 'include/grpc/grpc.h')) - end - grpc_root -end +fail 'libdl not found' unless have_library('dl', 'dlopen') +fail 'zlib not found' unless have_library('z', 'inflate') + +grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..')) -grpc_pkg_config = system('pkg-config --exists grpc') +grpc_config = ENV['GRPC_CONFIG'] || 'opt' -if grpc_pkg_config - $CFLAGS << ' ' + `pkg-config --static --cflags grpc`.strip + ' ' - $LDFLAGS << ' ' + `pkg-config --static --libs grpc`.strip + ' ' +if ENV.key?('GRPC_LIB_DIR') + grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR']) else - dir_config('grpc', HEADER_DIRS, LIB_DIRS) - fail 'libdl not found' unless have_library('dl', 'dlopen') - fail 'zlib not found' unless have_library('z', 'inflate') - begin - fail 'Fail' unless have_library('gpr', 'gpr_now') - fail 'Fail' unless have_library('grpc', 'grpc_channel_destroy') - rescue - # Check to see if GRPC_ROOT is defined or available - grpc_root = check_grpc_root - - # Stop if there is still no grpc_root - exit 1 if grpc_root.nil? - - grpc_config = ENV['GRPC_CONFIG'] || 'opt' - if ENV.key?('GRPC_LIB_DIR') - grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR']) - else - grpc_lib_dir = File.join(File.join(grpc_root, 'libs'), grpc_config) - end - unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a')) - print "Building internal gRPC\n" - system("make -C #{grpc_root} static_c CONFIG=#{grpc_config}") - end - $CFLAGS << ' -I' + File.join(grpc_root, 'include') - $LDFLAGS << ' -L' + grpc_lib_dir - if grpc_config == 'gcov' - $CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage' - $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' - end - raise 'gpr not found' unless have_library('gpr', 'gpr_now') - raise 'grpc not found' unless have_library('grpc', 'grpc_channel_destroy') - end + grpc_lib_dir = File.join(File.join(grpc_root, 'libs'), grpc_config) +end + +unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a')) + print "Building internal gRPC\n" + system("make -C #{grpc_root} static_c CONFIG=#{grpc_config}") +end + +$CFLAGS << ' -I' + File.join(grpc_root, 'include') +$LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') +$LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgpr.a') +if grpc_config == 'gcov' + $CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage' + $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' end $CFLAGS << ' -std=c99 ' @@ -109,4 +86,7 @@ $CFLAGS << ' -Wextra ' $CFLAGS << ' -pedantic ' $CFLAGS << ' -Werror ' +$LDFLAGS << ' -lssl ' +$LDFLAGS << ' -lcrypto ' + create_makefile('grpc/grpc') diff --git a/tools/run_tests/build_ruby.sh b/tools/run_tests/build_ruby.sh index 6d23c316c5..8acb40dc62 100755 --- a/tools/run_tests/build_ruby.sh +++ b/tools/run_tests/build_ruby.sh @@ -34,7 +34,7 @@ set -ex export GRPC_CONFIG=${CONFIG:-opt} # change to grpc's ruby directory -cd $(dirname $0)/../../src/ruby +cd $(dirname $0)/../.. rm -rf ./tmp rake compile:grpc diff --git a/tools/run_tests/run_ruby.sh b/tools/run_tests/run_ruby.sh index b82ce52af3..73a84ac361 100755 --- a/tools/run_tests/run_ruby.sh +++ b/tools/run_tests/run_ruby.sh @@ -31,6 +31,6 @@ set -ex # change to grpc repo root -cd $(dirname $0)/../../src/ruby +cd $(dirname $0)/../.. rake |