From 91d9c601ad8f7483865d48e0fd6f5b1aed3baafd Mon Sep 17 00:00:00 2001 From: Alex Polcyn <apolcyn@google.com> Date: Tue, 10 Apr 2018 11:42:04 -0700 Subject: [PATCH 1/2] Fix new ruby OS X dep on libgmp.10.dylib --- tools/distrib/build_ruby_environment_macos.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/distrib/build_ruby_environment_macos.sh b/tools/distrib/build_ruby_environment_macos.sh index 4a388a0e5c3..9e3e3b46f80 100644 --- a/tools/distrib/build_ruby_environment_macos.sh +++ b/tools/distrib/build_ruby_environment_macos.sh @@ -23,9 +23,9 @@ curl https://raw.githubusercontent.com/rake-compiler/rake-compiler/v1.0.3/tasks/ # See https://github.com/grpc/grpc/issues/12161 for verconf.h patch details patch "$CROSS_RUBY" << EOF ---- cross-ruby.rake 2017-09-27 16:46:00.311020325 +0200 -+++ patched 2017-09-27 16:49:46.127016895 +0200 -@@ -133,7 +133,8 @@ +--- cross-ruby.rake 2018-04-10 11:32:16.000000000 -0700 ++++ patched 2018-04-10 11:40:25.000000000 -0700 +@@ -133,8 +133,10 @@ "--host=#{MINGW_HOST}", "--target=#{MINGW_TARGET}", "--build=#{RUBY_BUILD}", @@ -33,9 +33,11 @@ patch "$CROSS_RUBY" << EOF + '--enable-static', + '--disable-shared', '--disable-install-doc', ++ '--without-gmp', '--with-ext=' ] -@@ -151,6 +152,7 @@ + +@@ -151,6 +153,7 @@ # make file "#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/ruby.exe" => ["#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/Makefile"] do |t| chdir File.dirname(t.prerequisites.first) do From b189923376a4a1409a476579c989df6ca451d8ba Mon Sep 17 00:00:00 2001 From: Mehrdad Afshari <mmx@google.com> Date: Wed, 11 Apr 2018 14:03:27 -0700 Subject: [PATCH 2/2] Split binary and source distribtests for Python --- .../distrib/python/run_binary_distrib_test.sh | 18 +++++ test/distrib/python/run_distrib_test.sh | 66 ------------------- .../distrib/python/run_source_distrib_test.sh | 18 +++++ test/distrib/python/test_packages.sh | 63 ++++++++++++++++++ .../artifacts/distribtest_targets.py | 2 +- 5 files changed, 100 insertions(+), 67 deletions(-) create mode 100755 test/distrib/python/run_binary_distrib_test.sh delete mode 100755 test/distrib/python/run_distrib_test.sh create mode 100755 test/distrib/python/run_source_distrib_test.sh create mode 100755 test/distrib/python/test_packages.sh diff --git a/test/distrib/python/run_binary_distrib_test.sh b/test/distrib/python/run_binary_distrib_test.sh new file mode 100755 index 00000000000..061d041637d --- /dev/null +++ b/test/distrib/python/run_binary_distrib_test.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# Copyright 2018 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +"$(dirname "$0")/test_packages.sh" binary diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh deleted file mode 100755 index a855ae3b61e..00000000000 --- a/test/distrib/python/run_distrib_test.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2015 gRPC authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -cd "$(dirname "$0")" - -shopt -s nullglob - -# Pick up the source dist archive whatever its version is -SDIST_ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio-*.tar.gz) -BDIST_ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio-*.whl) -TOOLS_SDIST_ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio_tools-*.tar.gz) -TOOLS_BDIST_ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio_tools-*.whl) - -function make_virtualenv() { - virtualenv "$1" - "$1/bin/python" -m pip install --upgrade six pip - "$1/bin/python" -m pip install cython -} - -function at_least_one_installs() { - for file in "$@"; do - if python -m pip install "$file"; then - return 0 - fi - done - return -1 -} - -make_virtualenv bdist_test -make_virtualenv sdist_test - -# -# Install our distributions in order of dependencies -# - -(source bdist_test/bin/activate && at_least_one_installs "${BDIST_ARCHIVES[@]}") -(source bdist_test/bin/activate && at_least_one_installs "${TOOLS_BDIST_ARCHIVES[@]}") - -(source sdist_test/bin/activate && at_least_one_installs "${SDIST_ARCHIVES[@]}") -(source sdist_test/bin/activate && at_least_one_installs "${TOOLS_SDIST_ARCHIVES[@]}") - -# -# Test our distributions -# - -# TODO(jtattermusch): add a .proto file to the distribtest, generate python -# code from it and then use the generated code from distribtest.py -(source bdist_test/bin/activate && python -m grpc.tools.protoc --help) -(source sdist_test/bin/activate && python -m grpc.tools.protoc --help) - -(source bdist_test/bin/activate && python distribtest.py) -(source sdist_test/bin/activate && python distribtest.py) diff --git a/test/distrib/python/run_source_distrib_test.sh b/test/distrib/python/run_source_distrib_test.sh new file mode 100755 index 00000000000..f6676746133 --- /dev/null +++ b/test/distrib/python/run_source_distrib_test.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# Copyright 2018 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +"$(dirname "$0")/test_packages.sh" source diff --git a/test/distrib/python/test_packages.sh b/test/distrib/python/test_packages.sh new file mode 100755 index 00000000000..e16eddd5779 --- /dev/null +++ b/test/distrib/python/test_packages.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +# Copyright 2018 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +cd "$(dirname "$0")" + +shopt -s nullglob + +if [[ "$1" == "binary" ]] +then + echo "Testing Python binary distribution" + ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio-*.whl) + TOOLS_ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio_tools-*.whl) +else + echo "Testing Python source distribution" + ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio-*.tar.gz) + TOOLS_ARCHIVES=("$EXTERNAL_GIT_ROOT"/input_artifacts/grpcio_tools-*.tar.gz) +fi + +VIRTUAL_ENV=$(mktemp -d) +virtualenv "$VIRTUAL_ENV" +PYTHON=$VIRTUAL_ENV/bin/python +"$PYTHON" -m pip install --upgrade six pip + +function at_least_one_installs() { + for file in "$@"; do + if "$PYTHON" -m pip install "$file"; then + return 0 + fi + done + return 1 +} + + +# +# Install our distributions in order of dependencies +# + +at_least_one_installs "${ARCHIVES[@]}" +at_least_one_installs "${TOOLS_ARCHIVES[@]}" + +# +# Test our distributions +# + +# TODO(jtattermusch): add a .proto file to the distribtest, generate python +# code from it and then use the generated code from distribtest.py +"$PYTHON" -m grpc.tools.protoc --help + +"$PYTHON" distribtest.py diff --git a/tools/run_tests/artifacts/distribtest_targets.py b/tools/run_tests/artifacts/distribtest_targets.py index 1b467edbc5a..9087841c4bd 100644 --- a/tools/run_tests/artifacts/distribtest_targets.py +++ b/tools/run_tests/artifacts/distribtest_targets.py @@ -164,7 +164,7 @@ class PythonDistribTest(object): self.name, 'tools/dockerfile/distribtest/python_%s_%s' % (self.docker_suffix, self.arch), - 'test/distrib/python/run_distrib_test.sh', + 'test/distrib/python/run_binary_distrib_test.sh', copy_rel_path='test/distrib') def __str__(self):