Index: setup.py --- setup.py.orig +++ setup.py @@ -35,6 +35,11 @@ COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig # This global variable is used to hold the list of modules to be disabled. disabled_module_list = [] +def usrlocal(p): + return os.path.join(os.environ['LOCALBASE'], p) +def usrx11r6(p): + return os.path.join(os.environ['X11BASE'], p) + def add_dir_to_list(dirlist, dir): """Add the directory 'dir' to the list 'dirlist' (at the front) if 1) 'dir' is not already in 'dirlist' @@ -502,8 +507,8 @@ class PyBuildExt(build_ext): def detect_modules(self): # Ensure that /usr/local is always used if not cross_compiling: - 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, usrlocal('lib')) + add_dir_to_list(self.compiler.include_dirs, usrlocal('include')) if cross_compiling: self.add_gcc_paths() self.add_multiarch_paths() @@ -968,7 +973,7 @@ class PyBuildExt(build_ext): # BerkeleyDB 4.6.x is not stable on many architectures. arch = platform_machine() if arch not in ('i386', 'i486', 'i586', 'i686', - 'x86_64', 'ia64'): + 'x86_64', 'amd64', 'ia64'): return False return True @@ -1038,6 +1043,7 @@ class PyBuildExt(build_ext): std_variants.append(os.path.join(dn, "db3.%d"%x)) db_inc_paths = std_variants + db_inc_paths + db_inc_paths = [ usrlocal('include/db4') ] db_inc_paths = [p for p in db_inc_paths if os.path.exists(p)] db_ver_inc_map = {} @@ -1101,6 +1107,7 @@ class PyBuildExt(build_ext): db_incdir.replace("include", 'lib64'), db_incdir.replace("include", 'lib'), ] + db_dirs_to_check = [usrlocal('lib/db4')] if host_platform != 'darwin': db_dirs_to_check = filter(os.path.isdir, db_dirs_to_check) @@ -1123,6 +1130,7 @@ class PyBuildExt(build_ext): # symlink to more general names? for dblib in (('db-%d.%d' % db_ver), ('db%d%d' % db_ver), + ('db'), ('db%d' % db_ver[0])): dblib_file = self.compiler.find_library_file( db_dirs_to_check + lib_dirs, dblib ) @@ -1280,7 +1288,7 @@ class PyBuildExt(build_ext): sysroot = macosx_sdk_root() f = os.path.join(sysroot, f[1:]) - if os.path.exists(f) and not db_incs: + if os.path.exists(f): data = open(f).read() m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data) if m is not None: @@ -1881,7 +1889,7 @@ class PyBuildExt(build_ext): # For 8.4a2, the X11 headers are not included. Rather than include a # complicated search, this is a hard-coded path. It could bail out # if X11 libs are not found... - include_dirs.append('/usr/X11R6/include') + include_dirs.append(usrx11r6('include')) frameworks = ['-framework', 'Tcl', '-framework', 'Tk'] # All existing framework builds of Tcl/Tk don't support 64-bit @@ -1980,17 +1988,9 @@ class PyBuildExt(build_ext): if host_platform == 'sunos5': include_dirs.append('/usr/openwin/include') added_lib_dirs.append('/usr/openwin/lib') - elif os.path.exists('/usr/X11R6/include'): - include_dirs.append('/usr/X11R6/include') - added_lib_dirs.append('/usr/X11R6/lib64') - added_lib_dirs.append('/usr/X11R6/lib') - elif os.path.exists('/usr/X11R5/include'): - include_dirs.append('/usr/X11R5/include') - added_lib_dirs.append('/usr/X11R5/lib') - else: - # Assume default location for X11 - include_dirs.append('/usr/X11/include') - added_lib_dirs.append('/usr/X11/lib') + elif True: + include_dirs.append(usrx11r6('include')) + added_lib_dirs.append(usrx11r6('lib')) # If Cygwin, then verify that X is installed before proceeding if host_platform == 'cygwin':