Problem controlling temp dir usage and verbose output for scipy_distutils vs. distutils
Hi, I've just got scipy_distutils and SWIG to successfully build a C extension module that uses Fortran sources (after surprisingly little additional effort from the pure-C case -- nice job Pearu), but I'm having trouble with two things that I didn't have trouble with using Python's original distutils: 1) Controlling the stderr warnings and info from the compilers and 2) Controlling the temp directories that the build uses. The libraries I'm building are numerical ODE integrators which are selected in my software by the user. I want to keep the filespace tidy and not require any additional admin by the user. In the past I've been building pure C extensions and provided arguments to my (regular Python distutils) setup command like the following, which solved both of the above problems: setup(name = "integrator in pure c", author = "me", script_args = ['-q', 'build', '--build-lib=.', '--build-platlib=.', '-t'+tempdirname], ext_modules = [Extension("modC", sources=modfilelist, include_dirs=incdirs, extra_compile_args=['-w'])]) The script args placed all of the temporary files in the same place which is automatically chosen by my software according to the user's choice of integrator. The -w argument used to shut up the C compiler nicely! However, when I switched to scipy_distutils in order to access the Fortran compiler, these options no longer seem to have any effect. This is what the modules that use Fortran libraries are set up with: setup(name = "integrator with fortran lib", author = "me", script_args = ['-q', 'build', '--build-lib=.', '--build-platlib=.', '-t'+tempdirname], ext_modules = [Extension("modfort", sources=modfilelist, include_dirs=incdirs, libraries=['myfortlib'], extra_compile_args=['-w'])], libraries=[('myfortlib',{'sources': fortfilelist})]) I now end up with a deep tree of temp directories (such as I used to have in the pure C case before I discovered the --build-lib options) inside my desired compilation temporary directory, as well as a separate 'build' directory beside my temp compilation dir that holds my final .py interface file (in ./build/src/modfort_temp/). I looked at the API and I cannot see additional options that I could be passing. I can see a install_libbase attribute being inherited from Python's distutils/command/install.py module's install class into SciPy's overriding class, but I don't get why it's not being used in the same way. I'm having the same problems on both Win32 and Linux platform using Python 2.3.5 and SciPy 0.3.2. My problem is also not specific to using Fortran libraries, as my old pure-C module suffers problem (2) when I use scipy_distutils on it (although the compiler stays quiet). Any ideas please? Thanks, Rob Clewley
participants (1)
-
Robert Clewley