kuuko pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=3b95ccd0691dddb1a1cedbf35cbbd45a67056a3b

commit 3b95ccd0691dddb1a1cedbf35cbbd45a67056a3b
Author: Kai Huuhko <kai.huu...@gmail.com>
Date:   Wed Oct 16 21:31:50 2013 +0300

    Facilitate creating a source tarball with 'setup.py sdist' command.
    
    setup.py was modified to work with the generated package.
    
    TODO: Include Sphinx documentation.
---
 MANIFEST.in |   1 +
 setup.py    | 205 +++++++++++++++++++++++++++++++-----------------------------
 2 files changed, 108 insertions(+), 98 deletions(-)

diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..8e521a1
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1 @@
+recursive-include efl *.c *.h
diff --git a/setup.py b/setup.py
index fd2c559..9e0a17b 100755
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,6 @@
 #! /usr/bin/env python
 
+import os
 import sys
 import subprocess
 from distutils.core import setup, Command
@@ -12,22 +13,6 @@ from distutils.version import StrictVersion
 # TODO: Move this inside a conditional so that pre-generated .c files
 #       can be used.
 #
-min_ver = "0.17.0"
-try:
-    from Cython.Distutils import build_ext
-    from Cython.Build import cythonize
-    import Cython.Compiler.Options
-
-    cur_ver = Cython.__version__
-    assert StrictVersion(cur_ver) >= StrictVersion(min_ver)
-    #print("Found Cython: %s" % cur_ver)
-
-    Cython.Compiler.Options.fast_fail = True # stop compilation on first error
-    Cython.Compiler.Options.annotate = False # HTML file annotation generation
-
-except (ImportError, AssertionError):
-    raise SystemExit("Requires Cython >= %s (http://cython.org/)" % min_ver)
-
 
 # Sphinx
 try:
@@ -59,6 +44,28 @@ def pkg_config(name, require, min_vers=None):
 
 
 modules = []
+if os.path.exists(os.path.join(os.getcwd(), "efl", "eo", "efl.eo.pyx")):
+    module_suffix = "pyx"
+    min_ver = "0.17.0"
+    try:
+        from Cython.Distutils import build_ext
+        from Cython.Build import cythonize
+        import Cython.Compiler.Options
+
+        cur_ver = Cython.__version__
+        assert StrictVersion(cur_ver) >= StrictVersion(min_ver)
+        #print("Found Cython: %s" % cur_ver)
+
+        Cython.Compiler.Options.fast_fail = True # stop compilation on first 
error
+        Cython.Compiler.Options.annotate = False # HTML file annotation 
generation
+
+    except (ImportError, AssertionError):
+        raise SystemExit("Requires Cython >= %s (http://cython.org/)" % 
min_ver)
+else:
+    module_suffix = "c"
+    from distutils.command.build_ext import build_ext
+    def cythonize(modules, *args, **kwargs):
+        return modules
 
 class CleanGenerated(Command):
     description = "Clean C and html files generated by Cython"
@@ -75,7 +82,7 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) & 
set(sys.argv):
     # Eo
     eo_cflags, eo_libs = pkg_config('Eo', 'eo', "1.7.99")
     eina_cflags, eina_libs = pkg_config('Eina', 'eina', "1.7.99")
-    eo_ext = Extension("efl.eo", ["efl/eo/efl.eo.pyx"],
+    eo_ext = Extension("eo", ["efl/eo/efl.eo.{0}".format(module_suffix)],
                             define_macros = [('EFL_BETA_API_SUPPORT', None)],
                             include_dirs = ['include/'],
                             extra_compile_args = eo_cflags,
@@ -84,8 +91,8 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) & 
set(sys.argv):
 
     # Utilities
     utils_ext = [
-        Extension("efl.utils.deprecated", ["efl/utils/deprecated.pyx"]),
-        Extension("efl.utils.conversions", ["efl/utils/conversions.pyx"],
+        Extension("utils.deprecated", 
["efl/utils/deprecated.{0}".format(module_suffix)]),
+        Extension("utils.conversions", 
["efl/utils/conversions.{0}".format(module_suffix)],
                             include_dirs = ['include/'],
                             extra_compile_args = eo_cflags,
                             extra_link_args = eo_libs + eina_libs)
@@ -94,7 +101,7 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) 
& set(sys.argv):
 
     # Evas
     evas_cflags, evas_libs = pkg_config('Evas', 'evas', "1.7.99")
-    evas_ext = Extension("efl.evas", ["efl/evas/efl.evas.pyx"],
+    evas_ext = Extension("evas", 
["efl/evas/efl.evas.{0}".format(module_suffix)],
                             include_dirs = ['include/'],
                             extra_compile_args = evas_cflags,
                             extra_link_args = evas_libs + eina_libs)
@@ -103,7 +110,7 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) 
& set(sys.argv):
     # Ecore
     ecore_cflags, ecore_libs = pkg_config('Ecore', 'ecore', "1.7.99")
     efile_cflags, efile_libs = pkg_config('EcoreFile', 'ecore-file', "1.7.99")
-    ecore_ext = Extension("efl.ecore", ["efl/ecore/efl.ecore.pyx"],
+    ecore_ext = Extension("ecore", 
["efl/ecore/efl.ecore.{0}".format(module_suffix)],
                             include_dirs = ['include/'],
                             extra_compile_args = ecore_cflags + efile_cflags,
                             extra_link_args = ecore_libs + efile_libs + 
eina_libs + evas_libs)
@@ -111,14 +118,14 @@ if set(("build", "build_ext", "install", "bdist", 
"sdist")) & set(sys.argv):
 
     # Edje
     edje_cflags, edje_libs = pkg_config('Edje', 'edje', "1.7.99")
-    edje_ext = Extension("efl.edje", ["efl/edje/efl.edje.pyx"],
+    edje_ext = Extension("edje", 
["efl/edje/efl.edje.{0}".format(module_suffix)],
                             include_dirs = ['include/'],
                             extra_compile_args = edje_cflags,
                             extra_link_args = edje_libs + eina_libs + 
evas_libs)
     modules.append(edje_ext)
 
     # Edje_Edit
-    edje_edit_ext = Extension("efl.edje_edit", ["efl/edje/efl.edje_edit.pyx"],
+    edje_edit_ext = Extension("edje_edit", 
["efl/edje/efl.edje_edit.{0}".format(module_suffix)],
                             define_macros = 
[('EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT', None)],
                             include_dirs = ['include/'],
                             extra_compile_args = edje_cflags,
@@ -127,7 +134,7 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) 
& set(sys.argv):
 
     # Emotion
     emotion_cflags, emotion_libs = pkg_config('Emotion', 'emotion', "1.7.99")
-    emotion_ext = Extension("efl.emotion", ["efl/emotion/efl.emotion.pyx"],
+    emotion_ext = Extension("emotion", 
["efl/emotion/efl.emotion.{0}".format(module_suffix)],
                             include_dirs = ['include/'],
                             extra_compile_args = emotion_cflags,
                             extra_link_args = emotion_libs + eina_libs + 
evas_libs)
@@ -136,7 +143,7 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) 
& set(sys.argv):
     # Eldbus
     # eldbus_cflags, eldbus_libs = pkg_config('Eldbus', 'eldbus', "1.7.99")
     # pydbus_cflags, pydbus_libs = pkg_config('dbus-python', 'dbus-python')
-    # eldbus_ext = Extension("efl.eldbus", ["efl/eldbus/eldbus.pyx"],
+    # eldbus_ext = Extension("eldbus", 
["efl/eldbus/eldbus.{0}".format(module_suffix)],
     #                         include_dirs = ['include/'],
     #                         extra_compile_args = eldbus_cflags + 
pydbus_cflags + ecore_cflags,
     #                         extra_link_args = eldbus_libs)
@@ -144,8 +151,8 @@ if set(("build", "build_ext", "install", "bdist", "sdist")) 
& set(sys.argv):
 
     # dbus mainloop integration
     dbus_cflags, dbus_libs = pkg_config('DBus', 'dbus-python', "0.83.0")
-    dbus_ml_ext = Extension("efl.dbus_mainloop",
-                            ["efl/dbus_mainloop/dbus_mainloop.pyx",
+    dbus_ml_ext = Extension("dbus_mainloop",
+                            
["efl/dbus_mainloop/dbus_mainloop.{0}".format(module_suffix),
                              "efl/dbus_mainloop/e_dbus.c"],
                             extra_compile_args = dbus_cflags + ecore_cflags,
                             extra_link_args = dbus_libs + ecore_libs)
@@ -153,76 +160,76 @@ if set(("build", "build_ext", "install", "bdist", 
"sdist")) & set(sys.argv):
 
     # Elementary
     elm_exts = [
-        Extension("efl.elementary.access", ["efl/elementary/access.pyx"]),
-        Extension("efl.elementary.actionslider", 
["efl/elementary/actionslider.pyx"]),
-        Extension("efl.elementary.background", 
["efl/elementary/background.pyx"]),
-        Extension("efl.elementary.box", ["efl/elementary/box.pyx"]),
-        Extension("efl.elementary.bubble", ["efl/elementary/bubble.pyx"]),
-        Extension("efl.elementary.button", ["efl/elementary/button.pyx"]),
-        Extension("efl.elementary.calendar_elm", 
["efl/elementary/calendar_elm.pyx"]),
-        Extension("efl.elementary.check", ["efl/elementary/check.pyx"]),
-        Extension("efl.elementary.clock", ["efl/elementary/clock.pyx"]),
-        Extension("efl.elementary.colorselector", 
["efl/elementary/colorselector.pyx"]),
-        Extension("efl.elementary.configuration", 
["efl/elementary/configuration.pyx"]),
-        Extension("efl.elementary.conformant", 
["efl/elementary/conformant.pyx"]),
-        Extension("efl.elementary.ctxpopup", ["efl/elementary/ctxpopup.pyx"]),
-        Extension("efl.elementary.datetime_elm", 
["efl/elementary/datetime_elm.pyx"]),
-        Extension("efl.elementary.dayselector", 
["efl/elementary/dayselector.pyx"]),
-        Extension("efl.elementary.diskselector", 
["efl/elementary/diskselector.pyx"]),
-        Extension("efl.elementary.entry", ["efl/elementary/entry.pyx"]),
-        Extension("efl.elementary.fileselector_button", 
["efl/elementary/fileselector_button.pyx"]),
-        Extension("efl.elementary.fileselector_entry", 
["efl/elementary/fileselector_entry.pyx"]),
-        Extension("efl.elementary.fileselector", 
["efl/elementary/fileselector.pyx"]),
-        Extension("efl.elementary.flip", ["efl/elementary/flip.pyx"]),
-        Extension("efl.elementary.flipselector", 
["efl/elementary/flipselector.pyx"]),
-        Extension("efl.elementary.frame", ["efl/elementary/frame.pyx"]),
-        Extension("efl.elementary.general", ["efl/elementary/general.pyx"]),
-        Extension("efl.elementary.gengrid", ["efl/elementary/gengrid.pyx"]),
-        Extension("efl.elementary.genlist", ["efl/elementary/genlist.pyx"]),
-        Extension("efl.elementary.gesture_layer", 
["efl/elementary/gesture_layer.pyx"]),
-        Extension("efl.elementary.grid", ["efl/elementary/grid.pyx"]),
-        Extension("efl.elementary.hover", ["efl/elementary/hover.pyx"]),
-        Extension("efl.elementary.hoversel", ["efl/elementary/hoversel.pyx"]),
-        Extension("efl.elementary.icon", ["efl/elementary/icon.pyx"]),
-        Extension("efl.elementary.image", ["efl/elementary/image.pyx"]),
-        Extension("efl.elementary.index", ["efl/elementary/index.pyx"]),
-        Extension("efl.elementary.innerwindow", 
["efl/elementary/innerwindow.pyx"]),
-        Extension("efl.elementary.label", ["efl/elementary/label.pyx"]),
-        Extension("efl.elementary.layout_class", 
["efl/elementary/layout_class.pyx"]),
-        Extension("efl.elementary.layout", ["efl/elementary/layout.pyx"]),
-        Extension("efl.elementary.list", ["efl/elementary/list.pyx"]),
-        Extension("efl.elementary.mapbuf", ["efl/elementary/mapbuf.pyx"]),
-        Extension("efl.elementary.map", ["efl/elementary/map.pyx"]),
-        Extension("efl.elementary.menu", ["efl/elementary/menu.pyx"]),
-        Extension("efl.elementary.multibuttonentry", 
["efl/elementary/multibuttonentry.pyx"]),
-        Extension("efl.elementary.naviframe", 
["efl/elementary/naviframe.pyx"]),
-        Extension("efl.elementary.need", ["efl/elementary/need.pyx"]),
-        Extension("efl.elementary.notify", ["efl/elementary/notify.pyx"]),
-        Extension("efl.elementary.object_item", 
["efl/elementary/object_item.pyx"]),
-        Extension("efl.elementary.object", ["efl/elementary/object.pyx"]),
-        Extension("efl.elementary.panel", ["efl/elementary/panel.pyx"]),
-        Extension("efl.elementary.panes", ["efl/elementary/panes.pyx"]),
-        Extension("efl.elementary.photocam", ["efl/elementary/photocam.pyx"]),
-        Extension("efl.elementary.photo", ["efl/elementary/photo.pyx"]),
-        Extension("efl.elementary.plug", ["efl/elementary/plug.pyx"]),
-        Extension("efl.elementary.popup", ["efl/elementary/popup.pyx"]),
-        Extension("efl.elementary.progressbar", 
["efl/elementary/progressbar.pyx"]),
-        Extension("efl.elementary.radio", ["efl/elementary/radio.pyx"]),
-        Extension("efl.elementary.scroller", ["efl/elementary/scroller.pyx"]),
-        Extension("efl.elementary.segment_control", 
["efl/elementary/segment_control.pyx"]),
-        Extension("efl.elementary.separator", 
["efl/elementary/separator.pyx"]),
-        Extension("efl.elementary.slider", ["efl/elementary/slider.pyx"]),
-        Extension("efl.elementary.slideshow", 
["efl/elementary/slideshow.pyx"]),
-        Extension("efl.elementary.spinner", ["efl/elementary/spinner.pyx"]),
-        #Extension("efl.elementary.store", ["efl/elementary/store.pyx"]),
-        Extension("efl.elementary.table", ["efl/elementary/table.pyx"]),
-        Extension("efl.elementary.theme", ["efl/elementary/theme.pyx"]),
-        Extension("efl.elementary.thumb", ["efl/elementary/thumb.pyx"]),
-        Extension("efl.elementary.toolbar", ["efl/elementary/toolbar.pyx"]),
-        Extension("efl.elementary.transit", ["efl/elementary/transit.pyx"]),
-        Extension("efl.elementary.video", ["efl/elementary/video.pyx"]),
-        Extension("efl.elementary.web", ["efl/elementary/web.pyx"]),
-        Extension("efl.elementary.window", ["efl/elementary/window.pyx"]),
+        Extension("elementary.access", 
["efl/elementary/access.{0}".format(module_suffix)]),
+        Extension("elementary.actionslider", 
["efl/elementary/actionslider.{0}".format(module_suffix)]),
+        Extension("elementary.background", 
["efl/elementary/background.{0}".format(module_suffix)]),
+        Extension("elementary.box", 
["efl/elementary/box.{0}".format(module_suffix)]),
+        Extension("elementary.bubble", 
["efl/elementary/bubble.{0}".format(module_suffix)]),
+        Extension("elementary.button", 
["efl/elementary/button.{0}".format(module_suffix)]),
+        Extension("elementary.calendar_elm", 
["efl/elementary/calendar_elm.{0}".format(module_suffix)]),
+        Extension("elementary.check", 
["efl/elementary/check.{0}".format(module_suffix)]),
+        Extension("elementary.clock", 
["efl/elementary/clock.{0}".format(module_suffix)]),
+        Extension("elementary.colorselector", 
["efl/elementary/colorselector.{0}".format(module_suffix)]),
+        Extension("elementary.configuration", 
["efl/elementary/configuration.{0}".format(module_suffix)]),
+        Extension("elementary.conformant", 
["efl/elementary/conformant.{0}".format(module_suffix)]),
+        Extension("elementary.ctxpopup", 
["efl/elementary/ctxpopup.{0}".format(module_suffix)]),
+        Extension("elementary.datetime_elm", 
["efl/elementary/datetime_elm.{0}".format(module_suffix)]),
+        Extension("elementary.dayselector", 
["efl/elementary/dayselector.{0}".format(module_suffix)]),
+        Extension("elementary.diskselector", 
["efl/elementary/diskselector.{0}".format(module_suffix)]),
+        Extension("elementary.entry", 
["efl/elementary/entry.{0}".format(module_suffix)]),
+        Extension("elementary.fileselector_button", 
["efl/elementary/fileselector_button.{0}".format(module_suffix)]),
+        Extension("elementary.fileselector_entry", 
["efl/elementary/fileselector_entry.{0}".format(module_suffix)]),
+        Extension("elementary.fileselector", 
["efl/elementary/fileselector.{0}".format(module_suffix)]),
+        Extension("elementary.flip", 
["efl/elementary/flip.{0}".format(module_suffix)]),
+        Extension("elementary.flipselector", 
["efl/elementary/flipselector.{0}".format(module_suffix)]),
+        Extension("elementary.frame", 
["efl/elementary/frame.{0}".format(module_suffix)]),
+        Extension("elementary.general", 
["efl/elementary/general.{0}".format(module_suffix)]),
+        Extension("elementary.gengrid", 
["efl/elementary/gengrid.{0}".format(module_suffix)]),
+        Extension("elementary.genlist", 
["efl/elementary/genlist.{0}".format(module_suffix)]),
+        Extension("elementary.gesture_layer", 
["efl/elementary/gesture_layer.{0}".format(module_suffix)]),
+        Extension("elementary.grid", 
["efl/elementary/grid.{0}".format(module_suffix)]),
+        Extension("elementary.hover", 
["efl/elementary/hover.{0}".format(module_suffix)]),
+        Extension("elementary.hoversel", 
["efl/elementary/hoversel.{0}".format(module_suffix)]),
+        Extension("elementary.icon", 
["efl/elementary/icon.{0}".format(module_suffix)]),
+        Extension("elementary.image", 
["efl/elementary/image.{0}".format(module_suffix)]),
+        Extension("elementary.index", 
["efl/elementary/index.{0}".format(module_suffix)]),
+        Extension("elementary.innerwindow", 
["efl/elementary/innerwindow.{0}".format(module_suffix)]),
+        Extension("elementary.label", 
["efl/elementary/label.{0}".format(module_suffix)]),
+        Extension("elementary.layout_class", 
["efl/elementary/layout_class.{0}".format(module_suffix)]),
+        Extension("elementary.layout", 
["efl/elementary/layout.{0}".format(module_suffix)]),
+        Extension("elementary.list", 
["efl/elementary/list.{0}".format(module_suffix)]),
+        Extension("elementary.mapbuf", 
["efl/elementary/mapbuf.{0}".format(module_suffix)]),
+        Extension("elementary.map", 
["efl/elementary/map.{0}".format(module_suffix)]),
+        Extension("elementary.menu", 
["efl/elementary/menu.{0}".format(module_suffix)]),
+        Extension("elementary.multibuttonentry", 
["efl/elementary/multibuttonentry.{0}".format(module_suffix)]),
+        Extension("elementary.naviframe", 
["efl/elementary/naviframe.{0}".format(module_suffix)]),
+        Extension("elementary.need", 
["efl/elementary/need.{0}".format(module_suffix)]),
+        Extension("elementary.notify", 
["efl/elementary/notify.{0}".format(module_suffix)]),
+        Extension("elementary.object_item", 
["efl/elementary/object_item.{0}".format(module_suffix)]),
+        Extension("elementary.object", 
["efl/elementary/object.{0}".format(module_suffix)]),
+        Extension("elementary.panel", 
["efl/elementary/panel.{0}".format(module_suffix)]),
+        Extension("elementary.panes", 
["efl/elementary/panes.{0}".format(module_suffix)]),
+        Extension("elementary.photocam", 
["efl/elementary/photocam.{0}".format(module_suffix)]),
+        Extension("elementary.photo", 
["efl/elementary/photo.{0}".format(module_suffix)]),
+        Extension("elementary.plug", 
["efl/elementary/plug.{0}".format(module_suffix)]),
+        Extension("elementary.popup", 
["efl/elementary/popup.{0}".format(module_suffix)]),
+        Extension("elementary.progressbar", 
["efl/elementary/progressbar.{0}".format(module_suffix)]),
+        Extension("elementary.radio", 
["efl/elementary/radio.{0}".format(module_suffix)]),
+        Extension("elementary.scroller", 
["efl/elementary/scroller.{0}".format(module_suffix)]),
+        Extension("elementary.segment_control", 
["efl/elementary/segment_control.{0}".format(module_suffix)]),
+        Extension("elementary.separator", 
["efl/elementary/separator.{0}".format(module_suffix)]),
+        Extension("elementary.slider", 
["efl/elementary/slider.{0}".format(module_suffix)]),
+        Extension("elementary.slideshow", 
["efl/elementary/slideshow.{0}".format(module_suffix)]),
+        Extension("elementary.spinner", 
["efl/elementary/spinner.{0}".format(module_suffix)]),
+        #Extension("elementary.store", 
["efl/elementary/store.{0}".format(module_suffix)]),
+        Extension("elementary.table", 
["efl/elementary/table.{0}".format(module_suffix)]),
+        Extension("elementary.theme", 
["efl/elementary/theme.{0}".format(module_suffix)]),
+        Extension("elementary.thumb", 
["efl/elementary/thumb.{0}".format(module_suffix)]),
+        Extension("elementary.toolbar", 
["efl/elementary/toolbar.{0}".format(module_suffix)]),
+        Extension("elementary.transit", 
["efl/elementary/transit.{0}".format(module_suffix)]),
+        Extension("elementary.video", 
["efl/elementary/video.{0}".format(module_suffix)]),
+        Extension("elementary.web", 
["efl/elementary/web.{0}".format(module_suffix)]),
+        Extension("elementary.window", 
["efl/elementary/window.{0}".format(module_suffix)]),
     ]
 
     elm_cflags, elm_libs = pkg_config('Elementary', 'elementary', "1.7.99")
@@ -245,13 +252,15 @@ if __name__ == "__main__":
         url = "http://www.enlightenment.org";,
         description = "Python bindings for the EFL stack",
         license = "GNU Lesser General Public License (LGPL)",
-        packages = ["efl", "efl.elementary", "efl.utils"],
         cmdclass = {'build_ext': build_ext, 'build_doc': BuildDoc, 
'clean_generated_files': CleanGenerated},
+        packages = ["efl", "efl.elementary", "efl.utils"],
+        package_data = {"efl": ["efl/dbus_mainloop/e_dbus.h"]},
         # command_options = {
         #     "build_doc": {
         #        "builder": (None, "html"),
         #        "builder": (None, "coverage"),
         #     },
         # },
+        ext_package = "efl",
         ext_modules = cythonize(modules, include_path=["include"]),
     )

-- 


Reply via email to