From 7aeb9ccdeb448857d8e32b7799f9bd4ae489e9f1 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 19 Sep 2018 01:11:54 -0500 Subject: [PATCH 1/5] Check C++11 flags in mingw32 compiler --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a0db45c..a37a8fa 100644 --- a/setup.py +++ b/setup.py @@ -78,7 +78,7 @@ class BuildExt(build_ext): def build_extensions(self): ct = self.compiler.compiler_type opts = self.c_opts.get(ct, []) - if ct == 'unix': + if ct in ['unix', 'mingw32']: opts.append('-DVERSION_INFO="%s"' % self.distribution.get_version()) opts.append(cpp_flag(self.compiler)) if has_flag(self.compiler, '-fvisibility=hidden'): From f3e61bf227f45d23d1757233691a2586a664eec3 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 19 Sep 2018 01:13:02 -0500 Subject: [PATCH 2/5] Fix for temp file on windows On windows the temp file cannot be opened a second time while it is still opened by python. Close the file in python before asking the compiler to read it. See https://docs.python.org/3.7/library/tempfile.html#tempfile.NamedTemporaryFile --- setup.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index a37a8fa..b2d84d1 100644 --- a/setup.py +++ b/setup.py @@ -42,12 +42,13 @@ def has_flag(compiler, flagname): the specified compiler. """ import tempfile - with tempfile.NamedTemporaryFile('w', suffix='.cpp') as f: + with tempfile.NamedTemporaryFile('w', suffix='.cpp', delete=False) as f: f.write('int main (int argc, char **argv) { return 0; }') - try: - compiler.compile([f.name], extra_postargs=[flagname]) - except setuptools.distutils.errors.CompileError: - return False + fname = f.name + try: + compiler.compile([fname], extra_postargs=[flagname]) + except setuptools.distutils.errors.CompileError: + return False return True From 6be7a0cd40bb390e58a2b0aee4d24d996beffac7 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 20 Feb 2019 17:22:32 -0600 Subject: [PATCH 3/5] Fix removing directories --- setup.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index b2d84d1..84fa3f8 100644 --- a/setup.py +++ b/setup.py @@ -41,14 +41,15 @@ def has_flag(compiler, flagname): """Return a boolean indicating whether a flag name is supported on the specified compiler. """ - import tempfile - with tempfile.NamedTemporaryFile('w', suffix='.cpp', delete=False) as f: - f.write('int main (int argc, char **argv) { return 0; }') - fname = f.name - try: - compiler.compile([fname], extra_postargs=[flagname]) - except setuptools.distutils.errors.CompileError: - return False + import tempfile, os + with tempfile.TemporaryDirectory() as d: + fname = os.path.join(d, 'main.cpp') + with open(fname, 'w') as f: + f.write('int main (int argc, char **argv) { return 0; }') + try: + compiler.compile([fname], extra_postargs=[flagname]) + except setuptools.distutils.errors.CompileError: + return False return True From 889c3b83e9bc45fb42743119f47abcd1dff27aa0 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 20 Feb 2019 17:37:32 -0600 Subject: [PATCH 4/5] Revert "Fix removing directories" This reverts commit 6be7a0cd40bb390e58a2b0aee4d24d996beffac7. --- setup.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index 84fa3f8..b2d84d1 100644 --- a/setup.py +++ b/setup.py @@ -41,15 +41,14 @@ def has_flag(compiler, flagname): """Return a boolean indicating whether a flag name is supported on the specified compiler. """ - import tempfile, os - with tempfile.TemporaryDirectory() as d: - fname = os.path.join(d, 'main.cpp') - with open(fname, 'w') as f: - f.write('int main (int argc, char **argv) { return 0; }') - try: - compiler.compile([fname], extra_postargs=[flagname]) - except setuptools.distutils.errors.CompileError: - return False + import tempfile + with tempfile.NamedTemporaryFile('w', suffix='.cpp', delete=False) as f: + f.write('int main (int argc, char **argv) { return 0; }') + fname = f.name + try: + compiler.compile([fname], extra_postargs=[flagname]) + except setuptools.distutils.errors.CompileError: + return False return True From 5264c61f8199b0c7c448257bc9d63f96884cf5b7 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Wed, 20 Feb 2019 17:40:48 -0600 Subject: [PATCH 5/5] Remove file --- setup.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b2d84d1..e8add6c 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ def has_flag(compiler, flagname): """Return a boolean indicating whether a flag name is supported on the specified compiler. """ - import tempfile + import tempfile, os with tempfile.NamedTemporaryFile('w', suffix='.cpp', delete=False) as f: f.write('int main (int argc, char **argv) { return 0; }') fname = f.name @@ -49,6 +49,11 @@ def has_flag(compiler, flagname): compiler.compile([fname], extra_postargs=[flagname]) except setuptools.distutils.errors.CompileError: return False + finally: + try: + os.remove(fname) + except OSError: + pass return True