Bladeren bron

Include Cython output in sdist

Jonas Borgström 14 jaren geleden
bovenliggende
commit
52c02ceda3
1 gewijzigde bestanden met toevoegingen van 30 en 4 verwijderingen
  1. 30 4
      setup.py

+ 30 - 4
setup.py

@@ -1,10 +1,35 @@
 # -*- encoding: utf-8 *-*
 # -*- encoding: utf-8 *-*
 #!/usr/bin/env python
 #!/usr/bin/env python
+import os
 import sys
 import sys
+from glob import glob
 from setuptools import setup, Extension
 from setuptools import setup, Extension
-from Cython.Distutils import build_ext
+from setuptools.command.sdist import sdist
+hashindex_sources = ['darc/hashindex.pyx', 'darc/_hashindex.c']
 
 
-dependencies = ['pycrypto', 'msgpack-python', 'pbkdf2.py', 'xattr', 'paramiko', 'Pyrex', 'Cython']
+try:
+    from Cython.Distutils import build_ext
+    import Cython.Compiler.Main as cython_compiler
+    class Sdist(sdist):
+        def __init__(self, *args, **kwargs):
+            for src in glob('darc/*.pyx'):
+                print 'src', src
+                cython_compiler.compile(glob('darc/*.pyx'),
+                                        cython_compiler.default_options)
+            sdist.__init__(self, *args, **kwargs)
+
+        def run(self):
+            sdist.run(self)
+            self.filelist.append('darc/hashindex.c', 'darc/hashindex.h')
+
+except ImportError:
+    hashindex_sources[0] = hashindex_sources[0].replace('.pyx', '.c')
+    from setuptools.command.build_ext import build_ext
+    Sdist = sdist
+    if not os.path.exists('darc/hashindex.c'):
+        raise ImportError('The GIT version of darc needs Cython. Install Cython or use a released version')
+
+dependencies = ['pycrypto', 'msgpack-python', 'pbkdf2.py', 'xattr', 'paramiko']
 if sys.version_info < (2, 7):
 if sys.version_info < (2, 7):
     dependencies.append('argparse')
     dependencies.append('argparse')
 
 
@@ -13,11 +38,12 @@ setup(name='darc',
       version='0.1',
       version='0.1',
       author='Jonas Borgström',
       author='Jonas Borgström',
       author_email='jonas@borgstrom.se',
       author_email='jonas@borgstrom.se',
+      url='http://github.com/jborg/darc/',
       packages=['darc'],
       packages=['darc'],
-      cmdclass = {'build_ext': build_ext},
+      cmdclass = {'build_ext': build_ext, 'sdist': Sdist},
       ext_modules=[
       ext_modules=[
       Extension('darc._speedups', ['darc/_speedups.c']),
       Extension('darc._speedups', ['darc/_speedups.c']),
-                   Extension('darc.hashindex', ['darc/hashindex.pyx', 'darc/_hashindex.c'])],
+      Extension('darc.hashindex', hashindex_sources)],
       install_requires=dependencies,
       install_requires=dependencies,
       entry_points = {
       entry_points = {
         'console_scripts': [
         'console_scripts': [