summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/distutils/command/build_ext.py11
-rw-r--r--setup.py7
2 files changed, 18 insertions, 0 deletions
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index c9e3062..7a39314 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 183c45e..693d64c 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