[Distutils] build subcommand order
Lars Immisch
lars at ibp.de
Fri Mar 26 16:42:43 EST 2004
Dan Schult wrote:
> Lars Immisch wrote:
>
>>I don't think so. In the first place, swig should create .py files only
>>if -shadow is passed, and I see no obvious support for this argument in
>>the distutils code.
>>
>>Swig is run without include path arguments (-Ifoo), macro definitions or
>>undefs and only one possible extra argument (-cpp).
>
>
> Are you sure you have the latest version of Swig
> (and distutils)?
Yes; I am using SWIG 1.3.21 (but my makefiles are from the days of SWIG
1.3.5).
But you are right. Since SWIG 1.3.14, -shadow is default. See [1] below.
> It handles include directories just fine for me
> and it creates .py files by default (without -shadow)
Do you have headers that are included via %include in the .i file (note
%include instead of #include)?
Standard #includes are just emitted to the wrapper code; the C compiler
gets the right arguments and things just work (tm).
The %includes are read by swig itself - swig takes the standard -I<foo>
arguments, but they are not currently passed.
(I need this to %include header files with type definitions that are
later used by %typemaps or %extends.)
> It seems that perhaps the best way to solve my problem
> is to add a line in build_ext.py that moves the python
> modules swig creates after it creates them.
Sounds like a pragmatic solution to me.
> It sounds like you are having many more issues though...
Just extra arguments.
I also find -modern quite important, but this could/should be handled by
extra_swig_args. See [2].
- Lars
From SWIG-1.3.21/CHANGES:
[1]
07/23/2002: beazley
*** IMPORTANT CHANGES TO THE PYTHON MODULE ***
(1) The Python module now enables shadow/proxy classes by
default.
This means that two files are always created by SWIG. For
instance, if you have this:
// file: foo.i
%module foo
...
[2]
10/31/2003: beazley
Incorporated patch: [ 829325 ] new Python Module options and
features.
Robin Dunn writes:
This patch makes a number of changes to the SWIG python
module.
...
5. Added a -modern command-line flag that will cause
SWIG to omit the cruft in the proxy modules that allows
it to work with versions of Python prior to 2.2. The
result is a simpler, cleaner and faster python proxy
module, but one that requires Python 2.2 or greater.
More information about the Distutils-SIG
mailing list