[Distutils] building with static dependencies

Sridhar Ratnakumar sridharr at activestate.com
Wed Apr 28 18:55:25 CEST 2010


Similar to "STATICDEPS=True python setup.py bdist_egg" in lxml?

For numpy you only need to use the pre-built ATLAS libraries (see scipy installation document) on windows 32-bit (for 64-bit, you will need the proprietary MKL to build atlas), and build atlas yourself on linux. In both cases, setup.cfg has to be modified to point to these ATLAS libraries. ATLAS will be statically linked.

To statically link libgfortran: on Mac, take a look at the libgfotran.a copying hack in pavement.py (scipy trunk); on Linux, I haven't yet figured out a way to reliably link libgfortran statically to numpy.

In PyPM, we are standardizing on the 'STATIC=True' environment variable for configuring packages to build with static linking. Eg: we patched mysql-python to test this environment variable and then build statically against mysql (after automatically downloading/building it). 

You will have to patch setup.py yourself in order to make the packages build statically (eg: see buildlibxml.py in lxml source)

-srid

On 2010-04-28, at 6:14 AM, Chris Withers wrote:

> Hi All,
> 
> I'd like to build some packages into eggs such that I can easilly install them with virtual_env or buildout.
> 
> The packages in question are numpy and scipy, at the moment.
> 
> Are there parameters I can pass to "python setup.py build" or "python setup.py bdist_egg" that will cause the egg to be built will all its dependencies statically linked and included within the egg?
> 
> (ie: so I can build once on linux and once on windows, put the binary eggs in our local index and then not have to worry about the build proceses and convoluted dependencies on other machines of a similar architecture)
> 
> cheers,
> 
> Chris
> 
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> http://mail.python.org/mailman/listinfo/distutils-sig



More information about the Distutils-SIG mailing list