New submission from Collin Winter <coll...@gmail.com>: (Tarek, I've been told you're the new distutils maintainer. Feel free to unassign this if that isn't the case.)
The test distutils uses to decide whether it needs to recompile an existing .o file when building extension modules is too simplistic, merely comparing the modification time of the .o and .c files. If you have two extension modules like so Extension('foo', ['foo.c', 'bar.c'], define_macros=[('NO_STATIC_MEMOTABLE', 1)]) Extension('bar', ['bar.c']) even if defining NO_STATIC_MEMOTABLE=1 radically changes the code of bar.c, distutils will use the same bar.o for both the foo and bar extension modules. This was a real problem for me at work today. The attached patch removes the modtime comparison entirely, preferring to rebuild all .o files a given extension module needs. Note that while _prep_compiler() isn't used anywhere in the stdlib, Google Code Search turns up uses. ---------- assignee: tarek components: Distutils files: ccompiler.patch keywords: needs review, patch, patch messages: 82734 nosy: collinwinter, jyasskin, tarek severity: normal stage: patch review status: open title: Distutils inappropriately reuses .o files between extension modules type: behavior versions: Python 2.7 Added file: http://bugs.python.org/file13180/ccompiler.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue5372> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com