[Python-Dev] Making setup.py a little more flexible

M.-A. Lemburg mal@lemburg.com
Thu, 04 Oct 2001 10:44:28 +0200


Greg Ward wrote:
> 
> Some months ago, I tried to build the latest Python on an IRIX 6.5
> system that has been, shall we say, lightly maintained for some time.
> (Basically, its /usr/local/ is mounted from an IRIX 5 system, and it's
> full of libraries that you can't link against with the default compiler
> flags on IRIX 6.)
> 
> Unfortunately, Python's setup.py is a bit too rigid: it assumes that it
> should always add /usr/local/{lib,include} to the lib/include search
> paths, it assumes it should always search /usr/local/lib (and a few
> others) for SSL libraries, etc.  Worse, it assumes the existence of
> libssl.a implies the linkability of -lssl -- when /usr/local is broken,
> this ain't necessarily so.
> 
> Now I know what the Right Answer is: finish implementing the Distutils
> "config" command, and use it to properly probe the system for includable
> header files and linkable libraries, rather than just assuming existence
> == validity.

> That would be nice.
That would certainly be nice indeed (for other users of distutils as 
well ;-).
 
> But I've got a quick 'n easy fix -- the moral
> equivalent of commenting out the code in PyBuildExt.detect_modules()
> that makes those blithe assumptions.  Namely, I added --without-usrlocal
> and --without-ssl options to the custom build_ext command used by
> setup.py.
> 
> Now, I can build most extensions just fine on this broken IRIX system
> like this:
>   ./python setup.py build_ext --without-ssl --without-usrlocal
> 
> I've just uploaded patch #467650 (assigned to Andrew) to implement this:
>   http://sourceforge.net/tracker/index.php?func=detail&aid=467650&group_id=5470&atid=305470
> 
> Whaddya think?  Good enough bandaid solution?  Or should I add a few
> more things, eg.:
>   --with-ssl-lib=DIR     directory to search for OpenSSL libs
>   --with-ssl-inc=DIR     directory to search for OpenSSL headers
>   --without-foo          don't try to build foo

I think that these options are more in line with what configure
scripts tend to offer: if the magic doesn't work, let the user
decide.
 
> The last one could be repeated for various values of "foo": curses, dbm,
> bsddb, etc.  I don't think that's too necessary; if some foo doesn't
> build, then it doesn't build and that's that.  From my cursory
> examination of detect_modules(), the _socket/OpenSSL dependency is the
> only obvious module-killer.  (That is, the bogus OpenSSL libs killed the
> _socket module completely, when all I really need to do is not use
> OpenSSL on this system.)

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Consulting & Company:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/