[Distutils] compiler selection with bdist_egg of setuptools

Phillip J. Eby pje at telecommunity.com
Tue Oct 10 06:21:30 CEST 2006

At 09:05 PM 10/9/2006 -0700, Venkat Bommakanti wrote:
>While compiling some py/C source pkgs, such as:
>     . RuleDispatch-0.5a0.dev-r2115.tar.gz
>     . cElementTree-1.0.5-20051216.zip
>     . PyProtocols-1.0a0dev_r2082.zip
>     . Cheetah-2.0rc7.tar.gz
>I noticed in the logs that each (after being unpacked) has
>the following command invoked:
>      setup.py -q bdist_egg --dist-dir /tmp/....
>Since selecting a 'compiler' is not an option for the
>"bdist_egg" command, are even the settings in
>~/.pydistutils.cfg file:
>      [build]
>      compiler = unix
>      [bdist_egg]
>      plat_name = ppc
>picked up ?
>They appear not to be picked up, and I'm suspecting that
>since the [build] settings are valid only for the "build" command,
>it will not have any effect on the "bdist_egg" command used
>by all the above comps. Is that accurate ?

No, it's not accurate.  bdist_egg invokes various build commands (such as 
build_ext) which get their default --compiler setting from the [build] 

>If plat_name is not picked up, how is setuptools figuring
>out that the platform is i686 (given that the build is being
>done for a i686 linux box). Verbose logs don't show where/how
>that decision is made...

Try running with $DISTUTILS_DEBUG set to "yes".  You will get a ton of 
output showing what configuration files are being parsed and how the 
options for each command are getting set.  Look at what's happening when 
the second-level setup is run (i.e., the package being asked to 
'bdist_egg'); the first-level (easy_install itself) won't make any difference.

More information about the Distutils-SIG mailing list