diff setup.py @ 431:77c0e9a53795

Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 30 Aug 2013 14:01:09 +0200
parents d8630c086926
children d56536ef28e8
line wrap: on
line diff
--- a/setup.py
+++ b/setup.py
@@ -1,16 +1,14 @@
 # -*- encoding: utf-8 -*-
 
-import os, sys
+import os
+import sys
 from distutils.core import setup
 from distutils.extension import Extension
-from distutils.command.build_scripts import build_scripts
-from distutils.dep_util import newer
-from distutils import log
 from subprocess import check_output
 
 # Cython is needed
 try:
-    from Cython.Distutils import build_ext
+    from Cython.Build import cythonize
 except ImportError:
     print('You don’t seem to have Cython installed. Please get a '
           'copy from www.cython.org and install it')
@@ -25,30 +23,11 @@ extension_names = []
 extensions = []
 
 
-
-# The installed script shouldn't call pyximport, strip references to it
-class BuildScripts(build_scripts):
-    def copy_scripts(self):
-        self.mkpath('scripts')
-        for script in (os.path.basename(script) for script in self.scripts):
-            outfile = os.path.join('scripts', script)
-            if not self.force and not newer(script, outfile):
-                log.debug("not copying %s (up-to-date)", script)
-            elif not self.dry_run:
-                with open(script, 'r') as file, open(outfile, 'w') as out:
-                    for line in file:
-                        if not 'pyximport' in line:
-                            out.write(line)
-
-        build_scripts.copy_scripts(self)
-
-
-
 for directory, _, files in os.walk('pytouhou'):
     package = directory.replace(os.path.sep, '.')
     packages.append(package)
     for filename in files:
-        if filename.endswith('.pyx'):
+        if filename.endswith('.pyx') or filename.endswith('.py') and not filename == '__init__.py':
             extension_name = '%s.%s' % (package, os.path.splitext(filename)[0])
             extension_names.append(extension_name)
             if extension_name == 'pytouhou.lib.sdl':
@@ -66,31 +45,25 @@ for directory, _, files in os.walk('pyto
                                         extra_link_args=link_args))
 
 
-
 # TODO: find a less-intrusive, cleaner way to do this...
 try:
     from cx_Freeze import setup, Executable
 except ImportError:
     extra = {}
 else:
-    extra = {
-             'options': {'build_exe': {'includes': extension_names}},
-             'executables': [Executable(script='scripts/eosd', base='Win32GUI')]
-            }
-
+    extra = {'options': {'build_exe': {'includes': extension_names}},
+             'executables': [Executable(script='eosd', base='Win32GUI')]}
 
 
 setup(name='PyTouhou',
-      version="0.1",
+      version='0.1',
       author='Thibaut Girka',
       author_email='thib@sitedethib.com',
-      url='http://hg.sitedethib.com/touhou/',
+      url='http://pytouhou.linkmauve.fr/',
       license='GPLv3',
       packages=packages,
-      ext_modules=extensions,
-      scripts=['scripts/eosd', 'scripts/anmviewer'],
-      cmdclass={'build_ext': build_ext,
-                'build_scripts': BuildScripts},
-      **extra
-     )
-
+      ext_modules=cythonize(extensions, nthreads=4,
+                            compiler_directives={'infer_types': True,
+                                                 'infer_types.verbose': True}),
+      scripts=['eosd', 'anmviewer'],
+      **extra)