Jason Sibre wrote:
>>On Thu, Jul 17, 2003 at 06:08:14PM -0400, Mark Bucciarelli wrote:
>>
>>>When I run setup.py install on Windows, I get an error that cl.exe
>>>cannot be found. (cl.exe is the name of the windows C compiler.)
>>
>>You need to comment out the line:
>>
>> kw['ext_modules'].append(htmltext)
>>
>>in setup.py. Perhaps we should change it so the default it to not
>>compile _c_htmltext on Windows.
>
>
> I really don't know much about distutils (yet), so I don't know if this is a
> worthwhile suggestion, but is this something that could simply be handled by
> a try/except, perhaps printing a warning if the python version (vs. the C
> version) was being used? That would simplify things for windows users
> without a [working] C compiler, especially those trying Quixote out for the
> first time.
I suggested such a patch to setup.py some time ago that fails over to the
Python implementation of htmltext. Below is a copy of the message.
On a side note, I'd like to point out that on Win32, distutils works just fine
with the Free-Software MinGW compiler, as well as MSVC. You can always specify
to use MinGW via `setup.py build --compiler=mingw32` if distutils gets
confused, or add it as an option to your setup.cfg file.
-- Graham
Long ago, Jim Dukarm wrote:
> Now setup.py runs to completion. I have not figured out specifically
> what was wrong, but possibly the setup is trying to copy a dll to a
> nonexistent location, or something like that.
It was trying to *build* a DLL (or rather a .pyd file, really the same thing).
My guess is you don't have a C compiler on the workstation... definitely a
common state of affairs on Windows machines. (Or, a configuration problem is
preventing Python's distutils from running your compiler.)
Folks, since you're mandating the use of _c_htmltext now, it would be very
helpful if the setup script could recover gracefully from the build_ext
failure, thus allowing the installation of Quixote with the Python htmltext
implementation. This would be a definite benefit for Quixote on Win32.
Here's a suggestion... when distutils fails, it throws a SystemExit; how about
catching it and trying again without ext_modules?
try:
core.setup(**kw)
except SystemExit, errmsg:
if not kw.has_key('ext_modules'):
raise
else:
print '\a'
print 'Could not build C implementation of htmltext! Reason:'
print errmsg
print 'Failing over to Python implementation.'
del kw['ext_modules']
core.setup(**kw)
Very nice setup script, by the way. The built-up dict is a great approach.
-- Graham