home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_341 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.8 KB  |  160 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. from framework import framework_info
  6. from dylib import dylib_info
  7. from itertools import *
  8. __all__ = [
  9.     'dyld_find',
  10.     'framework_find',
  11.     'framework_info',
  12.     'dylib_info']
  13. DEFAULT_FRAMEWORK_FALLBACK = [
  14.     os.path.expanduser('~/Library/Frameworks'),
  15.     '/Library/Frameworks',
  16.     '/Network/Library/Frameworks',
  17.     '/System/Library/Frameworks']
  18. DEFAULT_LIBRARY_FALLBACK = [
  19.     os.path.expanduser('~/lib'),
  20.     '/usr/local/lib',
  21.     '/lib',
  22.     '/usr/lib']
  23.  
  24. def ensure_utf8(s):
  25.     if isinstance(s, unicode):
  26.         return s.encode('utf8')
  27.     return s
  28.  
  29.  
  30. def dyld_env(env, var):
  31.     if env is None:
  32.         env = os.environ
  33.     
  34.     rval = env.get(var)
  35.     if rval is None:
  36.         return []
  37.     return rval.split(':')
  38.  
  39.  
  40. def dyld_image_suffix(env = None):
  41.     if env is None:
  42.         env = os.environ
  43.     
  44.     return env.get('DYLD_IMAGE_SUFFIX')
  45.  
  46.  
  47. def dyld_framework_path(env = None):
  48.     return dyld_env(env, 'DYLD_FRAMEWORK_PATH')
  49.  
  50.  
  51. def dyld_library_path(env = None):
  52.     return dyld_env(env, 'DYLD_LIBRARY_PATH')
  53.  
  54.  
  55. def dyld_fallback_framework_path(env = None):
  56.     return dyld_env(env, 'DYLD_FALLBACK_FRAMEWORK_PATH')
  57.  
  58.  
  59. def dyld_fallback_library_path(env = None):
  60.     return dyld_env(env, 'DYLD_FALLBACK_LIBRARY_PATH')
  61.  
  62.  
  63. def dyld_image_suffix_search(iterator, env = None):
  64.     suffix = dyld_image_suffix(env)
  65.     if suffix is None:
  66.         return iterator
  67.     
  68.     def _inject(iterator = iterator, suffix = suffix):
  69.         for path in iterator:
  70.             if path.endswith('.dylib'):
  71.                 yield path[:-len('.dylib')] + suffix + '.dylib'
  72.             else:
  73.                 yield path + suffix
  74.             yield path
  75.         
  76.  
  77.     return _inject()
  78.  
  79.  
  80. def dyld_override_search(name, env = None):
  81.     framework = framework_info(name)
  82.     if framework is not None:
  83.         for path in dyld_framework_path(env):
  84.             yield os.path.join(path, framework['name'])
  85.         
  86.     
  87.     for path in dyld_library_path(env):
  88.         yield os.path.join(path, os.path.basename(name))
  89.     
  90.  
  91.  
  92. def dyld_executable_path_search(name, executable_path = None):
  93.     if name.startswith('@executable_path/') and executable_path is not None:
  94.         yield os.path.join(executable_path, name[len('@executable_path/'):])
  95.     
  96.  
  97.  
  98. def dyld_default_search(name, env = None):
  99.     yield name
  100.     framework = framework_info(name)
  101.     if framework is not None:
  102.         fallback_framework_path = dyld_fallback_framework_path(env)
  103.         for path in fallback_framework_path:
  104.             yield os.path.join(path, framework['name'])
  105.         
  106.     
  107.     fallback_library_path = dyld_fallback_library_path(env)
  108.     for path in fallback_library_path:
  109.         yield os.path.join(path, os.path.basename(name))
  110.     
  111.     if framework is not None and not fallback_framework_path:
  112.         for path in DEFAULT_FRAMEWORK_FALLBACK:
  113.             yield os.path.join(path, framework['name'])
  114.         
  115.     
  116.     if not fallback_library_path:
  117.         for path in DEFAULT_LIBRARY_FALLBACK:
  118.             yield os.path.join(path, os.path.basename(name))
  119.         
  120.     
  121.  
  122.  
  123. def dyld_find(name, executable_path = None, env = None):
  124.     name = ensure_utf8(name)
  125.     executable_path = ensure_utf8(executable_path)
  126.     for path in dyld_image_suffix_search(chain(dyld_override_search(name, env), dyld_executable_path_search(name, executable_path), dyld_default_search(name, env)), env):
  127.         if os.path.isfile(path):
  128.             return path
  129.     
  130.     raise ValueError('dylib %s could not be found' % (name,))
  131.  
  132.  
  133. def framework_find(fn, executable_path = None, env = None):
  134.     
  135.     try:
  136.         return dyld_find(fn, executable_path = executable_path, env = env)
  137.     except ValueError:
  138.         e = None
  139.  
  140.     fmwk_index = fn.rfind('.framework')
  141.     if fmwk_index == -1:
  142.         fmwk_index = len(fn)
  143.         fn += '.framework'
  144.     
  145.     fn = os.path.join(fn, os.path.basename(fn[:fmwk_index]))
  146.     
  147.     try:
  148.         return dyld_find(fn, executable_path = executable_path, env = env)
  149.     except ValueError:
  150.         raise e
  151.  
  152.  
  153.  
  154. def test_dyld_find():
  155.     env = { }
  156.  
  157. if __name__ == '__main__':
  158.     test_dyld_find()
  159.  
  160.