426 lines
20 KiB
Plaintext
426 lines
20 KiB
Plaintext
$OpenBSD: patch-setup_py,v 1.4 2008/02/27 00:30:47 djm Exp $
|
|
--- setup.py.orig Tue Feb 5 10:41:02 2008
|
|
+++ setup.py Tue Feb 19 23:59:33 2008
|
|
@@ -244,8 +244,8 @@ class PyBuildExt(build_ext):
|
|
|
|
def detect_modules(self):
|
|
# Ensure that /usr/local is always used
|
|
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
|
|
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
|
|
+ add_dir_to_list(self.compiler.library_dirs, '!!LOCALBASE!!/lib')
|
|
+ add_dir_to_list(self.compiler.include_dirs, '!!LOCALBASE!!/include')
|
|
|
|
# Add paths specified in the environment variables LDFLAGS and
|
|
# CPPFLAGS for header and library files.
|
|
@@ -521,8 +521,6 @@ class PyBuildExt(build_ext):
|
|
depends = ['socketmodule.h']) )
|
|
# Detect SSL support for the socket module (via _ssl)
|
|
search_for_ssl_incs_in = [
|
|
- '/usr/local/ssl/include',
|
|
- '/usr/contrib/ssl/include/'
|
|
]
|
|
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
|
|
search_for_ssl_incs_in
|
|
@@ -533,9 +531,7 @@ class PyBuildExt(build_ext):
|
|
if krb5_h:
|
|
ssl_incs += krb5_h
|
|
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):
|
|
@@ -592,223 +588,15 @@ class PyBuildExt(build_ext):
|
|
exts.append( Extension('_sha256', ['sha256module.c']) )
|
|
exts.append( Extension('_sha512', ['sha512module.c']) )
|
|
|
|
-
|
|
- # Modules that provide persistent dictionary-like semantics. You will
|
|
- # probably want to arrange for at least one of them to be available on
|
|
- # your machine, though none are defined by default because of library
|
|
- # dependencies. The Python module anydbm.py provides an
|
|
- # implementation independent wrapper for these; dumbdbm.py provides
|
|
- # similar functionality (but slower of course) implemented in Python.
|
|
-
|
|
- # Sleepycat^WOracle Berkeley DB interface.
|
|
- # http://www.oracle.com/database/berkeley-db/db/index.html
|
|
- #
|
|
- # This requires the Sleepycat^WOracle DB code. The supported versions
|
|
- # are set below. Visit the URL above to download
|
|
- # a release. Most open source OSes come with one or more
|
|
- # versions of BerkeleyDB already installed.
|
|
-
|
|
- max_db_ver = (4, 5)
|
|
- # NOTE: while the _bsddb.c code links against BerkeleyDB 4.6.x
|
|
- # we leave that version disabled by default as it has proven to be
|
|
- # quite a buggy library release on many platforms.
|
|
- min_db_ver = (3, 3)
|
|
- db_setup_debug = False # verbose debug prints from this script?
|
|
-
|
|
- # construct a list of paths to look for the header file in on
|
|
- # top of the normal inc_dirs.
|
|
- db_inc_paths = [
|
|
- '/usr/include/db4',
|
|
- '/usr/local/include/db4',
|
|
- '/opt/sfw/include/db4',
|
|
- '/sw/include/db4',
|
|
- '/usr/include/db3',
|
|
- '/usr/local/include/db3',
|
|
- '/opt/sfw/include/db3',
|
|
- '/sw/include/db3',
|
|
- ]
|
|
- # 4.x minor number specific paths
|
|
- for x in range(max_db_ver[1]+1):
|
|
- db_inc_paths.append('/usr/include/db4%d' % x)
|
|
- db_inc_paths.append('/usr/include/db4.%d' % x)
|
|
- db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x)
|
|
- db_inc_paths.append('/usr/local/include/db4%d' % x)
|
|
- db_inc_paths.append('/pkg/db-4.%d/include' % x)
|
|
- db_inc_paths.append('/opt/db-4.%d/include' % x)
|
|
- # 3.x minor number specific paths
|
|
- for x in (3,):
|
|
- db_inc_paths.append('/usr/include/db3%d' % x)
|
|
- db_inc_paths.append('/usr/local/BerkeleyDB.3.%d/include' % x)
|
|
- db_inc_paths.append('/usr/local/include/db3%d' % x)
|
|
- db_inc_paths.append('/pkg/db-3.%d/include' % x)
|
|
- db_inc_paths.append('/opt/db-3.%d/include' % x)
|
|
-
|
|
- # Add some common subdirectories for Sleepycat DB to the list,
|
|
- # based on the standard include directories. This way DB3/4 gets
|
|
- # picked up when it is installed in a non-standard prefix and
|
|
- # the user has added that prefix into inc_dirs.
|
|
- std_variants = []
|
|
- for dn in inc_dirs:
|
|
- std_variants.append(os.path.join(dn, 'db3'))
|
|
- std_variants.append(os.path.join(dn, 'db4'))
|
|
- for x in range(max_db_ver[1]+1):
|
|
- std_variants.append(os.path.join(dn, "db4%d"%x))
|
|
- std_variants.append(os.path.join(dn, "db4.%d"%x))
|
|
- for x in (2,3):
|
|
- std_variants.append(os.path.join(dn, "db3%d"%x))
|
|
- std_variants.append(os.path.join(dn, "db3.%d"%x))
|
|
-
|
|
- db_inc_paths = std_variants + db_inc_paths
|
|
-
|
|
-
|
|
- db_ver_inc_map = {}
|
|
-
|
|
- class db_found(Exception): pass
|
|
- try:
|
|
- # See whether there is a Sleepycat header in the standard
|
|
- # search path.
|
|
- for d in inc_dirs + db_inc_paths:
|
|
- f = os.path.join(d, "db.h")
|
|
- if db_setup_debug: print "db: looking for db.h in", f
|
|
- if os.path.exists(f):
|
|
- f = open(f).read()
|
|
- m = re.search(r"#define\WDB_VERSION_MAJOR\W(\d+)", f)
|
|
- if m:
|
|
- db_major = int(m.group(1))
|
|
- m = re.search(r"#define\WDB_VERSION_MINOR\W(\d+)", f)
|
|
- db_minor = int(m.group(1))
|
|
- db_ver = (db_major, db_minor)
|
|
-
|
|
- # Avoid 4.6 prior to 4.6.21 due to a BerkeleyDB bug
|
|
- if db_ver == (4, 6):
|
|
- m = re.search(r"#define\WDB_VERSION_PATCH\W(\d+)", f)
|
|
- db_patch = int(m.group(1))
|
|
- if db_patch < 21:
|
|
- print "db.h:", db_ver, "patch", db_patch,
|
|
- print "being ignored (4.6.x must be >= 4.6.21)"
|
|
- continue
|
|
-
|
|
- if ( (not db_ver_inc_map.has_key(db_ver)) and
|
|
- (db_ver <= max_db_ver and db_ver >= min_db_ver) ):
|
|
- # save the include directory with the db.h version
|
|
- # (first occurrance only)
|
|
- db_ver_inc_map[db_ver] = d
|
|
- print "db.h: found", db_ver, "in", d
|
|
- else:
|
|
- # we already found a header for this library version
|
|
- if db_setup_debug: print "db.h: ignoring", d
|
|
- else:
|
|
- # ignore this header, it didn't contain a version number
|
|
- if db_setup_debug: print "db.h: unsupported version", db_ver, "in", d
|
|
-
|
|
- db_found_vers = db_ver_inc_map.keys()
|
|
- db_found_vers.sort()
|
|
-
|
|
- while db_found_vers:
|
|
- db_ver = db_found_vers.pop()
|
|
- db_incdir = db_ver_inc_map[db_ver]
|
|
-
|
|
- # check lib directories parallel to the location of the header
|
|
- db_dirs_to_check = [
|
|
- os.path.join(db_incdir, '..', 'lib64'),
|
|
- os.path.join(db_incdir, '..', 'lib'),
|
|
- os.path.join(db_incdir, '..', '..', 'lib64'),
|
|
- os.path.join(db_incdir, '..', '..', 'lib'),
|
|
- ]
|
|
- db_dirs_to_check = filter(os.path.isdir, db_dirs_to_check)
|
|
-
|
|
- # Look for a version specific db-X.Y before an ambiguoius dbX
|
|
- # XXX should we -ever- look for a dbX name? Do any
|
|
- # systems really not name their library by version and
|
|
- # symlink to more general names?
|
|
- for dblib in (('db-%d.%d' % db_ver),
|
|
- ('db%d%d' % db_ver),
|
|
- ('db%d' % db_ver[0])):
|
|
- dblib_file = self.compiler.find_library_file(
|
|
- db_dirs_to_check + lib_dirs, dblib )
|
|
- if dblib_file:
|
|
- dblib_dir = [ os.path.abspath(os.path.dirname(dblib_file)) ]
|
|
- raise db_found
|
|
- else:
|
|
- if db_setup_debug: print "db lib: ", dblib, "not found"
|
|
-
|
|
- except db_found:
|
|
- print "db lib: using", db_ver, dblib
|
|
- if db_setup_debug: print "db: lib dir", dblib_dir, "inc dir", db_incdir
|
|
- db_incs = [db_incdir]
|
|
- dblibs = [dblib]
|
|
- # We add the runtime_library_dirs argument because the
|
|
- # BerkeleyDB lib we're linking against often isn't in the
|
|
- # system dynamic library search path. This is usually
|
|
- # correct and most trouble free, but may cause problems in
|
|
- # some unusual system configurations (e.g. the directory
|
|
- # is on an NFS server that goes away).
|
|
+ if !!USE_BSDDB!!:
|
|
exts.append(Extension('_bsddb', ['_bsddb.c'],
|
|
- library_dirs=dblib_dir,
|
|
- runtime_library_dirs=dblib_dir,
|
|
- include_dirs=db_incs,
|
|
- libraries=dblibs))
|
|
- else:
|
|
- if db_setup_debug: print "db: no appropriate library found"
|
|
- db_incs = None
|
|
- dblibs = []
|
|
- dblib_dir = None
|
|
+ library_dirs=["!!LOCALBASE!!/lib/db4"],
|
|
+ runtime_library_dirs=["!!LOCALBASE!!/lib/db4"],
|
|
+ include_dirs=["!!LOCALBASE!!/include/db4"],
|
|
+ libraries=["db"]))
|
|
|
|
- # The sqlite interface
|
|
- sqlite_setup_debug = False # verbose debug prints from this script?
|
|
|
|
- # We hunt for #define SQLITE_VERSION "n.n.n"
|
|
- # We need to find >= sqlite version 3.0.8
|
|
- sqlite_incdir = sqlite_libdir = None
|
|
- sqlite_inc_paths = [ '/usr/include',
|
|
- '/usr/include/sqlite',
|
|
- '/usr/include/sqlite3',
|
|
- '/usr/local/include',
|
|
- '/usr/local/include/sqlite',
|
|
- '/usr/local/include/sqlite3',
|
|
- ]
|
|
- MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
|
|
- MIN_SQLITE_VERSION = ".".join([str(x)
|
|
- for x in MIN_SQLITE_VERSION_NUMBER])
|
|
-
|
|
- # Scan the default include directories before the SQLite specific
|
|
- # ones. This allows one to override the copy of sqlite on OSX,
|
|
- # where /usr/include contains an old version of sqlite.
|
|
- for d in inc_dirs + sqlite_inc_paths:
|
|
- f = os.path.join(d, "sqlite3.h")
|
|
- if os.path.exists(f):
|
|
- if sqlite_setup_debug: print "sqlite: found %s"%f
|
|
- incf = open(f).read()
|
|
- m = re.search(
|
|
- r'\s*.*#\s*.*define\s.*SQLITE_VERSION\W*"(.*)"', incf)
|
|
- if m:
|
|
- sqlite_version = m.group(1)
|
|
- sqlite_version_tuple = tuple([int(x)
|
|
- for x in sqlite_version.split(".")])
|
|
- if sqlite_version_tuple >= MIN_SQLITE_VERSION_NUMBER:
|
|
- # we win!
|
|
- print "%s/sqlite3.h: version %s"%(d, sqlite_version)
|
|
- sqlite_incdir = d
|
|
- break
|
|
- else:
|
|
- if sqlite_setup_debug:
|
|
- print "%s: version %d is too old, need >= %s"%(d,
|
|
- sqlite_version, MIN_SQLITE_VERSION)
|
|
- elif sqlite_setup_debug:
|
|
- print "sqlite: %s had no SQLITE_VERSION"%(f,)
|
|
-
|
|
- if sqlite_incdir:
|
|
- sqlite_dirs_to_check = [
|
|
- os.path.join(sqlite_incdir, '..', 'lib64'),
|
|
- os.path.join(sqlite_incdir, '..', 'lib'),
|
|
- os.path.join(sqlite_incdir, '..', '..', 'lib64'),
|
|
- os.path.join(sqlite_incdir, '..', '..', 'lib'),
|
|
- ]
|
|
- sqlite_libfile = self.compiler.find_library_file(
|
|
- sqlite_dirs_to_check + lib_dirs, 'sqlite3')
|
|
- sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]
|
|
-
|
|
- if sqlite_incdir and sqlite_libdir:
|
|
+ if !!USE_SQLITE!!:
|
|
sqlite_srcs = ['_sqlite/cache.c',
|
|
'_sqlite/connection.c',
|
|
'_sqlite/cursor.c',
|
|
@@ -818,31 +606,14 @@ class PyBuildExt(build_ext):
|
|
'_sqlite/row.c',
|
|
'_sqlite/statement.c',
|
|
'_sqlite/util.c', ]
|
|
-
|
|
sqlite_defines = []
|
|
- if sys.platform != "win32":
|
|
- sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
|
|
- else:
|
|
- sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
|
|
-
|
|
-
|
|
- if sys.platform == 'darwin':
|
|
- # In every directory on the search path search for a dynamic
|
|
- # library and then a static library, instead of first looking
|
|
- # for dynamic libraries on the entiry path.
|
|
- # This way a staticly linked custom sqlite gets picked up
|
|
- # before the dynamic library in /usr/lib.
|
|
- sqlite_extra_link_args = ('-Wl,-search_paths_first',)
|
|
- else:
|
|
- sqlite_extra_link_args = ()
|
|
-
|
|
+ sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
|
|
exts.append(Extension('_sqlite3', sqlite_srcs,
|
|
define_macros=sqlite_defines,
|
|
include_dirs=["Modules/_sqlite",
|
|
- sqlite_incdir],
|
|
- library_dirs=sqlite_libdir,
|
|
- runtime_library_dirs=sqlite_libdir,
|
|
- extra_link_args=sqlite_extra_link_args,
|
|
+ "!!LOCALBASE!!/include"],
|
|
+ library_dirs=["!!LOCALBASE!!/lib"],
|
|
+ runtime_library_dirs=["!!LOCALBASE!!/lib"],
|
|
libraries=["sqlite3",]))
|
|
|
|
# Look for Berkeley db 1.85. Note that it is built as a different
|
|
@@ -856,6 +627,7 @@ class PyBuildExt(build_ext):
|
|
# we do not build this one. Otherwise this build will pick up
|
|
# the more recent berkeleydb's db.h file first in the include path
|
|
# when attempting to compile and it will fail.
|
|
+ db_incs = []
|
|
f = "/usr/include/db.h"
|
|
if os.path.exists(f) and not db_incs:
|
|
data = open(f).read()
|
|
@@ -897,8 +669,7 @@ class PyBuildExt(build_ext):
|
|
('DB_DBM_HSEARCH',None)],
|
|
libraries=dblibs))
|
|
|
|
- # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm:
|
|
- if (self.compiler.find_library_file(lib_dirs, 'gdbm')):
|
|
+ if !!USE_GDBM!!:
|
|
exts.append( Extension('gdbm', ['gdbmmodule.c'],
|
|
libraries = ['gdbm'] ) )
|
|
|
|
@@ -989,53 +760,35 @@ class PyBuildExt(build_ext):
|
|
libraries = ['z'],
|
|
extra_link_args = zlib_extra_link_args))
|
|
|
|
- # Gustavo Niemeyer's bz2 module.
|
|
- if (self.compiler.find_library_file(lib_dirs, 'bz2')):
|
|
- if sys.platform == "darwin":
|
|
- bz2_extra_link_args = ('-Wl,-search_paths_first',)
|
|
- else:
|
|
- bz2_extra_link_args = ()
|
|
+ if !!USE_BZ2!!:
|
|
exts.append( Extension('bz2', ['bz2module.c'],
|
|
- libraries = ['bz2'],
|
|
- extra_link_args = bz2_extra_link_args) )
|
|
+ libraries = ['bz2']) )
|
|
|
|
- # Interface to the Expat XML parser
|
|
- #
|
|
- # Expat was written by James Clark and is now maintained by a
|
|
- # group of developers on SourceForge; see www.libexpat.org for
|
|
- # more information. The pyexpat module was written by Paul
|
|
- # Prescod after a prototype by Jack Jansen. The Expat source
|
|
- # is included in Modules/expat/. Usage of a system
|
|
- # shared libexpat.so/expat.dll is not advised.
|
|
- #
|
|
- # More information on Expat can be found at www.libexpat.org.
|
|
- #
|
|
- expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat')
|
|
- define_macros = [
|
|
- ('HAVE_EXPAT_CONFIG_H', '1'),
|
|
- ]
|
|
-
|
|
- exts.append(Extension('pyexpat',
|
|
- define_macros = define_macros,
|
|
- include_dirs = [expatinc],
|
|
- sources = ['pyexpat.c',
|
|
- 'expat/xmlparse.c',
|
|
- 'expat/xmlrole.c',
|
|
- 'expat/xmltok.c',
|
|
- ],
|
|
- ))
|
|
-
|
|
- # Fredrik Lundh's cElementTree module. Note that this also
|
|
- # uses expat (via the CAPI hook in pyexpat).
|
|
-
|
|
- if os.path.isfile(os.path.join(srcdir, 'Modules', '_elementtree.c')):
|
|
- define_macros.append(('USE_PYEXPAT_CAPI', None))
|
|
- exts.append(Extension('_elementtree',
|
|
+ if !!USE_EXPAT!!:
|
|
+ expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat')
|
|
+ define_macros = [
|
|
+ ('HAVE_EXPAT_CONFIG_H', '1'),
|
|
+ ]
|
|
+
|
|
+ exts.append(Extension('pyexpat',
|
|
define_macros = define_macros,
|
|
- include_dirs = [expatinc],
|
|
- sources = ['_elementtree.c'],
|
|
+ include_dirs = ["!!X11BASE!!/include", expatinc],
|
|
+ library_dirs = ["!!X11BASE!!/lib"],
|
|
+ sources = ['pyexpat.c'],
|
|
+ libraries = ['expat'],
|
|
))
|
|
|
|
+ # Fredrik Lundh's cElementTree module. Note that this also
|
|
+ # uses expat (via the CAPI hook in pyexpat).
|
|
+
|
|
+ if os.path.isfile(os.path.join(srcdir, 'Modules', '_elementtree.c')):
|
|
+ define_macros.append(('USE_PYEXPAT_CAPI', None))
|
|
+ exts.append(Extension('_elementtree',
|
|
+ define_macros = define_macros,
|
|
+ include_dirs = [expatinc],
|
|
+ sources = ['_elementtree.c'],
|
|
+ ))
|
|
+
|
|
# Hye-Shik Chang's CJKCodecs modules.
|
|
if have_unicode:
|
|
exts.append(Extension('_multibytecodec',
|
|
@@ -1151,8 +904,16 @@ class PyBuildExt(build_ext):
|
|
|
|
self.extensions.extend(exts)
|
|
|
|
- # Call the method for detecting whether _tkinter can be compiled
|
|
- self.detect_tkinter(inc_dirs, lib_dirs)
|
|
+ if !!USE_TKINTER!!:
|
|
+ ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
|
|
+ define_macros=[('WITH_APPINIT', 1)],
|
|
+ include_dirs = ["!!LOCALBASE!!/include/tcl8.4",
|
|
+ "!!LOCALBASE!!/include/tk8.4",
|
|
+ "!!X11BASE!!/include"],
|
|
+ libraries = ["tk84", "tcl84", "X11"],
|
|
+ library_dirs = ["!!LOCALBASE!!/lib", "!!X11BASE!!/lib"],
|
|
+ )
|
|
+ self.extensions.append(ext)
|
|
|
|
def detect_tkinter_darwin(self, inc_dirs, lib_dirs):
|
|
# The _tkinter module, using frameworks. Since frameworks are quite
|
|
@@ -1535,8 +1296,7 @@ def main():
|
|
ext_modules=[Extension('_struct', ['_struct.c'])],
|
|
|
|
# Scripts to install
|
|
- scripts = ['Tools/scripts/pydoc', 'Tools/scripts/idle',
|
|
- 'Lib/smtpd.py']
|
|
+ scripts = []
|
|
)
|
|
|
|
# --install-platlib
|