diff options
author | Fred Drake <fdrake@acm.org> | 2001-12-06 22:59:54 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-12-06 22:59:54 (GMT) |
commit | 9028d0a52529a8bc76868ade697511f29614b207 (patch) | |
tree | ef66dec6dba83cec240139ccdafbe09372961e2c | |
parent | e3d7622fb3e595db29b690751a00406b0e3cf975 (diff) | |
download | cpython-9028d0a52529a8bc76868ade697511f29614b207.zip cpython-9028d0a52529a8bc76868ade697511f29614b207.tar.gz cpython-9028d0a52529a8bc76868ade697511f29614b207.tar.bz2 |
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.
-rw-r--r-- | Lib/distutils/command/build_ext.py | 11 | ||||
-rw-r--r-- | setup.py | 7 |
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. @@ -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 |