diff --git a/Rakefile b/Rakefile index 1eac37dc557..0068a3b8e4f 100755 --- a/Rakefile +++ b/Rakefile @@ -23,6 +23,12 @@ end # Add the extension compiler task Rake::ExtensionTask.new('grpc_c', spec) do |ext| + unless RUBY_PLATFORM =~ /darwin/ + # TODO: also set "no_native to true" for mac if possible. As is, + # "no_native" can only be set if the RUBY_PLATFORM doing + # cross-compilation is contained in the "ext.cross_platform" array. + ext.no_native = true + end ext.source_pattern = '**/*.{c,h}' ext.ext_dir = File.join('src', 'ruby', 'ext', 'grpc') ext.lib_dir = File.join('src', 'ruby', 'lib', 'grpc') diff --git a/test/distrib/ruby/run_distrib_test.sh b/test/distrib/ruby/run_distrib_test.sh index 99fb873589c..cb2eb1ff7d5 100755 --- a/test/distrib/ruby/run_distrib_test.sh +++ b/test/distrib/ruby/run_distrib_test.sh @@ -35,3 +35,24 @@ gem generate_index --directory "${GEM_SOURCE}" bundle install bundle exec ./distribtest.rb + +# Attempt to repro https://github.com/google/protobuf/issues/4210. +# TODO: This sanity check only works for linux-based distrib tests and for +# binary gRPC packages. It will need to be ran conditionally if this test script is +# used for other types of distrib tests. +INSTALLATION_DIR="$(gem env | grep '\- INSTALLATION DIRECTORY' | awk '{ print $4 }')" +if [[ "$(find "$INSTALLATION_DIR" -name 'grpc_c.so' | wc -l)" == 0 ]]; then + echo "Sanity check failed. The gRPC package is not installed in $INSTALLATION_DIR." + exit 1 +fi +LIBRUBY_DEPENDENCY_EXISTS="$(find "$INSTALLATION_DIR" -name 'grpc_c.so' -exec ldd {} \; | grep -c 'libruby')" || true +if [[ "$LIBRUBY_DEPENDENCY_EXISTS" != 0 ]]; then + echo "A grpc_c.so file in this binary gRPC package is dynamically linked to libruby." +fi +DEPENDENCY_NOT_FOUND="$(find "$INSTALLATION_DIR" -name 'grpc_c.so' -exec ldd {} \; | grep -c 'not found')" || true +if [[ "$DEPENDENCY_NOT_FOUND" != 0 ]]; then + echo "A grpc_c.so file in this binary gRPC package has an non-portable dependency." +fi +if [ "$LIBRUBY_DEPENDENCY_EXISTS" != 0 ] || [ "$DEPENDENCY_NOT_FOUND" != 0 ]; then + exit 1 +fi diff --git a/tools/dockerfile/distribtest/ruby_fedora20_x64/Dockerfile b/tools/dockerfile/distribtest/ruby_fedora20_x64/Dockerfile index 5ea51214fa4..200c5c28033 100644 --- a/tools/dockerfile/distribtest/ruby_fedora20_x64/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_fedora20_x64/Dockerfile @@ -14,6 +14,6 @@ FROM fedora:20 -RUN yum clean all && yum update -y && yum install -y ruby +RUN yum clean all && yum update -y && yum install -y ruby findutils RUN gem install bundler diff --git a/tools/dockerfile/distribtest/ruby_fedora21_x64/Dockerfile b/tools/dockerfile/distribtest/ruby_fedora21_x64/Dockerfile index b90340119be..e1177fd99af 100644 --- a/tools/dockerfile/distribtest/ruby_fedora21_x64/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_fedora21_x64/Dockerfile @@ -19,6 +19,6 @@ FROM fedora:21 # https://github.com/docker/docker/issues/10180 RUN yum install -y yum-plugin-ovl -RUN yum clean all && yum update -y && yum install -y ruby +RUN yum clean all && yum update -y && yum install -y ruby findutils RUN gem install bundler diff --git a/tools/dockerfile/distribtest/ruby_fedora22_x64/Dockerfile b/tools/dockerfile/distribtest/ruby_fedora22_x64/Dockerfile index 0d57370f863..848c5be789a 100644 --- a/tools/dockerfile/distribtest/ruby_fedora22_x64/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_fedora22_x64/Dockerfile @@ -14,6 +14,6 @@ FROM fedora:22 -RUN yum clean all && yum update -y && yum install -y ruby +RUN yum clean all && yum update -y && yum install -y ruby findutils RUN gem install bundler diff --git a/tools/dockerfile/distribtest/ruby_fedora23_x64/Dockerfile b/tools/dockerfile/distribtest/ruby_fedora23_x64/Dockerfile index 318993b0739..47dd577e217 100644 --- a/tools/dockerfile/distribtest/ruby_fedora23_x64/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_fedora23_x64/Dockerfile @@ -14,6 +14,6 @@ FROM fedora:23 -RUN yum clean all && yum update -y && yum install -y ruby +RUN yum clean all && yum update -y && yum install -y ruby findutils RUN gem install bundler