$NetBSD: patch-ac,v 1.9 2005/05/29 08:41:34 minskim Exp $ --- setup.py.orig 2001-12-27 15:51:02.000000000 -0600 +++ setup.py @@ -14,7 +14,7 @@ from distutils.core import Extension, se from distutils.command.build_ext import build_ext # This global variable is used to hold the list of modules to be disabled. -disabled_module_list = [] +disabled_module_list = ["_bsddb", "_curses", "_curses_panel", "_tkinter", "gdbm", "mpz", "pyexpat", "readline"] def find_file(filename, std_dirs, paths): """Searches for the directory where a given file is located, @@ -145,11 +145,16 @@ class PyBuildExt(build_ext): return platform def detect_modules(self): - # Ensure that /usr/local is always used - if '/usr/local/lib' not in self.compiler.library_dirs: - self.compiler.library_dirs.insert(0, '/usr/local/lib') - if '/usr/local/include' not in self.compiler.include_dirs: - self.compiler.include_dirs.insert(0, '/usr/local/include' ) + # Add the buildlink directories for pkgsrc + if os.environ.has_key('BUILDLINK_DIR'): + dir = os.environ['BUILDLINK_DIR'] + libdir = dir + '/lib' + incdir = dir + '/include' + if libdir not in self.compiler.library_dirs: + self.compiler.library_dirs.insert(0, libdir) + if incdir not in self.compiler.include_dirs: + self.compiler.include_dirs.insert(0, incdir) + # lib_dirs and inc_dirs are used to search for files; # if a file is found in one of those directories, it can @@ -265,13 +270,13 @@ class PyBuildExt(build_ext): # These represent audio samples or images as strings: # Disabled on 64-bit platforms - if sys.maxint != 9223372036854775807L: +# if sys.maxint != 9223372036854775807L: # Operations on audio samples - exts.append( Extension('audioop', ['audioop.c']) ) +# exts.append( Extension('audioop', ['audioop.c']) ) # Operations on images - exts.append( Extension('imageop', ['imageop.c']) ) +# exts.append( Extension('imageop', ['imageop.c']) ) # Read SGI RGB image files (but coded portably) - exts.append( Extension('rgbimg', ['rgbimgmodule.c']) ) +# exts.append( Extension('rgbimg', ['rgbimgmodule.c']) ) # readline if self.compiler.find_library_file(lib_dirs, 'readline'): @@ -296,14 +301,10 @@ class PyBuildExt(build_ext): # socket(2) # Detect SSL support for the socket module ssl_incs = find_file('openssl/ssl.h', inc_dirs, - ['/usr/local/ssl/include', - '/usr/contrib/ssl/include/' - ] + [] ) ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, - ['/usr/local/ssl/lib', - '/usr/contrib/ssl/lib/' - ] ) + [] ) if (ssl_incs is not None and ssl_libs is not None): @@ -322,19 +323,6 @@ class PyBuildExt(build_ext): # implementation independent wrapper for these; dumbdbm.py provides # similar functionality (but slower of course) implemented in Python. - # The standard Unix dbm module: - if platform not in ['cygwin']: - if (self.compiler.find_library_file(lib_dirs, 'ndbm')): - exts.append( Extension('dbm', ['dbmmodule.c'], - libraries = ['ndbm'] ) ) - else: - exts.append( Extension('dbm', ['dbmmodule.c']) ) - - # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: - if (self.compiler.find_library_file(lib_dirs, 'gdbm')): - exts.append( Extension('gdbm', ['gdbmmodule.c'], - libraries = ['gdbm'] ) ) - # Berkeley DB interface. # # This requires the Berkeley DB code, see @@ -346,16 +334,20 @@ class PyBuildExt(build_ext): # (See http://electricrain.com/greg/python/bsddb3/ for an interface to # BSD DB 3.x.) + bdb_type = os.environ['PY_BDB_TYPE'] + dblib_dir = [os.environ['PY_BDB_LIBDIRS']] dblib = [] - if self.compiler.find_library_file(lib_dirs, 'db'): + if self.compiler.find_library_file(dblib_dir, 'db'): dblib = ['db'] + elif self.compiler.find_library_file(dblib_dir, bdb_type): + dblib = [bdb_type] - db185_incs = find_file('db_185.h', inc_dirs, - ['/usr/include/db3', '/usr/include/db2']) - db_inc = find_file('db.h', inc_dirs, ['/usr/include/db1']) - if db185_incs is not None: + db_inc = [os.environ['PY_BDB_INCDIRS']] + if bdb_type in ['db2', 'db3', 'db4']: exts.append( Extension('bsddb', ['bsddbmodule.c'], - include_dirs = db185_incs, + include_dirs = db_inc, + library_dirs = dblib_dir, + runtime_library_dirs = dblib_dir, define_macros=[('HAVE_DB_185_H',1)], libraries = dblib ) ) elif db_inc is not None: @@ -363,6 +355,36 @@ class PyBuildExt(build_ext): include_dirs = db_inc, libraries = dblib) ) + # The standard Unix dbm module: + if platform not in ['cygwin']: + if find_file("ndbm.h", inc_dirs, []) is not None: + if (self.compiler.find_library_file(lib_dirs, 'ndbm')): + ndbm_libs = ['ndbm'] + else: + ndbm_libs = [] + exts.append( Extension('dbm', ['dbmmodule.c'], + libraries = ndbm_libs ) ) + elif find_file("ndbm.h", db_inc, []) is not None: + exts.append( Extension('dbm', ['dbmmodule.c'], + library_dirs=dblib_dir, + runtime_library_dirs=dblib_dir, + include_dirs=db_inc, + define_macros=[('HAVE_NDBM_H',None)], + libraries=dblib)) + elif db_inc is not None: + exts.append( Extension('dbm', ['dbmmodule.c'], + library_dirs=dblib_dir, + runtime_library_dirs=dblib_dir, + include_dirs=db_inc, + define_macros=[('HAVE_BERKDB_H',None), + ('DB_DBM_HSEARCH',None)], + libraries=dblib)) + + # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: + if (self.compiler.find_library_file(lib_dirs, 'gdbm')): + exts.append( Extension('gdbm', ['gdbmmodule.c'], + libraries = ['gdbm'] ) ) + # The mpz module interfaces to the GNU Multiple Precision library. # You need to ftp the GNU MP library. # This was originally written and tested against GMP 1.2 and 1.3.2. @@ -408,8 +430,8 @@ class PyBuildExt(build_ext): if (self.compiler.find_library_file(lib_dirs, 'ncurses')): curses_libs = ['ncurses'] - exts.append( Extension('_curses', ['_cursesmodule.c'], - libraries = curses_libs) ) +# exts.append( Extension('_curses', ['_cursesmodule.c'], +# libraries = curses_libs) ) elif (self.compiler.find_library_file(lib_dirs, 'curses')) and platform[:6] != 'darwin': # OSX has an old Berkeley curses, not good enough for the _curses module. if (self.compiler.find_library_file(lib_dirs, 'terminfo')): @@ -417,8 +439,8 @@ class PyBuildExt(build_ext): else: curses_libs = ['curses', 'termcap'] - exts.append( Extension('_curses', ['_cursesmodule.c'], - libraries = curses_libs) ) +# exts.append( Extension('_curses', ['_cursesmodule.c'], +# libraries = curses_libs) ) # If the curses module is enabled, check for the panel module if (os.path.exists('Modules/_curses_panel.c') and @@ -451,23 +473,7 @@ class PyBuildExt(build_ext): # Andrew Kuchling's zlib module. # This require zlib 1.1.3 (or later). # See http://www.cdrom.com/pub/infozip/zlib/ - zlib_inc = find_file('zlib.h', [], inc_dirs) - if zlib_inc is not None: - zlib_h = zlib_inc[0] + '/zlib.h' - version = '"0.0.0"' - version_req = '"1.1.3"' - fp = open(zlib_h) - while 1: - line = fp.readline() - if not line: - break - if line.find('#define ZLIB_VERSION', 0) == 0: - version = line.split()[2] - break - if version >= version_req: - if (self.compiler.find_library_file(lib_dirs, 'z')): - exts.append( Extension('zlib', ['zlibmodule.c'], - libraries = ['z']) ) + exts.append(Extension('zlib', ['zlibmodule.c'], libraries = ['z'])) # Interface to the Expat XML parser # @@ -609,7 +615,7 @@ def main(): ext_modules=[Extension('struct', ['structmodule.c'])], # Scripts to install - scripts = ['Tools/scripts/pydoc'] + scripts = ['Tools/scripts/pydoc2.1'] ) # --install-platlib