Optional setuptools-based cython build
authorDavid Cournapeau <cournape@gmail.com>
Wed, 11 Nov 2009 06:41:07 +0000 (22:41 -0800)
committerDavid Cournapeau <cournape@gmail.com>
Wed, 11 Nov 2009 06:41:07 +0000 (22:41 -0800)
Cython/Compiler/Main.py
setup.py
setupegg.py [new file with mode: 0644]

index 67a8a1dafdf3780028531338563d459d3bc7250d..1bc90028c078a5a69f789d5a446906628545acf2 100644 (file)
@@ -741,6 +741,8 @@ def compile(source, options = None, c_compile = 0, c_link = 0,
 #  Main command-line entry point
 #
 #------------------------------------------------------------------------
+def setuptools_main():
+    return main(command_line = 1)
 
 def main(command_line = 0):
     args = sys.argv[1:]
index 67571793927650494dec5a34adae1e3b87cb1d40..627affb6832a00d95e29b921f3a5d096b32891ac 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -40,10 +40,24 @@ else:
                                               'Compiler/*.pxd',
                                               'Runtime/*.pyx']}
 
-if os.name == "posix":
-    scripts = ["bin/cython"]
+# This dict is used for passing extra arguments that are setuptools 
+# specific to setup
+setuptools_extra_args = {}
+
+if 'setuptools' in sys.modules:
+    setuptools_extra_args['zip_safe'] = False
+    setuptools_extra_args['entry_points'] = {
+        'console_scripts': [
+            'cython = Cython.Compiler.Main:setuptools_main',
+        ]
+    }
+    scripts = []
 else:
-    scripts = ["cython.py"]
+    if os.name == "posix":
+        scripts = ["bin/cython"]
+    else:
+        scripts = ["cython.py"]
+
 
 try:
     if sys.version_info[0] >= 3:
@@ -93,6 +107,7 @@ except ValueError:
         print("ERROR: %s" % sys.exc_info()[1])
         print("Extension module compilation failed, using plain Python implementation")
 
+setup_args.update(setuptools_extra_args)
 
 from Cython.Compiler.Version import version
 
diff --git a/setupegg.py b/setupegg.py
new file mode 100644 (file)
index 0000000..cf97861
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+"""Wrapper to run setup.py using setuptools."""
+import setuptools
+execfile('setup.py')