Current Path: > > opt > alt > python33 > lib64 > python3.3 >
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
collections | Directory | - | - | |
concurrent | Directory | - | - | |
config-3.3m | Directory | - | - | |
ctypes | Directory | - | - | |
curses | Directory | - | - | |
dbm | Directory | - | - | |
distutils | Directory | - | - | |
Directory | - | - | ||
encodings | Directory | - | - | |
html | Directory | - | - | |
http | Directory | - | - | |
idlelib | Directory | - | - | |
importlib | Directory | - | - | |
json | Directory | - | - | |
lib-dynload | Directory | - | - | |
lib2to3 | Directory | - | - | |
logging | Directory | - | - | |
multiprocessing | Directory | - | - | |
plat-linux | Directory | - | - | |
pydoc_data | Directory | - | - | |
site-packages | Directory | - | - | |
sqlite3 | Directory | - | - | |
test | Directory | - | - | |
unittest | Directory | - | - | |
urllib | Directory | - | - | |
venv | Directory | - | - | |
wsgiref | Directory | - | - | |
xml | Directory | - | - | |
xmlrpc | Directory | - | - | |
__future__.py | File | 4584 bytes | April 17 2024 16:58:21. | |
__phello__.foo.py | File | 64 bytes | April 17 2024 16:58:20. | |
_compat_pickle.py | File | 4338 bytes | April 17 2024 16:58:19. | |
_dummy_thread.py | File | 4769 bytes | April 17 2024 16:58:20. | |
_markupbase.py | File | 14598 bytes | April 17 2024 16:58:15. | |
_osx_support.py | File | 18855 bytes | April 17 2024 16:58:20. | |
_pyio.py | File | 72905 bytes | April 17 2024 16:58:17. | |
_strptime.py | File | 21674 bytes | April 17 2024 16:58:20. | |
_sysconfigdata.py | File | 22842 bytes | April 17 2024 16:58:20. | |
_threading_local.py | File | 7410 bytes | April 17 2024 16:58:15. | |
_weakrefset.py | File | 5705 bytes | April 17 2024 16:58:14. | |
abc.py | File | 8057 bytes | April 17 2024 16:58:15. | |
aifc.py | File | 31054 bytes | April 17 2024 16:58:21. | |
antigravity.py | File | 475 bytes | April 17 2024 16:58:16. | |
argparse.py | File | 89069 bytes | April 17 2024 16:58:20. | |
ast.py | File | 12142 bytes | April 17 2024 16:58:20. | |
asynchat.py | File | 11588 bytes | April 17 2024 16:58:19. | |
asyncore.py | File | 20753 bytes | April 17 2024 16:58:21. | |
base64.py | File | 13986 bytes | April 17 2024 16:58:17. | |
bdb.py | File | 21894 bytes | April 17 2024 16:58:19. | |
binhex.py | File | 13708 bytes | April 17 2024 16:58:14. | |
bisect.py | File | 2595 bytes | April 17 2024 16:58:13. | |
bz2.py | File | 18473 bytes | April 17 2024 16:58:20. | |
cProfile.py | File | 6361 bytes | April 17 2024 16:58:14. | |
calendar.py | File | 22940 bytes | April 17 2024 16:58:20. | |
cgi.py | File | 35554 bytes | April 17 2024 16:58:20. | |
cgitb.py | File | 12041 bytes | April 17 2024 16:58:21. | |
chunk.py | File | 5377 bytes | April 17 2024 16:58:17. | |
cmd.py | File | 14860 bytes | April 17 2024 16:58:14. | |
code.py | File | 10030 bytes | April 17 2024 16:58:16. | |
codecs.py | File | 35956 bytes | April 17 2024 16:58:15. | |
codeop.py | File | 5994 bytes | April 17 2024 16:58:14. | |
colorsys.py | File | 3691 bytes | April 17 2024 16:58:15. | |
compileall.py | File | 9743 bytes | April 17 2024 16:58:14. | |
configparser.py | File | 49437 bytes | April 17 2024 16:58:15. | |
contextlib.py | File | 9125 bytes | April 17 2024 16:58:14. | |
copy.py | File | 8991 bytes | April 17 2024 16:58:15. | |
copyreg.py | File | 6611 bytes | April 17 2024 16:58:20. | |
crypt.py | File | 1879 bytes | April 17 2024 16:58:14. | |
csv.py | File | 16185 bytes | April 17 2024 16:58:15. | |
datetime.py | File | 74954 bytes | April 17 2024 16:58:21. | |
decimal.py | File | 228558 bytes | April 17 2024 16:58:19. | |
difflib.py | File | 82519 bytes | April 17 2024 16:58:17. | |
dis.py | File | 10134 bytes | April 17 2024 16:58:15. | |
doctest.py | File | 102933 bytes | April 17 2024 16:58:15. | |
dummy_threading.py | File | 2815 bytes | April 17 2024 16:58:14. | |
filecmp.py | File | 9597 bytes | April 17 2024 16:58:15. | |
fileinput.py | File | 14256 bytes | April 17 2024 16:58:17. | |
fnmatch.py | File | 3163 bytes | April 17 2024 16:58:15. | |
formatter.py | File | 14930 bytes | April 17 2024 16:58:15. | |
fractions.py | File | 23033 bytes | April 17 2024 16:58:14. | |
ftplib.py | File | 40253 bytes | April 17 2024 16:58:15. | |
functools.py | File | 13596 bytes | April 17 2024 16:58:21. | |
genericpath.py | File | 3093 bytes | April 17 2024 16:58:21. | |
getopt.py | File | 7488 bytes | April 17 2024 16:58:20. | |
getpass.py | File | 5793 bytes | April 17 2024 16:58:14. | |
gettext.py | File | 20637 bytes | April 17 2024 16:58:20. | |
glob.py | File | 2838 bytes | April 17 2024 16:58:14. | |
gzip.py | File | 24403 bytes | April 17 2024 16:58:20. | |
hashlib.py | File | 6193 bytes | April 17 2024 16:58:21. | |
heapq.py | File | 17997 bytes | April 17 2024 16:58:13. | |
hmac.py | File | 4440 bytes | April 17 2024 16:58:17. | |
imaplib.py | File | 50111 bytes | April 17 2024 16:58:20. | |
imghdr.py | File | 3528 bytes | April 17 2024 16:58:20. | |
imp.py | File | 9727 bytes | April 17 2024 16:58:15. | |
inspect.py | File | 78960 bytes | April 17 2024 16:58:19. | |
io.py | File | 3280 bytes | April 17 2024 16:58:15. | |
ipaddress.py | File | 70303 bytes | April 17 2024 16:58:20. | |
keyword.py | File | 2060 bytes | April 17 2024 16:58:20. | |
linecache.py | File | 3864 bytes | April 17 2024 16:58:16. | |
locale.py | File | 93215 bytes | April 17 2024 16:58:19. | |
lzma.py | File | 17454 bytes | April 17 2024 16:58:20. | |
macpath.py | File | 5617 bytes | April 17 2024 16:58:15. | |
macurl2path.py | File | 2732 bytes | April 17 2024 16:58:15. | |
mailbox.py | File | 79093 bytes | April 17 2024 16:58:19. | |
mailcap.py | File | 7437 bytes | April 17 2024 16:58:14. | |
mimetypes.py | File | 20735 bytes | April 17 2024 16:58:19. | |
modulefinder.py | File | 23198 bytes | April 17 2024 16:58:14. | |
netrc.py | File | 5747 bytes | April 17 2024 16:58:17. | |
nntplib.py | File | 42786 bytes | April 17 2024 16:58:13. | |
ntpath.py | File | 20437 bytes | April 17 2024 16:58:14. | |
nturl2path.py | File | 2396 bytes | April 17 2024 16:58:20. | |
numbers.py | File | 10398 bytes | April 17 2024 16:58:20. | |
opcode.py | File | 5098 bytes | April 17 2024 16:58:21. | |
optparse.py | File | 60346 bytes | April 17 2024 16:58:20. | |
os.py | File | 34779 bytes | April 17 2024 16:58:14. | |
os2emxpath.py | File | 4659 bytes | April 17 2024 16:58:15. | |
pdb.py | File | 60653 bytes | April 17 2024 16:58:16. | |
pickle.py | File | 47858 bytes | April 17 2024 16:58:17. | |
pickletools.py | File | 81349 bytes | April 17 2024 16:58:15. | |
pipes.py | File | 8916 bytes | April 17 2024 16:58:20. | |
pkgutil.py | File | 21539 bytes | April 17 2024 16:58:15. | |
platform.py | File | 50742 bytes | April 17 2024 16:58:15. | |
plistlib.py | File | 14777 bytes | April 17 2024 16:58:13. | |
poplib.py | File | 11372 bytes | April 17 2024 16:58:13. | |
posixpath.py | File | 14254 bytes | April 17 2024 16:58:16. | |
pprint.py | File | 12700 bytes | April 17 2024 16:58:15. | |
profile.py | File | 21448 bytes | April 17 2024 16:58:17. | |
pstats.py | File | 26372 bytes | April 17 2024 16:58:14. | |
pty.py | File | 5055 bytes | April 17 2024 16:58:14. | |
py_compile.py | File | 6717 bytes | April 17 2024 16:58:19. | |
pyclbr.py | File | 13438 bytes | April 17 2024 16:58:13. | |
pydoc.py | File | 101644 bytes | April 17 2024 16:58:15. | |
queue.py | File | 8835 bytes | April 17 2024 16:58:20. | |
quopri.py | File | 7315 bytes | April 17 2024 16:58:20. | |
random.py | File | 25660 bytes | April 17 2024 16:58:14. | |
re.py | File | 14973 bytes | April 17 2024 16:58:17. | |
reprlib.py | File | 5110 bytes | April 17 2024 16:58:15. | |
rlcompleter.py | File | 5526 bytes | April 17 2024 16:58:21. | |
runpy.py | File | 10413 bytes | April 17 2024 16:58:14. | |
sched.py | File | 6399 bytes | April 17 2024 16:58:19. | |
shelve.py | File | 8243 bytes | April 17 2024 16:58:20. | |
shlex.py | File | 11502 bytes | April 17 2024 16:58:21. | |
shutil.py | File | 39147 bytes | April 17 2024 16:58:20. | |
site.py | File | 21971 bytes | April 17 2024 16:58:19. | |
smtpd.py | File | 30207 bytes | April 17 2024 16:58:16. | |
smtplib.py | File | 38021 bytes | April 17 2024 16:58:14. | |
sndhdr.py | File | 6219 bytes | April 17 2024 16:58:20. | |
socket.py | File | 14913 bytes | April 17 2024 16:58:20. | |
socketserver.py | File | 24196 bytes | April 17 2024 16:58:21. | |
sre_compile.py | File | 16345 bytes | April 17 2024 16:58:14. | |
sre_constants.py | File | 7231 bytes | April 17 2024 16:58:14. | |
sre_parse.py | File | 30212 bytes | April 17 2024 16:58:16. | |
ssl.py | File | 24478 bytes | April 17 2024 16:58:19. | |
stat.py | File | 4304 bytes | April 17 2024 16:58:19. | |
string.py | File | 9410 bytes | April 17 2024 16:58:20. | |
stringprep.py | File | 12917 bytes | April 17 2024 16:58:17. | |
struct.py | File | 238 bytes | April 17 2024 16:58:16. | |
subprocess.py | File | 67578 bytes | April 17 2024 16:58:14. | |
sunau.py | File | 17523 bytes | April 17 2024 16:58:15. | |
symbol.py | File | 2051 bytes | April 17 2024 16:58:14. | |
symtable.py | File | 7383 bytes | April 17 2024 16:58:20. | |
sysconfig.py | File | 25174 bytes | April 17 2024 16:58:20. | |
tabnanny.py | File | 11410 bytes | April 17 2024 16:58:20. | |
tarfile.py | File | 88864 bytes | April 17 2024 16:58:15. | |
telnetlib.py | File | 27349 bytes | April 17 2024 16:58:15. | |
tempfile.py | File | 23013 bytes | April 17 2024 16:58:14. | |
textwrap.py | File | 16488 bytes | April 17 2024 16:58:14. | |
this.py | File | 1003 bytes | April 17 2024 16:58:17. | |
threading.py | File | 45641 bytes | April 17 2024 16:58:19. | |
timeit.py | File | 12395 bytes | April 17 2024 16:58:15. | |
token.py | File | 3034 bytes | April 17 2024 16:58:14. | |
tokenize.py | File | 24876 bytes | April 17 2024 16:58:20. | |
trace.py | File | 31487 bytes | April 17 2024 16:58:13. | |
traceback.py | File | 11982 bytes | April 17 2024 16:58:20. | |
tty.py | File | 879 bytes | April 17 2024 16:58:13. | |
types.py | File | 3167 bytes | April 17 2024 16:58:14. | |
uu.py | File | 6766 bytes | April 17 2024 16:58:14. | |
uuid.py | File | 22349 bytes | April 17 2024 16:58:15. | |
warnings.py | File | 13825 bytes | April 17 2024 16:58:15. | |
wave.py | File | 18579 bytes | April 17 2024 16:58:15. | |
weakref.py | File | 11495 bytes | April 17 2024 16:58:19. | |
webbrowser.py | File | 22913 bytes | April 17 2024 16:58:20. | |
xdrlib.py | File | 5381 bytes | April 17 2024 16:58:21. | |
zipfile.py | File | 66424 bytes | April 17 2024 16:58:21. |
"""Shared OS X support functions.""" import os import re import sys __all__ = [ 'compiler_fixup', 'customize_config_vars', 'customize_compiler', 'get_platform_osx', ] # configuration variables that may contain universal build flags, # like "-arch" or "-isdkroot", that may need customization for # the user environment _UNIVERSAL_CONFIG_VARS = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS', 'BASECFLAGS', 'BLDSHARED', 'LDSHARED', 'CC', 'CXX', 'PY_CFLAGS', 'PY_LDFLAGS', 'PY_CPPFLAGS', 'PY_CORE_CFLAGS') # configuration variables that may contain compiler calls _COMPILER_CONFIG_VARS = ('BLDSHARED', 'LDSHARED', 'CC', 'CXX') # prefix added to original configuration variable names _INITPRE = '_OSX_SUPPORT_INITIAL_' def _find_executable(executable, path=None): """Tries to find 'executable' in the directories listed in 'path'. A string listing directories separated by 'os.pathsep'; defaults to os.environ['PATH']. Returns the complete filename or None if not found. """ if path is None: path = os.environ['PATH'] paths = path.split(os.pathsep) base, ext = os.path.splitext(executable) if (sys.platform == 'win32' or os.name == 'os2') and (ext != '.exe'): executable = executable + '.exe' if not os.path.isfile(executable): for p in paths: f = os.path.join(p, executable) if os.path.isfile(f): # the file exists, we have a shot at spawn working return f return None else: return executable def _read_output(commandstring): """Output from successful command execution or None""" # Similar to os.popen(commandstring, "r").read(), # but without actually using os.popen because that # function is not usable during python bootstrap. # tempfile is also not available then. import contextlib try: import tempfile fp = tempfile.NamedTemporaryFile() except ImportError: fp = open("/tmp/_osx_support.%s"%( os.getpid(),), "w+b") with contextlib.closing(fp) as fp: cmd = "%s 2>/dev/null >'%s'" % (commandstring, fp.name) return fp.read().decode('utf-8').strip() if not os.system(cmd) else None def _find_build_tool(toolname): """Find a build tool on current path or using xcrun""" return (_find_executable(toolname) or _read_output("/usr/bin/xcrun -find %s" % (toolname,)) or '' ) _SYSTEM_VERSION = None def _get_system_version(): """Return the OS X system version as a string""" # Reading this plist is a documented way to get the system # version (see the documentation for the Gestalt Manager) # We avoid using platform.mac_ver to avoid possible bootstrap issues during # the build of Python itself (distutils is used to build standard library # extensions). global _SYSTEM_VERSION if _SYSTEM_VERSION is None: _SYSTEM_VERSION = '' try: f = open('/System/Library/CoreServices/SystemVersion.plist') except IOError: # We're on a plain darwin box, fall back to the default # behaviour. pass else: try: m = re.search(r'<key>ProductUserVisibleVersion</key>\s*' r'<string>(.*?)</string>', f.read()) finally: f.close() if m is not None: _SYSTEM_VERSION = '.'.join(m.group(1).split('.')[:2]) # else: fall back to the default behaviour return _SYSTEM_VERSION def _remove_original_values(_config_vars): """Remove original unmodified values for testing""" # This is needed for higher-level cross-platform tests of get_platform. for k in list(_config_vars): if k.startswith(_INITPRE): del _config_vars[k] def _save_modified_value(_config_vars, cv, newvalue): """Save modified and original unmodified value of configuration var""" oldvalue = _config_vars.get(cv, '') if (oldvalue != newvalue) and (_INITPRE + cv not in _config_vars): _config_vars[_INITPRE + cv] = oldvalue _config_vars[cv] = newvalue def _supports_universal_builds(): """Returns True if universal builds are supported on this system""" # As an approximation, we assume that if we are running on 10.4 or above, # then we are running with an Xcode environment that supports universal # builds, in particular -isysroot and -arch arguments to the compiler. This # is in support of allowing 10.4 universal builds to run on 10.3.x systems. osx_version = _get_system_version() if osx_version: try: osx_version = tuple(int(i) for i in osx_version.split('.')) except ValueError: osx_version = '' return bool(osx_version >= (10, 4)) if osx_version else False def _find_appropriate_compiler(_config_vars): """Find appropriate C compiler for extension module builds""" # Issue #13590: # The OSX location for the compiler varies between OSX # (or rather Xcode) releases. With older releases (up-to 10.5) # the compiler is in /usr/bin, with newer releases the compiler # can only be found inside Xcode.app if the "Command Line Tools" # are not installed. # # Futhermore, the compiler that can be used varies between # Xcode releases. Up to Xcode 4 it was possible to use 'gcc-4.2' # as the compiler, after that 'clang' should be used because # gcc-4.2 is either not present, or a copy of 'llvm-gcc' that # miscompiles Python. # skip checks if the compiler was overriden with a CC env variable if 'CC' in os.environ: return _config_vars # The CC config var might contain additional arguments. # Ignore them while searching. cc = oldcc = _config_vars['CC'].split()[0] if not _find_executable(cc): # Compiler is not found on the shell search PATH. # Now search for clang, first on PATH (if the Command LIne # Tools have been installed in / or if the user has provided # another location via CC). If not found, try using xcrun # to find an uninstalled clang (within a selected Xcode). # NOTE: Cannot use subprocess here because of bootstrap # issues when building Python itself (and os.popen is # implemented on top of subprocess and is therefore not # usable as well) cc = _find_build_tool('clang') elif os.path.basename(cc).startswith('gcc'): # Compiler is GCC, check if it is LLVM-GCC data = _read_output("'%s' --version" % (cc.replace("'", "'\"'\"'"),)) if 'llvm-gcc' in data: # Found LLVM-GCC, fall back to clang cc = _find_build_tool('clang') if not cc: raise SystemError( "Cannot locate working compiler") if cc != oldcc: # Found a replacement compiler. # Modify config vars using new compiler, if not already explicitly # overriden by an env variable, preserving additional arguments. for cv in _COMPILER_CONFIG_VARS: if cv in _config_vars and cv not in os.environ: cv_split = _config_vars[cv].split() cv_split[0] = cc if cv != 'CXX' else cc + '++' _save_modified_value(_config_vars, cv, ' '.join(cv_split)) return _config_vars def _remove_universal_flags(_config_vars): """Remove all universal build arguments from config vars""" for cv in _UNIVERSAL_CONFIG_VARS: # Do not alter a config var explicitly overriden by env var if cv in _config_vars and cv not in os.environ: flags = _config_vars[cv] flags = re.sub('-arch\s+\w+\s', ' ', flags, re.ASCII) flags = re.sub('-isysroot [^ \t]*', ' ', flags) _save_modified_value(_config_vars, cv, flags) return _config_vars def _remove_unsupported_archs(_config_vars): """Remove any unsupported archs from config vars""" # Different Xcode releases support different sets for '-arch' # flags. In particular, Xcode 4.x no longer supports the # PPC architectures. # # This code automatically removes '-arch ppc' and '-arch ppc64' # when these are not supported. That makes it possible to # build extensions on OSX 10.7 and later with the prebuilt # 32-bit installer on the python.org website. # skip checks if the compiler was overriden with a CC env variable if 'CC' in os.environ: return _config_vars if re.search('-arch\s+ppc', _config_vars['CFLAGS']) is not None: # NOTE: Cannot use subprocess here because of bootstrap # issues when building Python itself status = os.system( """echo 'int main{};' | """ """'%s' -c -arch ppc -x c -o /dev/null /dev/null 2>/dev/null""" %(_config_vars['CC'].replace("'", "'\"'\"'"),)) if status: # The compile failed for some reason. Because of differences # across Xcode and compiler versions, there is no reliable way # to be sure why it failed. Assume here it was due to lack of # PPC support and remove the related '-arch' flags from each # config variables not explicitly overriden by an environment # variable. If the error was for some other reason, we hope the # failure will show up again when trying to compile an extension # module. for cv in _UNIVERSAL_CONFIG_VARS: if cv in _config_vars and cv not in os.environ: flags = _config_vars[cv] flags = re.sub('-arch\s+ppc\w*\s', ' ', flags) _save_modified_value(_config_vars, cv, flags) return _config_vars def _override_all_archs(_config_vars): """Allow override of all archs with ARCHFLAGS env var""" # NOTE: This name was introduced by Apple in OSX 10.5 and # is used by several scripting languages distributed with # that OS release. if 'ARCHFLAGS' in os.environ: arch = os.environ['ARCHFLAGS'] for cv in _UNIVERSAL_CONFIG_VARS: if cv in _config_vars and '-arch' in _config_vars[cv]: flags = _config_vars[cv] flags = re.sub('-arch\s+\w+\s', ' ', flags) flags = flags + ' ' + arch _save_modified_value(_config_vars, cv, flags) return _config_vars def _check_for_unavailable_sdk(_config_vars): """Remove references to any SDKs not available""" # If we're on OSX 10.5 or later and the user tries to # compile an extension using an SDK that is not present # on the current machine it is better to not use an SDK # than to fail. This is particularly important with # the standalone Command Line Tools alternative to a # full-blown Xcode install since the CLT packages do not # provide SDKs. If the SDK is not present, it is assumed # that the header files and dev libs have been installed # to /usr and /System/Library by either a standalone CLT # package or the CLT component within Xcode. cflags = _config_vars.get('CFLAGS', '') m = re.search(r'-isysroot\s+(\S+)', cflags) if m is not None: sdk = m.group(1) if not os.path.exists(sdk): for cv in _UNIVERSAL_CONFIG_VARS: # Do not alter a config var explicitly overriden by env var if cv in _config_vars and cv not in os.environ: flags = _config_vars[cv] flags = re.sub(r'-isysroot\s+\S+(?:\s|$)', ' ', flags) _save_modified_value(_config_vars, cv, flags) return _config_vars def compiler_fixup(compiler_so, cc_args): """ This function will strip '-isysroot PATH' and '-arch ARCH' from the compile flags if the user has specified one them in extra_compile_flags. This is needed because '-arch ARCH' adds another architecture to the build, without a way to remove an architecture. Furthermore GCC will barf if multiple '-isysroot' arguments are present. """ stripArch = stripSysroot = False compiler_so = list(compiler_so) if not _supports_universal_builds(): # OSX before 10.4.0, these don't support -arch and -isysroot at # all. stripArch = stripSysroot = True else: stripArch = '-arch' in cc_args stripSysroot = '-isysroot' in cc_args if stripArch or 'ARCHFLAGS' in os.environ: while True: try: index = compiler_so.index('-arch') # Strip this argument and the next one: del compiler_so[index:index+2] except ValueError: break if 'ARCHFLAGS' in os.environ and not stripArch: # User specified different -arch flags in the environ, # see also distutils.sysconfig compiler_so = compiler_so + os.environ['ARCHFLAGS'].split() if stripSysroot: while True: try: index = compiler_so.index('-isysroot') # Strip this argument and the next one: del compiler_so[index:index+2] except ValueError: break # Check if the SDK that is used during compilation actually exists, # the universal build requires the usage of a universal SDK and not all # users have that installed by default. sysroot = None if '-isysroot' in cc_args: idx = cc_args.index('-isysroot') sysroot = cc_args[idx+1] elif '-isysroot' in compiler_so: idx = compiler_so.index('-isysroot') sysroot = compiler_so[idx+1] if sysroot and not os.path.isdir(sysroot): from distutils import log log.warn("Compiling with an SDK that doesn't seem to exist: %s", sysroot) log.warn("Please check your Xcode installation") return compiler_so def customize_config_vars(_config_vars): """Customize Python build configuration variables. Called internally from sysconfig with a mutable mapping containing name/value pairs parsed from the configured makefile used to build this interpreter. Returns the mapping updated as needed to reflect the environment in which the interpreter is running; in the case of a Python from a binary installer, the installed environment may be very different from the build environment, i.e. different OS levels, different built tools, different available CPU architectures. This customization is performed whenever distutils.sysconfig.get_config_vars() is first called. It may be used in environments where no compilers are present, i.e. when installing pure Python dists. Customization of compiler paths and detection of unavailable archs is deferred until the first extension module build is requested (in distutils.sysconfig.customize_compiler). Currently called from distutils.sysconfig """ if not _supports_universal_builds(): # On Mac OS X before 10.4, check if -arch and -isysroot # are in CFLAGS or LDFLAGS and remove them if they are. # This is needed when building extensions on a 10.3 system # using a universal build of python. _remove_universal_flags(_config_vars) # Allow user to override all archs with ARCHFLAGS env var _override_all_archs(_config_vars) # Remove references to sdks that are not found _check_for_unavailable_sdk(_config_vars) return _config_vars def customize_compiler(_config_vars): """Customize compiler path and configuration variables. This customization is performed when the first extension module build is requested in distutils.sysconfig.customize_compiler). """ # Find a compiler to use for extension module builds _find_appropriate_compiler(_config_vars) # Remove ppc arch flags if not supported here _remove_unsupported_archs(_config_vars) # Allow user to override all archs with ARCHFLAGS env var _override_all_archs(_config_vars) return _config_vars def get_platform_osx(_config_vars, osname, release, machine): """Filter values for get_platform()""" # called from get_platform() in sysconfig and distutils.util # # For our purposes, we'll assume that the system version from # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set # to. This makes the compatibility story a bit more sane because the # machine is going to compile and link as if it were # MACOSX_DEPLOYMENT_TARGET. macver = _config_vars.get('MACOSX_DEPLOYMENT_TARGET', '') macrelease = _get_system_version() or macver macver = macver or macrelease if macver: release = macver osname = "macosx" # Use the original CFLAGS value, if available, so that we # return the same machine type for the platform string. # Otherwise, distutils may consider this a cross-compiling # case and disallow installs. cflags = _config_vars.get(_INITPRE+'CFLAGS', _config_vars.get('CFLAGS', '')) if ((macrelease + '.') >= '10.4.' and '-arch' in cflags.strip()): # The universal build will build fat binaries, but not on # systems before 10.4 machine = 'fat' archs = re.findall('-arch\s+(\S+)', cflags) archs = tuple(sorted(set(archs))) if len(archs) == 1: machine = archs[0] elif archs == ('i386', 'ppc'): machine = 'fat' elif archs == ('i386', 'x86_64'): machine = 'intel' elif archs == ('i386', 'ppc', 'x86_64'): machine = 'fat3' elif archs == ('ppc64', 'x86_64'): machine = 'fat64' elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): machine = 'universal' else: raise ValueError( "Don't know machine value for archs=%r" % (archs,)) elif machine == 'i386': # On OSX the machine type returned by uname is always the # 32-bit variant, even if the executable architecture is # the 64-bit variant if sys.maxsize >= 2**32: machine = 'x86_64' elif machine in ('PowerPC', 'Power_Macintosh'): # Pick a sane name for the PPC architecture. # See 'i386' case if sys.maxsize >= 2**32: machine = 'ppc64' else: machine = 'ppc' return (osname, release, machine)
SILENT KILLER Tool