$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
