]> granicus.if.org Git - python/commitdiff
Added the Python core headers Include/*.h and pyconfig.h as dependencies for the...
authorChristian Heimes <christian@cheimes.de>
Fri, 25 Jan 2008 15:52:11 +0000 (15:52 +0000)
committerChristian Heimes <christian@cheimes.de>
Fri, 25 Jan 2008 15:52:11 +0000 (15:52 +0000)
It forces a rebuild of all extensions when a header files has been modified

setup.py

index c13c4cf104c823f5a61854c9c63e019bef03d339..8b850c5e8da6ab892ddc78ba065587292abdef04 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -4,6 +4,7 @@
 __version__ = "$Revision$"
 
 import sys, os, imp, re, optparse
+from glob import glob
 
 from distutils import log
 from distutils import sysconfig
@@ -142,12 +143,20 @@ class PyBuildExt(build_ext):
         self.distribution.scripts = [os.path.join(srcdir, filename)
                                      for filename in self.distribution.scripts]
 
+        # Python header files
+        headers = glob("Include/*.h") + ["pyconfig.h"]
+
         for ext in self.extensions[:]:
             ext.sources = [ find_module_file(filename, moddirlist)
                             for filename in ext.sources ]
             if ext.depends is not None:
                 ext.depends = [find_module_file(filename, alldirlist)
                                for filename in ext.depends]
+            else:
+                ext.depends = []
+            # re-compile extensions if a header file has been changed
+            ext.depends.extend(headers)
+
             ext.include_dirs.append( '.' ) # to get config.h
             for incdir in incdirlist:
                 ext.include_dirs.append( os.path.join(srcdir, incdir) )