home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / distutils / sysconfig.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  11.3 KB  |  415 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. __revision__ = '$Id: sysconfig.py 69486 2009-02-10 12:33:42Z tarek.ziade $'
  5. import os
  6. import re
  7. import string
  8. import sys
  9. from distutils.errors import DistutilsPlatformError
  10. PREFIX = os.path.normpath(sys.prefix)
  11. EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
  12. project_base = os.path.dirname(os.path.abspath(sys.executable))
  13. if os.name == 'nt' and 'pcbuild' in project_base[-8:].lower():
  14.     project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
  15.  
  16. if os.name == 'nt' and '\\pc\\v' in project_base[-10:].lower():
  17.     project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, os.path.pardir))
  18.  
  19. if os.name == 'nt' and '\\pcbuild\\amd64' in project_base[-14:].lower():
  20.     project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, os.path.pardir))
  21.  
  22.  
  23. def _python_build():
  24.     for fn in ('Setup.dist', 'Setup.local'):
  25.         if os.path.isfile(os.path.join(project_base, 'Modules', fn)):
  26.             return True
  27.     
  28.     return False
  29.  
  30. python_build = _python_build()
  31.  
  32. def get_python_version():
  33.     return sys.version[:3]
  34.  
  35.  
  36. def get_python_inc(plat_specific = 0, prefix = None):
  37.     if prefix is None:
  38.         if not plat_specific or EXEC_PREFIX:
  39.             pass
  40.         prefix = PREFIX
  41.     
  42.     if os.name == 'posix':
  43.         if python_build:
  44.             base = os.path.dirname(os.path.abspath(sys.executable))
  45.             if plat_specific:
  46.                 inc_dir = base
  47.             else:
  48.                 inc_dir = os.path.join(base, 'Include')
  49.                 if not os.path.exists(inc_dir):
  50.                     inc_dir = os.path.join(os.path.dirname(base), 'Include')
  51.                 
  52.             return inc_dir
  53.         return os.path.join(prefix, 'include', 'python' + get_python_version())
  54.     if os.name == 'nt':
  55.         return os.path.join(prefix, 'include')
  56.     if os.name == 'mac':
  57.         if plat_specific:
  58.             return os.path.join(prefix, 'Mac', 'Include')
  59.         return os.path.join(prefix, 'Include')
  60.     os.name == 'mac'
  61.     if os.name == 'os2':
  62.         return os.path.join(prefix, 'Include')
  63.     raise DistutilsPlatformError("I don't know where Python installs its C header files on platform '%s'" % os.name)
  64.  
  65.  
  66. def get_python_lib(plat_specific = 0, standard_lib = 0, prefix = None):
  67.     if prefix is None:
  68.         if not plat_specific or EXEC_PREFIX:
  69.             pass
  70.         prefix = PREFIX
  71.     
  72.     if os.name == 'posix':
  73.         libpython = os.path.join(prefix, 'lib', 'python' + get_python_version())
  74.         if standard_lib:
  75.             return libpython
  76.         return os.path.join(libpython, 'site-packages')
  77.     os.name == 'posix'
  78.     if os.name == 'nt':
  79.         if standard_lib:
  80.             return os.path.join(prefix, 'Lib')
  81.         if get_python_version() < '2.2':
  82.             return prefix
  83.         return os.path.join(prefix, 'Lib', 'site-packages')
  84.     os.name == 'nt'
  85.     if os.name == 'mac':
  86.         if plat_specific:
  87.             if standard_lib:
  88.                 return os.path.join(prefix, 'Lib', 'lib-dynload')
  89.             return os.path.join(prefix, 'Lib', 'site-packages')
  90.         plat_specific
  91.         if standard_lib:
  92.             return os.path.join(prefix, 'Lib')
  93.         return os.path.join(prefix, 'Lib', 'site-packages')
  94.     os.name == 'mac'
  95.     if os.name == 'os2':
  96.         if standard_lib:
  97.             return os.path.join(prefix, 'Lib')
  98.         return os.path.join(prefix, 'Lib', 'site-packages')
  99.     os.name == 'os2'
  100.     raise DistutilsPlatformError("I don't know where Python installs its library on platform '%s'" % os.name)
  101.  
  102.  
  103. def customize_compiler(compiler):
  104.     if compiler.compiler_type == 'unix':
  105.         (cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SO')
  106.         if 'CC' in os.environ:
  107.             cc = os.environ['CC']
  108.         
  109.         if 'CXX' in os.environ:
  110.             cxx = os.environ['CXX']
  111.         
  112.         if 'LDSHARED' in os.environ:
  113.             ldshared = os.environ['LDSHARED']
  114.         
  115.         if 'CPP' in os.environ:
  116.             cpp = os.environ['CPP']
  117.         else:
  118.             cpp = cc + ' -E'
  119.         if 'LDFLAGS' in os.environ:
  120.             ldshared = ldshared + ' ' + os.environ['LDFLAGS']
  121.         
  122.         if 'CFLAGS' in os.environ:
  123.             cflags = opt + ' ' + os.environ['CFLAGS']
  124.             ldshared = ldshared + ' ' + os.environ['CFLAGS']
  125.         
  126.         if 'CPPFLAGS' in os.environ:
  127.             cpp = cpp + ' ' + os.environ['CPPFLAGS']
  128.             cflags = cflags + ' ' + os.environ['CPPFLAGS']
  129.             ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
  130.         
  131.         cc_cmd = cc + ' ' + cflags
  132.         compiler.set_executables(preprocessor = cpp, compiler = cc_cmd, compiler_so = cc_cmd + ' ' + ccshared, compiler_cxx = cxx, linker_so = ldshared, linker_exe = cc)
  133.         compiler.shared_lib_extension = so_ext
  134.     
  135.  
  136.  
  137. def get_config_h_filename():
  138.     if python_build:
  139.         if os.name == 'nt':
  140.             inc_dir = os.path.join(project_base, 'PC')
  141.         else:
  142.             inc_dir = project_base
  143.     else:
  144.         inc_dir = get_python_inc(plat_specific = 1)
  145.     if get_python_version() < '2.2':
  146.         config_h = 'config.h'
  147.     else:
  148.         config_h = 'pyconfig.h'
  149.     return os.path.join(inc_dir, config_h)
  150.  
  151.  
  152. def get_makefile_filename():
  153.     if python_build:
  154.         return os.path.join(os.path.dirname(sys.executable), 'Makefile')
  155.     lib_dir = get_python_lib(plat_specific = 1, standard_lib = 1)
  156.     return os.path.join(lib_dir, 'config', 'Makefile')
  157.  
  158.  
  159. def parse_config_h(fp, g = None):
  160.     if g is None:
  161.         g = { }
  162.     
  163.     define_rx = re.compile('#define ([A-Z][A-Za-z0-9_]+) (.*)\n')
  164.     undef_rx = re.compile('/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n')
  165.     while None:
  166.         line = fp.readline()
  167.         if not line:
  168.             break
  169.         
  170.         m = define_rx.match(line)
  171.         if m:
  172.             (n, v) = m.group(1, 2)
  173.             
  174.             try:
  175.                 v = int(v)
  176.             except ValueError:
  177.                 pass
  178.  
  179.             g[n] = v
  180.             continue
  181.         m = undef_rx.match(line)
  182.         if m:
  183.             g[m.group(1)] = 0
  184.             continue
  185.         continue
  186.         return g
  187.  
  188. _variable_rx = re.compile('([a-zA-Z][a-zA-Z0-9_]+)\\s*=\\s*(.*)')
  189. _findvar1_rx = re.compile('\\$\\(([A-Za-z][A-Za-z0-9_]*)\\)')
  190. _findvar2_rx = re.compile('\\${([A-Za-z][A-Za-z0-9_]*)}')
  191.  
  192. def parse_makefile(fn, g = None):
  193.     TextFile = TextFile
  194.     import distutils.text_file
  195.     fp = TextFile(fn, strip_comments = 1, skip_blanks = 1, join_lines = 1)
  196.     if g is None:
  197.         g = { }
  198.     
  199.     done = { }
  200.     notdone = { }
  201.     while None:
  202.         line = fp.readline()
  203.         if line is None:
  204.             break
  205.         
  206.         m = _variable_rx.match(line)
  207.         if m:
  208.             (n, v) = m.group(1, 2)
  209.             v = string.strip(v)
  210.             if '$' in v:
  211.                 notdone[n] = v
  212.             else:
  213.                 
  214.                 try:
  215.                     v = int(v)
  216.                 except ValueError:
  217.                     pass
  218.  
  219.                 done[n] = v
  220.         continue
  221.         while notdone:
  222.             for name in notdone.keys():
  223.                 value = notdone[name]
  224.                 if not _findvar1_rx.search(value):
  225.                     pass
  226.                 m = _findvar2_rx.search(value)
  227.                 if m:
  228.                     n = m.group(1)
  229.                     found = True
  230.                     if n in done:
  231.                         item = str(done[n])
  232.                     elif n in notdone:
  233.                         found = False
  234.                     elif n in os.environ:
  235.                         item = os.environ[n]
  236.                     else:
  237.                         done[n] = item = ''
  238.                     if found:
  239.                         after = value[m.end():]
  240.                         value = value[:m.start()] + item + after
  241.                         if '$' in after:
  242.                             notdone[name] = value
  243.                         else:
  244.                             
  245.                             try:
  246.                                 value = int(value)
  247.                             except ValueError:
  248.                                 done[name] = string.strip(value)
  249.  
  250.                             done[name] = value
  251.                             del notdone[name]
  252.                     
  253.                 found
  254.                 del notdone[name]
  255.             
  256.         fp.close()
  257.         g.update(done)
  258.         return g
  259.  
  260.  
  261. def expand_makefile_vars(s, vars):
  262.     while not _findvar1_rx.search(s):
  263.         m = _findvar2_rx.search(s)
  264.         if m:
  265.             (beg, end) = m.span()
  266.             s = s[0:beg] + vars.get(m.group(1)) + s[end:]
  267.             continue
  268.     break
  269.     continue
  270.     return s
  271.  
  272. _config_vars = None
  273.  
  274. def _init_posix():
  275.     global _config_vars
  276.     g = { }
  277.     
  278.     try:
  279.         filename = get_makefile_filename()
  280.         parse_makefile(filename, g)
  281.     except IOError:
  282.         msg = None
  283.         my_msg = 'invalid Python installation: unable to open %s' % filename
  284.         if hasattr(msg, 'strerror'):
  285.             my_msg = my_msg + ' (%s)' % msg.strerror
  286.         
  287.         raise DistutilsPlatformError(my_msg)
  288.  
  289.     
  290.     try:
  291.         filename = get_config_h_filename()
  292.         parse_config_h(file(filename), g)
  293.     except IOError:
  294.         msg = None
  295.         my_msg = 'invalid Python installation: unable to open %s' % filename
  296.         if hasattr(msg, 'strerror'):
  297.             my_msg = my_msg + ' (%s)' % msg.strerror
  298.         
  299.         raise DistutilsPlatformError(my_msg)
  300.  
  301.     if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g:
  302.         cfg_target = g['MACOSX_DEPLOYMENT_TARGET']
  303.         cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '')
  304.         if cur_target == '':
  305.             cur_target = cfg_target
  306.             os.putenv('MACOSX_DEPLOYMENT_TARGET', cfg_target)
  307.         elif map(int, cfg_target.split('.')) > map(int, cur_target.split('.')):
  308.             my_msg = '$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure' % (cur_target, cfg_target)
  309.             raise DistutilsPlatformError(my_msg)
  310.         
  311.     
  312.     if python_build:
  313.         g['LDSHARED'] = g['BLDSHARED']
  314.     elif get_python_version() < '2.1':
  315.         if sys.platform == 'aix4':
  316.             python_lib = get_python_lib(standard_lib = 1)
  317.             ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix')
  318.             python_exp = os.path.join(python_lib, 'config', 'python.exp')
  319.             g['LDSHARED'] = '%s %s -bI:%s' % (ld_so_aix, g['CC'], python_exp)
  320.         elif sys.platform == 'beos':
  321.             python_lib = get_python_lib(standard_lib = 1)
  322.             linkerscript_path = string.split(g['LDSHARED'])[0]
  323.             linkerscript_name = os.path.basename(linkerscript_path)
  324.             linkerscript = os.path.join(python_lib, 'config', linkerscript_name)
  325.             g['LDSHARED'] = '%s -L%s/lib -lpython%s' % (linkerscript, PREFIX, get_python_version())
  326.         
  327.     
  328.     _config_vars = g
  329.  
  330.  
  331. def _init_nt():
  332.     global _config_vars
  333.     g = { }
  334.     g['LIBDEST'] = get_python_lib(plat_specific = 0, standard_lib = 1)
  335.     g['BINLIBDEST'] = get_python_lib(plat_specific = 1, standard_lib = 1)
  336.     g['INCLUDEPY'] = get_python_inc(plat_specific = 0)
  337.     g['SO'] = '.pyd'
  338.     g['EXE'] = '.exe'
  339.     g['VERSION'] = get_python_version().replace('.', '')
  340.     g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable))
  341.     _config_vars = g
  342.  
  343.  
  344. def _init_mac():
  345.     global _config_vars
  346.     g = { }
  347.     g['LIBDEST'] = get_python_lib(plat_specific = 0, standard_lib = 1)
  348.     g['BINLIBDEST'] = get_python_lib(plat_specific = 1, standard_lib = 1)
  349.     g['INCLUDEPY'] = get_python_inc(plat_specific = 0)
  350.     import MacOS
  351.     if not hasattr(MacOS, 'runtimemodel'):
  352.         g['SO'] = '.ppc.slb'
  353.     else:
  354.         g['SO'] = '.%s.slb' % MacOS.runtimemodel
  355.     g['install_lib'] = os.path.join(EXEC_PREFIX, 'Lib')
  356.     g['install_platlib'] = os.path.join(EXEC_PREFIX, 'Mac', 'Lib')
  357.     g['srcdir'] = ':'
  358.     _config_vars = g
  359.  
  360.  
  361. def _init_os2():
  362.     global _config_vars
  363.     g = { }
  364.     g['LIBDEST'] = get_python_lib(plat_specific = 0, standard_lib = 1)
  365.     g['BINLIBDEST'] = get_python_lib(plat_specific = 1, standard_lib = 1)
  366.     g['INCLUDEPY'] = get_python_inc(plat_specific = 0)
  367.     g['SO'] = '.pyd'
  368.     g['EXE'] = '.exe'
  369.     _config_vars = g
  370.  
  371.  
  372. def get_config_vars(*args):
  373.     global _config_vars
  374.     if _config_vars is None:
  375.         func = globals().get('_init_' + os.name)
  376.         if func:
  377.             func()
  378.         else:
  379.             _config_vars = { }
  380.         _config_vars['prefix'] = PREFIX
  381.         _config_vars['exec_prefix'] = EXEC_PREFIX
  382.         if sys.platform == 'darwin':
  383.             kernel_version = os.uname()[2]
  384.             major_version = int(kernel_version.split('.')[0])
  385.             if major_version < 8:
  386.                 for key in ('LDFLAGS', 'BASECFLAGS', 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
  387.                     flags = _config_vars[key]
  388.                     flags = re.sub('-arch\\s+\\w+\\s', ' ', flags)
  389.                     flags = re.sub('-isysroot [^ \t]*', ' ', flags)
  390.                     _config_vars[key] = flags
  391.                 
  392.             elif 'ARCHFLAGS' in os.environ:
  393.                 arch = os.environ['ARCHFLAGS']
  394.                 for key in ('LDFLAGS', 'BASECFLAGS', 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
  395.                     flags = _config_vars[key]
  396.                     flags = re.sub('-arch\\s+\\w+\\s', ' ', flags)
  397.                     flags = flags + ' ' + arch
  398.                     _config_vars[key] = flags
  399.                 
  400.             
  401.         
  402.     
  403.     if args:
  404.         vals = []
  405.         for name in args:
  406.             vals.append(_config_vars.get(name))
  407.         
  408.         return vals
  409.     return _config_vars
  410.  
  411.  
  412. def get_config_var(name):
  413.     return get_config_vars().get(name)
  414.  
  415.