mirror of https://github.com/KLayout/klayout.git
disabling multithreaded build_ext for python 2.6
This commit is contained in:
parent
b0c69d8fe4
commit
51e377cc87
19
setup.py
19
setup.py
|
|
@ -59,6 +59,7 @@ import glob
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
import distutils.sysconfig as sysconfig
|
import distutils.sysconfig as sysconfig
|
||||||
|
from distutils.errors import CompileError
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
N_cores = multiprocessing.cpu_count()
|
N_cores = multiprocessing.cpu_count()
|
||||||
|
|
||||||
|
|
@ -73,6 +74,7 @@ def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=N
|
||||||
# parallel code
|
# parallel code
|
||||||
|
|
||||||
N = min(N_cores, len(objects) // 2, 8) # number of parallel compilations
|
N = min(N_cores, len(objects) // 2, 8) # number of parallel compilations
|
||||||
|
N = max(N, 1)
|
||||||
print("Compiling with", N, "threads.")
|
print("Compiling with", N, "threads.")
|
||||||
import multiprocessing.pool
|
import multiprocessing.pool
|
||||||
|
|
||||||
|
|
@ -81,14 +83,25 @@ def parallelCCompile(self, sources, output_dir=None, macros=None, include_dirs=N
|
||||||
src, ext = build[obj]
|
src, ext = build[obj]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return
|
return
|
||||||
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
|
n_tries = 2
|
||||||
|
while n_tries > 0:
|
||||||
|
try:
|
||||||
|
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
|
||||||
|
except CompileError:
|
||||||
|
n_tries -= 1
|
||||||
|
print("Building", obj, "has failed. Trying again.")
|
||||||
|
else:
|
||||||
|
break
|
||||||
# convert to list, imap is evaluated on-demand
|
# convert to list, imap is evaluated on-demand
|
||||||
list(multiprocessing.pool.ThreadPool(N).imap(_single_compile, objects))
|
list(multiprocessing.pool.ThreadPool(N).imap(_single_compile, objects))
|
||||||
return objects
|
return objects
|
||||||
|
|
||||||
|
|
||||||
import distutils.ccompiler
|
# only if python version > 2.6, somehow the travis compiler hangs in 2.6
|
||||||
distutils.ccompiler.CCompiler.compile = parallelCCompile
|
import sys
|
||||||
|
if sys.version_info.major >= 2 and sys.version_info.minor > 6:
|
||||||
|
import distutils.ccompiler
|
||||||
|
distutils.ccompiler.CCompiler.compile = parallelCCompile
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue