From 9278f6487c3fd91977adf8e0ed4a6851b633d935 Mon Sep 17 00:00:00 2001 From: Craig Warren Date: Wed, 4 Nov 2015 10:16:00 +0000 Subject: [PATCH] Improved 'cleanall' option to remove Cython files. --- setup.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/setup.py b/setup.py index 7ea2bbc7..1fa7082a 100644 --- a/setup.py +++ b/setup.py @@ -64,22 +64,28 @@ for root, dirs, files in os.walk(os.path.join(os.getcwd(), 'user_libs')): if 'cleanall' in sys.argv: USE_CYTHON = False print('Deleting Cython files...') - for file in cythonfiles: - tmp = os.path.splitext(file) - cfile = tmp[0] + '.c' - if sys.platform == 'win32': - libfile = tmp[0] + '.pyd' - else: - libfile = tmp[0] + '.so' - try: - os.remove(cfile) - except OSError: - print('Could not remove: {}'.format(cfile)) - try: - os.remove(libfile) - except OSError: - print('Could not remove: {}'.format(libfile)) - shutil.rmtree('build', ignore_errors=True) + for entry in os.scandir(os.path.join(os.getcwd(), packagename)): + for file in cythonfiles: + tmp = os.path.splitext(file) + if entry.name.startswith(tmp[0]): + # Remove Cython C files + try: + os.remove(tmp[0] + '.c') + except OSError: + print('Could not remove: {}'.format(tmp[0] + '.c')) + # Remove compiled Cython modules + libfilename = entry.name.split('.')[0] + if sys.platform == 'win32': + libfile = libfilename + '.pyd' + else: + libfile = libfilename + '.so' + + try: + os.remove(libfile) + except OSError: + print('Could not remove: {}'.format(libfile)) + # Remove build directory + shutil.rmtree(os.path.join(os.getcwd(), 'build'), ignore_errors=True) # Now do a normal clean sys.argv[1] = 'clean' # this is what distutils understands