[Python-Dev] Using SCons for cross-compilation

Chris Lambacher chris at kateandchris.net
Thu Nov 9 17:29:37 CET 2006


On Thu, Nov 09, 2006 at 04:42:48PM +0100, David Boddie wrote:
> On Thu Nov 9 07:45:30 CET 2006, Anthony Baxter wrote:
> 
> > On Thursday 09 November 2006 16:30, Martin v. Löwis wrote:
> > > Patch #841454 takes a stab at cross-compilation
> > > (for MingW32 on a Linux system, in this case),
> > > and proposes to use SCons instead of setup.py
> > > to compile extension modules. Usage of SCons
> > > would be restricted to cross-compilation (for
> > > the moment).
> > >
> > > What do you think?
> > 
> > So we'd now have 3 places to update when things change (setup.py, PCbuild 
> > area, SCons)? How does this deal with the problems that autoconf has with 
> > cross-compilation? It would seem to me that just fixing the extension module 
> > building is a tiny part of the problem... or am I missing something?
> 
> I've been working on adding cross-compiling support to Python's build system,
> too, though I've had the luxury of building on Linux for a target platform
> that also runs Linux. Since the build system originally came from the GCC
> project, it shouldn't surprise anyone that there's already a certain level
> of support for cross-compilation built in. Simply setting the --build and
> --host options is a good start, for example.
> 
> It seems that Martin's patch solves some problems I encountered more cleanly
> (in certain respects) than the solutions I came up with. Here are some
> issues I encountered (from memory):
> 
>  * The current system assumes that Parser/pgen will be built using the
>    compiler being used for the rest of the build. This obviously isn't
>    going to work when the executable is meant for the target platform.
>    At the same time, the object files for pgen need to be compiled for
>    the interpreter for the target platform.
> 
>  * The newly-compiled interpreter is used to compile the standard library,
>    run tests and execute the setup.py file. Some of these things should
>    be done by the interpreter, but it won't work on the host platform.
>    On the other hand, the setup.py script should be run by the host's
>    Python interpreter, but using information about the target interpreter's
>    configuration.
> 
>  * There are various extensions defined in the setup.py file that are
>    found and erroneously included if you execute it using the host's
>    interpreter. Ideally, it would be possible to use the target's
>    configuration to disable extensions, but a more configurable build
>    process would also be welcome.
> 
This pretty much covers the difficulties I encountered.  For what it's worth,
my experiences with Python 2.5 are documented here:
<http://whatschrisdoing.com/blog/2006/10/06/howto-cross-compile-python-25/>

I am also interested in pursuing solutions that make it easier to both build
python and third party extensions in cross compile environment.

> I'll try to look at Martin's patch at some point. I hope these observations
> and suggestions help explain the current issues with the build system when
> cross-compiling.
> 
> David
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/chris%40kateandchris.net


More information about the Python-Dev mailing list