[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