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):