# HG changeset patch # User Emmanuel Gil Peyrot # Date 1377864069 -7200 # Node ID 77c0e9a53795b27d49fa9e6a66b9edef0eceef1e # Parent c9433188ffdb60da5c782708a7d40b2039623a85 Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support. diff --git a/anmviewer b/anmviewer --- a/anmviewer +++ b/anmviewer @@ -16,9 +16,6 @@ import argparse import os -import pyximport -pyximport.install() - from pytouhou.ui.window import Window from pytouhou.resource.loader import Loader from pytouhou.ui.anmrenderer import ANMRenderer diff --git a/eosd b/eosd --- a/eosd +++ b/eosd @@ -52,9 +52,6 @@ args = parser.parse_args() import sys import logging -import pyximport -pyximport.install() - from pytouhou.ui.window import Window from pytouhou.resource.loader import Loader from pytouhou.ui.gamerunner import GameRunner diff --git a/pytouhou/lib/opengl.pyxbld b/pytouhou/lib/opengl.pyxbld deleted file mode 100644 --- a/pytouhou/lib/opengl.pyxbld +++ /dev/null @@ -1,30 +0,0 @@ -# -*- encoding: utf-8 -*- -## -## Copyright (C) 2013 Emmanuel Gil Peyrot -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 3 only. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## - -""" Build instructions for the OpenGL module. """ - -from distutils.extension import Extension -from subprocess import check_output - -COMMAND = 'pkg-config' -LIBRARIES = ['gl'] - -def make_ext(modname, pyxfilename): - """ Compile and link with the corrects options. """ - compile_args = check_output([COMMAND, '--cflags'] + LIBRARIES).split() - link_args = check_output([COMMAND, '--libs'] + LIBRARIES).split() - return Extension(name=modname, - sources=[pyxfilename], - extra_compile_args=compile_args, - extra_link_args=link_args) diff --git a/pytouhou/lib/sdl.pyxbld b/pytouhou/lib/sdl.pyxbld deleted file mode 100644 --- a/pytouhou/lib/sdl.pyxbld +++ /dev/null @@ -1,30 +0,0 @@ -# -*- encoding: utf-8 -*- -## -## Copyright (C) 2013 Emmanuel Gil Peyrot -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 3 only. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## - -""" Build instructions for the SDL module. """ - -from distutils.extension import Extension -from subprocess import check_output - -COMMAND = 'pkg-config' -LIBRARIES = ['sdl2', 'SDL2_image', 'SDL2_mixer'] - -def make_ext(modname, pyxfilename): - """ Compile and link with the corrects options. """ - compile_args = check_output([COMMAND, '--cflags'] + LIBRARIES).split() - link_args = check_output([COMMAND, '--libs'] + LIBRARIES).split() - return Extension(name=modname, - sources=[pyxfilename], - extra_compile_args=compile_args, - extra_link_args=link_args) diff --git a/pytouhou/ui/anmrenderer.pyxbld b/pytouhou/ui/anmrenderer.pyxbld deleted file mode 120000 --- a/pytouhou/ui/anmrenderer.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/background.pyxbld b/pytouhou/ui/background.pyxbld deleted file mode 120000 --- a/pytouhou/ui/background.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/gamerenderer.pyxbld b/pytouhou/ui/gamerenderer.pyxbld deleted file mode 120000 --- a/pytouhou/ui/gamerenderer.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/gamerunner.pyxbld b/pytouhou/ui/gamerunner.pyxbld deleted file mode 120000 --- a/pytouhou/ui/gamerunner.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/renderer.pyxbld b/pytouhou/ui/renderer.pyxbld deleted file mode 120000 --- a/pytouhou/ui/renderer.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/shader.pyxbld b/pytouhou/ui/shader.pyxbld deleted file mode 120000 --- a/pytouhou/ui/shader.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/texture.pyxbld b/pytouhou/ui/texture.pyxbld deleted file mode 120000 --- a/pytouhou/ui/texture.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/pytouhou/ui/window.pyxbld b/pytouhou/ui/window.pyxbld deleted file mode 120000 --- a/pytouhou/ui/window.pyxbld +++ /dev/null @@ -1,1 +0,0 @@ -../lib/opengl.pyxbld \ No newline at end of file diff --git a/setup.py b/setup.py --- 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)