From b06fe5817d2119b372d17961aab76afd8ded0b7c Mon Sep 17 00:00:00 2001 From: Thomas Ferreira de Lima Date: Mon, 17 Dec 2018 17:56:04 -0500 Subject: [PATCH] ThreadPool.imap stopped working in py 3.7.1 --- setup.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index b2c5e2748..545126651 100644 --- a/setup.py +++ b/setup.py @@ -59,13 +59,13 @@ from setuptools.extension import Extension, Library import glob import os import platform -import distutils.sysconfig as sysconfig from distutils.errors import CompileError import distutils.command.build_ext import setuptools.command.build_ext import multiprocessing N_cores = multiprocessing.cpu_count() + # monkey-patch for parallel compilation # from https://stackoverflow.com/questions/11013851/speeding-up-build-process-with-distutils def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None): @@ -88,6 +88,7 @@ def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=N n_tries = 2 while n_tries > 0: try: + print("Building", obj) self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) except CompileError: n_tries -= 1 @@ -95,7 +96,7 @@ def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=N else: break # convert to list, imap is evaluated on-demand - list(multiprocessing.pool.ThreadPool(N).imap(_single_compile, objects)) + list(multiprocessing.pool.ThreadPool(N).map(_single_compile, objects)) return objects @@ -155,10 +156,10 @@ distutils.ccompiler.CCompiler.library_filename = patched_library_filename # for this ... We're patching this back now. def always_link_shared_object( - self, objects, output_libname, output_dir=None, libraries=None, - library_dirs=None, runtime_library_dirs=None, export_symbols=None, - debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, - target_lang=None): + self, objects, output_libname, output_dir=None, libraries=None, + library_dirs=None, runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, build_temp=None, + target_lang=None): self.link( self.SHARED_LIBRARY, objects, output_libname, output_dir, libraries, library_dirs, runtime_library_dirs, @@ -166,6 +167,7 @@ def always_link_shared_object( build_temp, target_lang ) + setuptools.command.build_ext.libtype = "shared" setuptools.command.build_ext.link_shared_object = always_link_shared_object