[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/