From: Fred Drake Date: Thu, 6 Dec 2001 22:59:54 +0000 (+0000) Subject: Visious hackery to solve a build-control problem related to our use of X-Git-Tag: v2.2.1c1~495 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9028d0a52529a8bc76868ade697511f29614b207;p=python Visious hackery to solve a build-control problem related to our use of distutils for the library modules built as shared objects. A better solution appears possible, but with the threat that the distutils becomes more magical ("complex"). This closes SF bug #458343. --- diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index c9e3062306..7a39314bcd 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -456,6 +456,17 @@ class build_ext (Command): debug=self.debug, extra_postargs=extra_args) + # XXX -- this is a Vile HACK! + # + # The setup.py script for Python on Unix needs to be able to + # get this list so it can perform all the clean up needed to + # avoid keeping object files around when cleaning out a failed + # build of an extension module. Since Distutils does not + # track dependencies, we have to get rid of intermediates to + # ensure all the intermediates will be properly re-built. + # + self._built_objects = objects[:] + # Now link the object files together into a "shared object" -- # of course, first we have to figure out all the other things # that go into the mix. diff --git a/setup.py b/setup.py index 183c45e06c..693d64c978 100644 --- a/setup.py +++ b/setup.py @@ -172,6 +172,13 @@ class PyBuildExt(build_ext): self.get_ext_filename(fullname)) os.remove(ext_filename) + # XXX -- This relies on a Vile HACK in + # distutils.command.build_ext.build_extension(). The + # _built_objects attribute is stored there strictly for + # use here. + for filename in self._built_objects: + os.remove(filename) + def get_platform (self): # Get value of sys.platform platform = sys.platform