home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Calibre / calibre-0.8.18.msi / file_262 / sysconfig.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-09-09  |  14.6 KB  |  542 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.7)
  3.  
  4. import sys
  5. import os
  6. from os.path import pardir, realpath
  7. _INSTALL_SCHEMES = {
  8.     'posix_prefix': {
  9.         'stdlib': '{base}/lib/python{py_version_short}',
  10.         'platstdlib': '{platbase}/lib/python{py_version_short}',
  11.         'purelib': '{base}/lib/python{py_version_short}/site-packages',
  12.         'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
  13.         'include': '{base}/include/python{py_version_short}',
  14.         'platinclude': '{platbase}/include/python{py_version_short}',
  15.         'scripts': '{base}/bin',
  16.         'data': '{base}' },
  17.     'posix_home': {
  18.         'stdlib': '{base}/lib/python',
  19.         'platstdlib': '{base}/lib/python',
  20.         'purelib': '{base}/lib/python',
  21.         'platlib': '{base}/lib/python',
  22.         'include': '{base}/include/python',
  23.         'platinclude': '{base}/include/python',
  24.         'scripts': '{base}/bin',
  25.         'data': '{base}' },
  26.     'nt': {
  27.         'stdlib': '{base}/Lib',
  28.         'platstdlib': '{base}/Lib',
  29.         'purelib': '{base}/Lib/site-packages',
  30.         'platlib': '{base}/Lib/site-packages',
  31.         'include': '{base}/Include',
  32.         'platinclude': '{base}/Include',
  33.         'scripts': '{base}/Scripts',
  34.         'data': '{base}' },
  35.     'os2': {
  36.         'stdlib': '{base}/Lib',
  37.         'platstdlib': '{base}/Lib',
  38.         'purelib': '{base}/Lib/site-packages',
  39.         'platlib': '{base}/Lib/site-packages',
  40.         'include': '{base}/Include',
  41.         'platinclude': '{base}/Include',
  42.         'scripts': '{base}/Scripts',
  43.         'data': '{base}' },
  44.     'os2_home': {
  45.         'stdlib': '{userbase}/lib/python{py_version_short}',
  46.         'platstdlib': '{userbase}/lib/python{py_version_short}',
  47.         'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
  48.         'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
  49.         'include': '{userbase}/include/python{py_version_short}',
  50.         'scripts': '{userbase}/bin',
  51.         'data': '{userbase}' },
  52.     'nt_user': {
  53.         'stdlib': '{userbase}/Python{py_version_nodot}',
  54.         'platstdlib': '{userbase}/Python{py_version_nodot}',
  55.         'purelib': '{userbase}/Python{py_version_nodot}/site-packages',
  56.         'platlib': '{userbase}/Python{py_version_nodot}/site-packages',
  57.         'include': '{userbase}/Python{py_version_nodot}/Include',
  58.         'scripts': '{userbase}/Scripts',
  59.         'data': '{userbase}' },
  60.     'posix_user': {
  61.         'stdlib': '{userbase}/lib/python{py_version_short}',
  62.         'platstdlib': '{userbase}/lib/python{py_version_short}',
  63.         'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
  64.         'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
  65.         'include': '{userbase}/include/python{py_version_short}',
  66.         'scripts': '{userbase}/bin',
  67.         'data': '{userbase}' },
  68.     'osx_framework_user': {
  69.         'stdlib': '{userbase}/lib/python',
  70.         'platstdlib': '{userbase}/lib/python',
  71.         'purelib': '{userbase}/lib/python/site-packages',
  72.         'platlib': '{userbase}/lib/python/site-packages',
  73.         'include': '{userbase}/include',
  74.         'scripts': '{userbase}/bin',
  75.         'data': '{userbase}' } }
  76. _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', 'scripts', 'data')
  77. _PY_VERSION = sys.version.split()[0]
  78. _PY_VERSION_SHORT = sys.version[:3]
  79. _PY_VERSION_SHORT_NO_DOT = _PY_VERSION[0] + _PY_VERSION[2]
  80. _PREFIX = os.path.normpath(sys.prefix)
  81. _EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
  82. _CONFIG_VARS = None
  83. _USER_BASE = None
  84.  
  85. def _safe_realpath(path):
  86.     
  87.     try:
  88.         return realpath(path)
  89.     except OSError:
  90.         return path
  91.  
  92.  
  93. if sys.executable:
  94.     _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable))
  95. else:
  96.     _PROJECT_BASE = _safe_realpath(os.getcwd())
  97. if os.name == 'nt' and 'pcbuild' in _PROJECT_BASE[-8:].lower():
  98.     _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir))
  99. if os.name == 'nt' and '\\pc\\v' in _PROJECT_BASE[-10:].lower():
  100.     _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
  101. if os.name == 'nt' and '\\pcbuild\\amd64' in _PROJECT_BASE[-14:].lower():
  102.     _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
  103.  
  104. def is_python_build():
  105.     for fn in ('Setup.dist', 'Setup.local'):
  106.         if os.path.isfile(os.path.join(_PROJECT_BASE, 'Modules', fn)):
  107.             return True
  108.     
  109.     return False
  110.  
  111. _PYTHON_BUILD = is_python_build()
  112. if _PYTHON_BUILD:
  113.     for scheme in ('posix_prefix', 'posix_home'):
  114.         _INSTALL_SCHEMES[scheme]['include'] = '{projectbase}/Include'
  115.         _INSTALL_SCHEMES[scheme]['platinclude'] = '{srcdir}'
  116.     
  117.  
  118. def _subst_vars(s, local_vars):
  119.     
  120.     try:
  121.         return s.format(**local_vars)
  122.     except KeyError:
  123.         
  124.         try:
  125.             return s.format(**os.environ)
  126.         except KeyError:
  127.             var = None
  128.             raise AttributeError('{%s}' % var)
  129.         
  130.  
  131.  
  132.  
  133.  
  134. def _extend_dict(target_dict, other_dict):
  135.     target_keys = target_dict.keys()
  136.     for key, value in other_dict.items():
  137.         if key in target_keys:
  138.             continue
  139.         target_dict[key] = value
  140.     
  141.  
  142.  
  143. def _expand_vars(scheme, vars):
  144.     res = { }
  145.     if vars is None:
  146.         vars = { }
  147.     _extend_dict(vars, get_config_vars())
  148.     for key, value in _INSTALL_SCHEMES[scheme].items():
  149.         if os.name in ('posix', 'nt'):
  150.             value = os.path.expanduser(value)
  151.         res[key] = os.path.normpath(_subst_vars(value, vars))
  152.     
  153.     return res
  154.  
  155.  
  156. def _get_default_scheme():
  157.     if os.name == 'posix':
  158.         return 'posix_prefix'
  159.     return None.name
  160.  
  161.  
  162. def _getuserbase():
  163.     env_base = os.environ.get('PYTHONUSERBASE', None)
  164.     
  165.     def joinuser(*args):
  166.         return os.path.expanduser(os.path.join(*args))
  167.  
  168.     if os.name == 'nt':
  169.         if not os.environ.get('APPDATA'):
  170.             pass
  171.         base = '~'
  172.         if env_base:
  173.             return env_base
  174.         return None(base, 'Python')
  175.     if None.platform == 'darwin':
  176.         framework = get_config_var('PYTHONFRAMEWORK')
  177.         if framework:
  178.             return joinuser('~', 'Library', framework, '%d.%d' % sys.version_info[:2])
  179.     if env_base:
  180.         return env_base
  181.     return None('~', '.local')
  182.  
  183.  
  184. def _parse_makefile(filename, vars = None):
  185.     import re
  186.     _variable_rx = re.compile('([a-zA-Z][a-zA-Z0-9_]+)\\s*=\\s*(.*)')
  187.     _findvar1_rx = re.compile('\\$\\(([A-Za-z][A-Za-z0-9_]*)\\)')
  188.     _findvar2_rx = re.compile('\\${([A-Za-z][A-Za-z0-9_]*)}')
  189.     if vars is None:
  190.         vars = { }
  191.     done = { }
  192.     notdone = { }
  193.     with open(filename) as f:
  194.         lines = f.readlines()
  195.     for line in lines:
  196.         if line.startswith('#') or line.strip() == '':
  197.             continue
  198.         m = _variable_rx.match(line)
  199.         if m:
  200.             (n, v) = m.group(1, 2)
  201.             v = v.strip()
  202.             tmpv = v.replace('$$', '')
  203.             if '$' in tmpv:
  204.                 notdone[n] = v
  205.             else:
  206.                 
  207.                 try:
  208.                     v = int(v)
  209.                 except ValueError:
  210.                     done[n] = v.replace('$$', '$')
  211.  
  212.                 done[n] = v
  213.     while notdone:
  214.         for name in notdone.keys():
  215.             value = notdone[name]
  216.             if not _findvar1_rx.search(value):
  217.                 pass
  218.             m = _findvar2_rx.search(value)
  219.             if m:
  220.                 n = m.group(1)
  221.                 found = True
  222.                 if n in done:
  223.                     item = str(done[n])
  224.                 elif n in notdone:
  225.                     found = False
  226.                 elif n in os.environ:
  227.                     item = os.environ[n]
  228.                 else:
  229.                     done[n] = item = ''
  230.                 if found:
  231.                     after = value[m.end():]
  232.                     value = value[:m.start()] + item + after
  233.                     if '$' in after:
  234.                         notdone[name] = value
  235.                     else:
  236.                         
  237.                         try:
  238.                             value = int(value)
  239.                         except ValueError:
  240.                             done[name] = value.strip()
  241.  
  242.                         done[name] = value
  243.                         del notdone[name]
  244.                 
  245.             del notdone[name]
  246.         
  247.     for k, v in done.items():
  248.         if isinstance(v, str):
  249.             done[k] = v.strip()
  250.             continue
  251.     vars.update(done)
  252.     return vars
  253.  
  254.  
  255. def _get_makefile_filename():
  256.     if _PYTHON_BUILD:
  257.         return os.path.join(_PROJECT_BASE, 'Makefile')
  258.     return None.path.join(get_path('stdlib'), 'config', 'Makefile')
  259.  
  260.  
  261. def _init_posix(vars):
  262.     makefile = _get_makefile_filename()
  263.     
  264.     try:
  265.         _parse_makefile(makefile, vars)
  266.     except IOError:
  267.         e = None
  268.         msg = 'invalid Python installation: unable to open %s' % makefile
  269.         if hasattr(e, 'strerror'):
  270.             msg = msg + ' (%s)' % e.strerror
  271.         raise IOError(msg)
  272.  
  273.     config_h = get_config_h_filename()
  274.     
  275.     try:
  276.         with open(config_h) as f:
  277.             parse_config_h(f, vars)
  278.     except IOError:
  279.         e = None
  280.         msg = 'invalid Python installation: unable to open %s' % config_h
  281.         if hasattr(e, 'strerror'):
  282.             msg = msg + ' (%s)' % e.strerror
  283.         raise IOError(msg)
  284.  
  285.     if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in vars:
  286.         cfg_target = vars['MACOSX_DEPLOYMENT_TARGET']
  287.         cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '')
  288.         if cur_target == '':
  289.             cur_target = cfg_target
  290.             os.putenv('MACOSX_DEPLOYMENT_TARGET', cfg_target)
  291.         elif map(int, cfg_target.split('.')) > map(int, cur_target.split('.')):
  292.             msg = '$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure' % (cur_target, cfg_target)
  293.             raise IOError(msg)
  294.         
  295.     if _PYTHON_BUILD:
  296.         vars['LDSHARED'] = vars['BLDSHARED']
  297.  
  298.  
  299. def _init_non_posix(vars):
  300.     vars['LIBDEST'] = get_path('stdlib')
  301.     vars['BINLIBDEST'] = get_path('platstdlib')
  302.     vars['INCLUDEPY'] = get_path('include')
  303.     vars['SO'] = '.pyd'
  304.     vars['EXE'] = '.exe'
  305.     vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT
  306.     vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable))
  307.  
  308.  
  309. def parse_config_h(fp, vars = None):
  310.     import re
  311.     if vars is None:
  312.         vars = { }
  313.     define_rx = re.compile('#define ([A-Z][A-Za-z0-9_]+) (.*)\n')
  314.     undef_rx = re.compile('/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n')
  315.     while True:
  316.         line = fp.readline()
  317.         if not line:
  318.             break
  319.         m = define_rx.match(line)
  320.         if m:
  321.             (n, v) = m.group(1, 2)
  322.             
  323.             try:
  324.                 v = int(v)
  325.             except ValueError:
  326.                 pass
  327.  
  328.             vars[n] = v
  329.             continue
  330.         m = undef_rx.match(line)
  331.         if m:
  332.             vars[m.group(1)] = 0
  333.             continue
  334.         return vars
  335.  
  336.  
  337. def get_config_h_filename():
  338.     if _PYTHON_BUILD:
  339.         if os.name == 'nt':
  340.             inc_dir = os.path.join(_PROJECT_BASE, 'PC')
  341.         else:
  342.             inc_dir = _PROJECT_BASE
  343.     else:
  344.         inc_dir = get_path('platinclude')
  345.     return os.path.join(inc_dir, 'pyconfig.h')
  346.  
  347.  
  348. def get_scheme_names():
  349.     schemes = _INSTALL_SCHEMES.keys()
  350.     schemes.sort()
  351.     return tuple(schemes)
  352.  
  353.  
  354. def get_path_names():
  355.     return _SCHEME_KEYS
  356.  
  357.  
  358. def get_paths(scheme = _get_default_scheme(), vars = None, expand = True):
  359.     if expand:
  360.         return _expand_vars(scheme, vars)
  361.     return None[scheme]
  362.  
  363.  
  364. def get_path(name, scheme = _get_default_scheme(), vars = None, expand = True):
  365.     return get_paths(scheme, vars, expand)[name]
  366.  
  367.  
  368. def get_config_vars(*args):
  369.     global _CONFIG_VARS
  370.     import re
  371.     if _CONFIG_VARS is None:
  372.         _CONFIG_VARS = { }
  373.         _CONFIG_VARS['prefix'] = _PREFIX
  374.         _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX
  375.         _CONFIG_VARS['py_version'] = _PY_VERSION
  376.         _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT
  377.         _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2]
  378.         _CONFIG_VARS['base'] = _PREFIX
  379.         _CONFIG_VARS['platbase'] = _EXEC_PREFIX
  380.         _CONFIG_VARS['projectbase'] = _PROJECT_BASE
  381.         if os.name in ('nt', 'os2'):
  382.             _init_non_posix(_CONFIG_VARS)
  383.         if os.name == 'posix':
  384.             _init_posix(_CONFIG_VARS)
  385.         _CONFIG_VARS['userbase'] = _getuserbase()
  386.         if 'srcdir' not in _CONFIG_VARS:
  387.             _CONFIG_VARS['srcdir'] = _PROJECT_BASE
  388.         if _PYTHON_BUILD and os.name == 'posix':
  389.             base = _PROJECT_BASE
  390.             
  391.             try:
  392.                 cwd = os.getcwd()
  393.             except OSError:
  394.                 cwd = None
  395.  
  396.             if not os.path.isabs(_CONFIG_VARS['srcdir']) and base != cwd:
  397.                 srcdir = os.path.join(base, _CONFIG_VARS['srcdir'])
  398.                 _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir)
  399.             
  400.         if sys.platform == 'darwin':
  401.             kernel_version = os.uname()[2]
  402.             major_version = int(kernel_version.split('.')[0])
  403.             if major_version < 8:
  404.                 for key in ('LDFLAGS', 'BASECFLAGS', 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
  405.                     flags = _CONFIG_VARS[key]
  406.                     flags = re.sub('-arch\\s+\\w+\\s', ' ', flags)
  407.                     flags = re.sub('-isysroot [^ \t]*', ' ', flags)
  408.                     _CONFIG_VARS[key] = flags
  409.                 
  410.             elif 'ARCHFLAGS' in os.environ:
  411.                 arch = os.environ['ARCHFLAGS']
  412.                 for key in ('LDFLAGS', 'BASECFLAGS', 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
  413.                     flags = _CONFIG_VARS[key]
  414.                     flags = re.sub('-arch\\s+\\w+\\s', ' ', flags)
  415.                     flags = flags + ' ' + arch
  416.                     _CONFIG_VARS[key] = flags
  417.                 
  418.             CFLAGS = _CONFIG_VARS.get('CFLAGS', '')
  419.             m = re.search('-isysroot\\s+(\\S+)', CFLAGS)
  420.             if m is not None:
  421.                 sdk = m.group(1)
  422.                 if not os.path.exists(sdk):
  423.                     for key in ('LDFLAGS', 'BASECFLAGS', 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
  424.                         flags = _CONFIG_VARS[key]
  425.                         flags = re.sub('-isysroot\\s+\\S+(\\s|$)', ' ', flags)
  426.                         _CONFIG_VARS[key] = flags
  427.                     
  428.                 
  429.             
  430.         
  431.     if args:
  432.         vals = []
  433.         for name in args:
  434.             vals.append(_CONFIG_VARS.get(name))
  435.         
  436.         return vals
  437.     return None
  438.  
  439.  
  440. def get_config_var(name):
  441.     return get_config_vars().get(name)
  442.  
  443.  
  444. def get_platform():
  445.     import re
  446.     if os.name == 'nt':
  447.         prefix = ' bit ('
  448.         i = sys.version.find(prefix)
  449.         if i == -1:
  450.             return sys.platform
  451.         j = None.version.find(')', i)
  452.         look = sys.version[i + len(prefix):j].lower()
  453.         if look == 'amd64':
  454.             return 'win-amd64'
  455.         if None == 'itanium':
  456.             return 'win-ia64'
  457.         return None.platform
  458.     if None.name != 'posix' or not hasattr(os, 'uname'):
  459.         return sys.platform
  460.     (osname, host, release, version, machine) = None.uname()
  461.     osname = osname.lower().replace('/', '')
  462.     machine = machine.replace(' ', '_')
  463.     machine = machine.replace('/', '-')
  464.     if osname[:5] == 'linux':
  465.         return '%s-%s' % (osname, machine)
  466.     if None[:5] == 'sunos' or release[0] >= '5':
  467.         osname = 'solaris'
  468.         release = '%d.%s' % (int(release[0]) - 3, release[2:])
  469.     
  470.     if osname[:4] == 'irix':
  471.         return '%s-%s' % (osname, release)
  472.     if None[:3] == 'aix':
  473.         return '%s-%s.%s' % (osname, version, release)
  474.     if None[:6] == 'cygwin':
  475.         osname = 'cygwin'
  476.         rel_re = re.compile('[\\d.]+')
  477.         m = rel_re.match(release)
  478.         if m:
  479.             release = m.group()
  480.         
  481.     elif osname[:6] == 'darwin':
  482.         cfgvars = get_config_vars()
  483.         macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET')
  484.         if not macver:
  485.             macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
  486.         macrelease = macver
  487.         
  488.         try:
  489.             f = open('/System/Library/CoreServices/SystemVersion.plist')
  490.         except IOError:
  491.             pass
  492.  
  493.         
  494.         try:
  495.             m = re.search('<key>ProductUserVisibleVersion</key>\\s*' + '<string>(.*?)</string>', f.read())
  496.             f.close()
  497.             if m is not None:
  498.                 macrelease = '.'.join(m.group(1).split('.')[:2])
  499.         finally:
  500.             f.close()
  501.  
  502.         if not macver:
  503.             macver = macrelease
  504.         if macver:
  505.             release = macver
  506.             osname = 'macosx'
  507.             if macrelease + '.' >= '10.4.' and '-arch' in get_config_vars().get('CFLAGS', '').strip():
  508.                 machine = 'fat'
  509.                 cflags = get_config_vars().get('CFLAGS')
  510.                 archs = re.findall('-arch\\s+(\\S+)', cflags)
  511.                 archs = tuple(sorted(set(archs)))
  512.                 if len(archs) == 1:
  513.                     machine = archs[0]
  514.                 elif archs == ('i386', 'ppc'):
  515.                     machine = 'fat'
  516.                 elif archs == ('i386', 'x86_64'):
  517.                     machine = 'intel'
  518.                 elif archs == ('i386', 'ppc', 'x86_64'):
  519.                     machine = 'fat3'
  520.                 elif archs == ('ppc64', 'x86_64'):
  521.                     machine = 'fat64'
  522.                 elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'):
  523.                     machine = 'universal'
  524.                 else:
  525.                     raise ValueError("Don't know machine value for archs=%r" % (archs,))
  526.             if machine == 'i386' or sys.maxint >= 0x100000000L:
  527.                 machine = 'x86_64'
  528.             
  529.         elif machine in ('PowerPC', 'Power_Macintosh'):
  530.             if sys.maxint >= 0x100000000L:
  531.                 machine = 'ppc64'
  532.             else:
  533.                 machine = 'ppc'
  534.         
  535.     
  536.     return '%s-%s-%s' % (osname, release, machine)
  537.  
  538.  
  539. def get_python_version():
  540.     return _PY_VERSION_SHORT
  541.  
  542.