diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-05-08 15:23:57 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-05-08 15:23:57 (GMT) |
commit | dac6aeb43c5be6b0ad506bb03234d0596853df31 (patch) | |
tree | c482a3d92bfd614b5d44989de3d804cfb78f3550 /setup.py | |
parent | 8851b71c6f47f3d4b4c723118d9600e56421dad7 (diff) | |
download | cpython-dac6aeb43c5be6b0ad506bb03234d0596853df31.zip cpython-dac6aeb43c5be6b0ad506bb03234d0596853df31.tar.gz cpython-dac6aeb43c5be6b0ad506bb03234d0596853df31.tar.bz2 |
Revert r80963 - it broke compilation everywhere
Diffstat (limited to 'setup.py')
-rw-r--r-- | setup.py | 131 |
1 files changed, 21 insertions, 110 deletions
@@ -29,27 +29,6 @@ def add_dir_to_list(dirlist, dir): if dir is not None and os.path.isdir(dir) and dir not in dirlist: dirlist.insert(0, dir) -def macosx_sdk_root(): - """ - Return the directory of the current OSX SDK, - or '/' if no SDK was specified. - """ - cflags = sysconfig.get_config_var('CFLAGS') - m = re.search(r'-isysroot\s+(\S+)', cflags) - if m is None: - sysroot = '/' - else: - sysroot = m.group(1) - return sysroot - -def is_macosx_sdk_path(path): - """ - Returns True if 'path' can be located in an OSX SDK - """ - return path.startswith('/usr/') or path.startswith('/System/') - - - def find_file(filename, std_dirs, paths): """Searches for the directory where a given file is located, and returns a possibly-empty list of additional directories, or None @@ -61,28 +40,15 @@ def find_file(filename, std_dirs, paths): 'paths' is a list of additional locations to check; if the file is found in one of them, the resulting list will contain the directory. """ - if sys.platform == 'darwin': - # Honor the MacOSX SDK setting when one was specified. - # An SDK is a directory with the same structure as a real - # system, but with only header files and libraries. - sysroot = macosx_sdk_root() # Check the standard locations for dir in std_dirs: f = os.path.join(dir, filename) - - if sys.platform == 'darwin' and is_macosx_sdk_path(dir): - f = os.path.join(sysroot, dir[1:], filename) - if os.path.exists(f): return [] # Check the additional directories for dir in paths: f = os.path.join(dir, filename) - - if sys.platform == 'darwin' and dir.startswith('/System') or dir.startswith('/usr'): - f = os.path.join(sysroot, dir[1:], filename) - if os.path.exists(f): return [dir] @@ -94,19 +60,11 @@ def find_library_file(compiler, libname, std_dirs, paths): if result is None: return None - if sys.platform == 'darwin': - sysroot = macosx_sdk_root() - # Check whether the found file is in one of the standard directories dirname = os.path.dirname(result) for p in std_dirs: # Ensure path doesn't end with path separator p = p.rstrip(os.sep) - - if sys.platform == 'darwin' and is_macosx_sdk_path(p): - if os.path.join(sysroot, p[1:]) == dirname: - return [ ] - if p == dirname: return [ ] @@ -115,11 +73,6 @@ def find_library_file(compiler, libname, std_dirs, paths): for p in paths: # Ensure path doesn't end with path separator p = p.rstrip(os.sep) - - if sys.platform == 'darwin' and is_macosx_sdk_path(p): - if os.path.join(sysroot, p[1:]) == dirname: - return [ p ] - if p == dirname: return [p] else: @@ -607,7 +560,7 @@ class PyBuildExt(build_ext): # library and then a static library, instead of first looking # for dynamic libraries on the entiry path. # This way a staticly linked custom readline gets picked up - # before the (possibly broken) dynamic library in /usr/lib. + # before the (broken) dynamic library in /usr/lib. readline_extra_link_args = ('-Wl,-search_paths_first',) else: readline_extra_link_args = () @@ -678,20 +631,24 @@ class PyBuildExt(build_ext): openssl_ver = 0 openssl_ver_re = re.compile( '^\s*#\s*define\s+OPENSSL_VERSION_NUMBER\s+(0x[0-9a-fA-F]+)' ) + for ssl_inc_dir in inc_dirs + search_for_ssl_incs_in: + name = os.path.join(ssl_inc_dir, 'openssl', 'opensslv.h') + if os.path.isfile(name): + try: + incfile = open(name, 'r') + for line in incfile: + m = openssl_ver_re.match(line) + if m: + openssl_ver = eval(m.group(1)) + break + except IOError: + pass - # look for the openssl version header on the compiler search path. - opensslv_h = find_file('openssl/opensslv.h', inc_dirs, search_for_ssl_incs_in) - if opensslv_h: - name = opensslv_h[0] - try: - incfile = open(name, 'r') - for line in incfile: - m = openssl_ver_re.match(line) - if m: - openssl_ver = eval(m.group(1)) - except IOError: - pass + # first version found is what we'll use (as the compiler should) + if openssl_ver: + break + #print 'openssl_ver = 0x%08x' % openssl_ver min_openssl_ver = 0x00907000 have_any_openssl = ssl_incs is not None and ssl_libs is not None have_usable_openssl = (have_any_openssl and @@ -824,19 +781,12 @@ class PyBuildExt(build_ext): db_ver_inc_map = {} - if sys.platform == 'darwin': - sysroot = macosx_sdk_root() - 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 sys.platform == 'darwin' and is_macosx_sdk_path(d): - f = os.path.join(sysroot, d[1:], "db.h") - if db_setup_debug: print "db: looking for db.h in", f if os.path.exists(f): f = open(f).read() @@ -883,20 +833,7 @@ class PyBuildExt(build_ext): db_incdir.replace("include", 'lib64'), db_incdir.replace("include", 'lib'), ] - - if sys.platform != 'darwin': - db_dirs_to_check = filter(os.path.isdir, db_dirs_to_check) - - else: - # Same as other branch, but takes OSX SDK into account - tmp = [] - for dn in db_dirs_to_check: - if is_macosx_sdk_path(dn): - if os.path.isdir(os.path.join(sysroot, dn[1:])): - tmp.append(dn) - else: - if os.path.isdir(dn): - tmp.append(dn) + 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 @@ -958,15 +895,8 @@ class PyBuildExt(build_ext): # 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. - if sys.platform == 'darwin': - sysroot = macosx_sdk_root() - for d in inc_dirs + sqlite_inc_paths: f = os.path.join(d, "sqlite3.h") - - if sys.platform == 'darwin' and is_macosx_sdk_path(d): - f = os.path.join(sysroot, d[1:], "sqlite3.h") - if os.path.exists(f): if sqlite_setup_debug: print "sqlite: found %s"%f incf = open(f).read() @@ -1054,12 +984,6 @@ class PyBuildExt(build_ext): # the more recent berkeleydb's db.h file first in the include path # when attempting to compile and it will fail. f = "/usr/include/db.h" - - if sys.platform == 'darwin': - if is_macosx_sdk_path(f): - sysroot = macosx_sdk_root() - f = os.path.join(sysroot, f[1:]) - if os.path.exists(f) and not db_incs: data = open(f).read() m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data) @@ -1566,22 +1490,14 @@ class PyBuildExt(build_ext): join(os.getenv('HOME'), '/Library/Frameworks') ] - sysroot = macosx_sdk_root() - # Find the directory that contains the Tcl.framework and Tk.framework # bundles. # XXX distutils should support -F! for F in framework_dirs: # both Tcl.framework and Tk.framework should be present - - for fw in 'Tcl', 'Tk': - if is_macosx_sdk_path(F): - if not exists(join(sysroot, F[1:], fw + '.framework')): - break - else: - if not exists(join(F, fw + '.framework')): - break + if not exists(join(F, fw + '.framework')): + break else: # ok, F is now directory with both frameworks. Continure # building @@ -1611,12 +1527,7 @@ class PyBuildExt(build_ext): # architectures. cflags = sysconfig.get_config_vars('CFLAGS')[0] archs = re.findall('-arch\s+(\w+)', cflags) - - if is_macosx_sdk_path(F): - fp = os.popen("file %s/Tk.framework/Tk | grep 'for architecture'"%(os.path.join(sysroot, F[1:]),)) - else: - fp = os.popen("file %s/Tk.framework/Tk | grep 'for architecture'"%(F,)) - + fp = os.popen("file %s/Tk.framework/Tk | grep 'for architecture'"%(F,)) detected_archs = [] for ln in fp: a = ln.split()[-1] |