Merge pull request #5207 from soltanmm/hack

Paper over custom command limitations
diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py
index 1561bbf..eb5cbb3 100644
--- a/src/python/grpcio/commands.py
+++ b/src/python/grpcio/commands.py
@@ -187,7 +187,17 @@
 class BdistWheelCustomName(bdist_wheel.bdist_wheel, WheelNameMixin):
   """Thin wrapper around the bdist command to build with our custom name."""
 
+  description = ("Create a gRPC custom-named wheel distribution. "
+                 "Cannot be run with any other distribution-related command.")
+
   def run(self):
+    # TODO(atash): if the hack we use to support Linux binaries becomes
+    # 'supported' (i.e.
+    # https://bitbucket.org/pypa/pypi/issues/120/binary-wheels-for-linux-are-not-supported
+    # is not solved and we see users beginning to use this command, ill-advised
+    # as that may be) consider making the following capable of running with
+    # other distribution-related commands. Currently it depends on the (AFAIK
+    # undocumented, private) ordering of the distribution files.
     bdist_wheel.bdist_wheel.run(self)
     output = self.distribution.dist_files[-1][2]
     target = os.path.join(self.dist_dir, '{}.whl'.format(self.wheel_name(True)))
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index f22ddd9..f2c10ab 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -43,7 +43,13 @@
 GRPC_PYTHON_BUILD_WITH_CYTHON=1 \
 ${SETARCH_CMD} python setup.py  \
     bdist_wheel                 \
-    sdist                       \
+    sdist
+
+# The bdist_wheel_grpc_custom command is finicky about command output ordering
+# and thus ought to be run in a shell command separate of others.
+GRPC_PYTHON_USE_CUSTOM_BDIST=0  \
+GRPC_PYTHON_BUILD_WITH_CYTHON=1 \
+${SETARCH_CMD} python setup.py  \
     bdist_wheel_grpc_custom
 
 mkdir -p artifacts