Description: Monkey_patch_distutils_for_parallel_build
 https://stackoverflow.com/a/13176803/8998305
 .
 python-grpcio (1.14.1-1) unstable; urgency=medium
 .
   * Initial release.
Author: Adam Cecile <acecile@le-vert.net>

---
Origin: other, https://stackoverflow.com/a/13176803/8998305
Forwarded: not-needed
Last-Update: 2018-08-28

Index: python-grpcio-1.33.2/setup.py
===================================================================
--- python-grpcio-1.33.2.orig/setup.py
+++ python-grpcio-1.33.2/setup.py
@@ -41,6 +41,27 @@ from setuptools.command import egg_info
 import subprocess
 from subprocess import PIPE
 
+
+# monkey-patch for parallel compilation
+# https://stackoverflow.com/a/13176803/8998305
+def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None):
+    # those lines are copied from distutils.ccompiler.CCompiler directly
+    macros, objects, extra_postargs, pp_opts, build = self._setup_compile(output_dir, macros, include_dirs, sources, depends, extra_postargs)
+    cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
+    # parallel code
+    N = int(os.environ.get('PARALLEL', '2')) # number of parallel compilations
+    import multiprocessing.pool
+    def _single_compile(obj):
+        try: src, ext = build[obj]
+        except KeyError: return
+        self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
+    # convert to list, imap is evaluated on-demand
+    list(multiprocessing.pool.ThreadPool(N).imap(_single_compile,objects))
+    return objects
+import distutils.ccompiler
+distutils.ccompiler.CCompiler.compile=parallelCCompile
+
+
 # Redirect the manifest template from MANIFEST.in to PYTHON-MANIFEST.in.
 egg_info.manifest_maker.template = 'PYTHON-MANIFEST.in'
 
