classification
Title: distutils default compiler API is incomplete
Type: behavior Stage: resolved
Components: Distutils Versions: Python 3.5, Python 2.7
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: Nosy List: dstufft, eric.araujo, stefan
Priority: normal Keywords:

Created on 2016-01-07 00:32 by stefan, last changed 2020-10-22 21:46 by eric.araujo. This issue is now closed.

Messages (2)
msg257663 - (view) Author: Stefan Seefeld (stefan) * (Python committer) Date: 2016-01-07 00:32
I'm trying to use the distutil compiler to preprocess some header (to be used with the cffi package).
The code is

    compiler = distutils.ccompiler.new_compiler()
    compiler.add_include_dir(join(sys.prefix, 'include'))
    compiler.preprocess(source)

This raises this exception (on Linux):

  File ".../distutils/unixccompiler.py", line 88, in preprocess
    pp_args = self.preprocessor + pp_opts
TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'

caused by 'set.preprocessor' to be set to None (with the preceding comment:

    # The defaults here
    # are pretty generic; they will probably have to be set by an outsider
    # (eg. using information discovered by the sysconfig about building
    # Python extensions).

Seems that code never got fully implemented.
Further, the MSVC version of the compiler (msvccompiler.py) doesn't even implement a "preprocess()" method, so this falls back to the CCompiler.preprocess() default, which does nothing !
msg379363 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2020-10-22 21:46
Distutils does not evolve anymore — if CFFI still needs something like this, I think it should build on setuptools and request features there.
History
Date User Action Args
2020-10-22 21:46:33eric.araujosetstatus: open -> closed
resolution: wont fix
messages: + msg379363

stage: resolved
2016-01-07 00:32:48stefancreate