diff --git a/mp_compile.py b/mp_compile.py index 5fac2399f1a..9043e24b82b 100644 --- a/mp_compile.py +++ b/mp_compile.py @@ -1,5 +1,7 @@ # A monkey patch of the base distutils.ccompiler to use parallel builds # Tested on 2.7, looks to be identical to 3.3. +# Only applied on Python < 3.5 because otherwise, it conflicts with Python's +# own newly-added support for parallel builds. from __future__ import print_function from multiprocessing import Pool, cpu_count @@ -77,4 +79,6 @@ def install(): "%s processes" % MAX_PROCS) -install() +# We monkeypatch only versions earlier than 3.5 +if sys.version_info < (3, 5): + install() diff --git a/setup.py b/setup.py index 9529787f92b..935f3d1cc72 100755 --- a/setup.py +++ b/setup.py @@ -205,6 +205,12 @@ def finalize_options(self): if self.debug: global DEBUG DEBUG = True + if sys.version_info >= (3, 5) and not self.parallel: + # For Python < 3.5, we monkeypatch distutils to have parallel + # builds. If --parallel (or -j) wasn't specified, we want to + # reproduce the same behavior as before, that is, auto-detect the + # number of jobs. + self.parallel = mp_compile.MAX_PROCS for x in self.feature: if getattr(self, 'disable_%s' % x): setattr(self.feature, x, False)