[Zope-Checkins] CVS: Zope3/lib/python/Persistence - setup.py:1.1.2.4

Jeremy Hylton jeremy@zope.com
Wed, 12 Jun 2002 16:23:25 -0400


Update of /cvs-repository/Zope3/lib/python/Persistence
In directory cvs.zope.org:/tmp/cvs-serv2562

Modified Files:
      Tag: Zope-3x-branch
	setup.py 
Log Message:
Add list of explicit dependencies for BTrees objects.

This code only works with the very latest CVS Python.  There's a hack
to make the code work for older versions of Python, like 2.2.


=== Zope3/lib/python/Persistence/setup.py 1.1.2.3 => 1.1.2.4 ===
 from distutils.core import setup, Extension
 
+# A hack to determine if Extension objects support the depends keyword arg.
+if not "depends" in Extension.__init__.func_code.co_varnames:
+    # If it doesn't, create a local replacement that removes depends
+    # from the kwargs before calling the regular constructor.
+    _Extension = Extension
+    class Extension(_Extension):
+        def __init__(self, name, sources, **kwargs):
+            if "depends" in kwargs:
+                del kwargs["depends"]
+            _Extension.__init__(self, name, sources, **kwargs)
+
+base_btrees_depends = [
+    "setup.py",
+    "BTrees/BTreeItemsTemplate.c",
+    "BTrees/BTreeModuleTemplate.c",
+    "BTrees/BTreeTemplate.c",
+    "BTrees/BucketTemplate.c",
+    "BTrees/MergeTemplate.c",
+    "BTrees/SetOpTemplate.c",
+    "BTrees/SetTemplate.c",
+    "BTrees/TreeSetTemplate.c",
+    "BTrees/sorters.c",
+    ]
+
 oob = Extension(name = "BTrees._OOBTree",
                 include_dirs = ["."],
                 sources = ['BTrees/_OOBTree.c'],
+                depends = (base_btrees_depends +
+                           ["BTrees/objectkeymacros.h",
+                            "BTrees/objectvaluemacros.h"])
                 )
 
 oib = Extension(name = "BTrees._OIBTree",
                 include_dirs = ["."],
                 sources = ['BTrees/_OIBTree.c'],
+                depends = (base_btrees_depends +
+                           ["BTrees/objectkeymacros.h",
+                            "BTrees/intvaluemacros.h"])
                 )
 
 iib = Extension(name = "BTrees._IIBTree",
                 include_dirs = ["."],
                 sources = ['BTrees/_IIBTree.c'],
                 define_macros = [('EXCLUDE_INTSET_SUPPORT', None)],
+                depends = (base_btrees_depends +
+                           ["BTrees/intkeymacros.h",
+                            "BTrees/intvaluemacros.h"])
                 )
 
 iob = Extension(name = "BTrees._IOBTree",
                 include_dirs = ["."],
                 sources = ['BTrees/_IOBTree.c'],
                 define_macros = [('EXCLUDE_INTSET_SUPPORT', None)],
+                depends = (base_btrees_depends +
+                           ["BTrees/intkeymacros.h",
+                            "BTrees/objectvaluemacros.h"])
                 )
 
 fsb = Extension(name = "BTrees._fsBTree",
                 include_dirs = ["."],
                 sources = ['BTrees/_fsBTree.c'],
                 define_macros = [('EXCLUDE_INTSET_SUPPORT', None)],
+                depends = base_btrees_depends
                 )
 
 setup(