[Python-Dev] addressing distutils inability to track file dependencies
Thomas Heller
thomas.heller@ion-tof.com
Fri, 14 Jun 2002 16:59:06 +0200
From: "Guido van Rossum" <guido@python.org>
> > What do you think is broken with the debug builds?
> > I use it routinely and have no problems at all...
>
> I was repeating hearsay.
The complaints I remember (mostly from c.l.p) are from
people who want to build debug versions of extensions
while at the same time refusing to build a debug version
of Python from the sources.
>
> Here's what used to be broken on Unix: if you built a debug Python but
> did not install it (assuming a non-debug Python was already
> installed), and then used that debug Python to build a 3rd party
> extension, the debug Python's configuration would be ignored, and the
> extension would be built with the configuration of the installed
> Python instead. Such extensions can't be linked with the debug
> Python, which was the whole point of using the debug Python to build
> in the first place.
>
> Jeremy recently fixed this for Unix, and I'm very happy.
>
> But I believe that on Windows you still have to add "--debug" to your
> setup.py build command to get the same effect. I think that using the
> debug executable should be sufficient to turn on the debug flags.
>
> More generally, I think that when you use a Python executable that
> lives in a build directory, the configuration of that build directory
> should be used for all extensions you build. This is what Jeremy did
> in his fix. (As a side effect, building the Python extensions no
> longer needs to be special-cased.)
>
I don't know anything about building Python (and extensions) on Unix,
but here's how it works on windows:
You can use the release as well as the debug version of Python to build
release debug or release extensions with distutils. You have to use the
--debug switch to specify which one to use.
The debug version needs other libraries than the release version, they
all have an _d inserted into the filename just before the filename-
extension (but you probably know this already ;-).
I don't know if it even is possible (in Python code) to determine
whether the debug or the release exe is currently running.
With changes I recently made to distutils, you can even do all this
in a 'not installed' version, straight from CVS, for example.
Thomas