[2] | 1 | """ |
---|
| 2 | Galaxy root package -- this is a namespace package. |
---|
| 3 | """ |
---|
| 4 | |
---|
| 5 | __import__( "pkg_resources" ).declare_namespace( __name__ ) |
---|
| 6 | |
---|
| 7 | import os, sys, re |
---|
| 8 | from distutils.sysconfig import get_config_var, get_config_vars |
---|
| 9 | |
---|
| 10 | import pkg_resources |
---|
| 11 | |
---|
| 12 | # patch get_platform() for better ABI recognition |
---|
| 13 | def _get_build_platform(): |
---|
| 14 | plat = pkg_resources._get_build_platform() |
---|
| 15 | if sys.version_info[:2] == ( 2, 5 ) and \ |
---|
| 16 | ( ( os.uname()[-1] in ( 'i386', 'ppc' ) and sys.platform == 'darwin' and os.path.abspath( sys.prefix ).startswith( '/System' ) ) or \ |
---|
| 17 | ( sys.platform == 'darwin' and get_config_vars().get('UNIVERSALSDK', '').strip() ) ): |
---|
| 18 | plat = 'macosx-10.3-fat' |
---|
| 19 | if sys.platform == "sunos5" and not (plat.endswith('_32') or plat.endswith('_64')): |
---|
| 20 | if sys.maxint > 2**31: |
---|
| 21 | plat += '_64' |
---|
| 22 | else: |
---|
| 23 | plat += '_32' |
---|
| 24 | if not (plat.endswith('-ucs2') or plat.endswith('-ucs4')): |
---|
| 25 | if sys.maxunicode > 2**16: |
---|
| 26 | plat += '-ucs4' |
---|
| 27 | else: |
---|
| 28 | plat += '-ucs2' |
---|
| 29 | return plat |
---|
| 30 | try: |
---|
| 31 | assert pkg_resources._get_build_platform |
---|
| 32 | except: |
---|
| 33 | pkg_resources._get_build_platform = pkg_resources.get_build_platform |
---|
| 34 | pkg_resources.get_build_platform = _get_build_platform |
---|
| 35 | pkg_resources.get_platform = _get_build_platform |
---|
| 36 | |
---|
| 37 | # patch compatible_platforms() to allow for Solaris binary compatibility |
---|
| 38 | solarisVersionString = re.compile(r"solaris-(\d)\.(\d+)-(.*)") |
---|
| 39 | def _compatible_platforms(provided,required): |
---|
| 40 | # this is a bit kludgey since we need to know a bit about what happened in |
---|
| 41 | # the original method |
---|
| 42 | if provided is None or required is None or provided==required: |
---|
| 43 | return True # easy case |
---|
| 44 | reqMac = pkg_resources.macosVersionString.match(required) |
---|
| 45 | if reqMac: |
---|
| 46 | return pkg_resources._compatible_platforms(provided,required) |
---|
| 47 | reqSol = solarisVersionString.match(required) |
---|
| 48 | if reqSol: |
---|
| 49 | provSol = solarisVersionString.match(provided) |
---|
| 50 | if not provSol: |
---|
| 51 | return False |
---|
| 52 | if provSol.group(1) != reqSol.group(1) or \ |
---|
| 53 | provSol.group(3) != reqSol.group(3): |
---|
| 54 | return False |
---|
| 55 | if int(provSol.group(2)) > int(reqSol.group(2)): |
---|
| 56 | return False |
---|
| 57 | return True |
---|
| 58 | return False |
---|
| 59 | try: |
---|
| 60 | assert pkg_resources._compatible_platforms |
---|
| 61 | except: |
---|
| 62 | pkg_resources._compatible_platforms = pkg_resources.compatible_platforms |
---|
| 63 | pkg_resources.compatible_platforms = _compatible_platforms |
---|
| 64 | |
---|
| 65 | # patch to insert eggs at the beginning of sys.path instead of at the end |
---|
| 66 | def _insert_on(self, path, loc = None): |
---|
| 67 | """Insert self.location in path before its nearest parent directory""" |
---|
| 68 | |
---|
| 69 | loc = loc or self.location |
---|
| 70 | if not loc: |
---|
| 71 | return |
---|
| 72 | |
---|
| 73 | nloc = pkg_resources._normalize_cached(loc) |
---|
| 74 | npath= [(p and pkg_resources._normalize_cached(p) or p) for p in path] |
---|
| 75 | |
---|
| 76 | if path is sys.path: |
---|
| 77 | self.check_version_conflict() |
---|
| 78 | path.insert(0, loc) |
---|
| 79 | |
---|
| 80 | # remove dups |
---|
| 81 | while 1: |
---|
| 82 | try: |
---|
| 83 | np = npath.index(nloc, 1) |
---|
| 84 | except ValueError: |
---|
| 85 | break |
---|
| 86 | else: |
---|
| 87 | del npath[np], path[np] |
---|
| 88 | |
---|
| 89 | return |
---|
| 90 | try: |
---|
| 91 | assert pkg_resources.Distribution._insert_on |
---|
| 92 | except: |
---|
| 93 | pkg_resources.Distribution._insert_on = pkg_resources.Distribution.insert_on |
---|
| 94 | pkg_resources.Distribution.insert_on = _insert_on |
---|
| 95 | |
---|
| 96 | # patch to add the NullHandler class to logging |
---|
| 97 | if sys.version_info[:2] < ( 2, 7 ): |
---|
| 98 | import logging |
---|
| 99 | class NullHandler( logging.Handler ): |
---|
| 100 | def emit( self, record ): |
---|
| 101 | pass |
---|
| 102 | logging.NullHandler = NullHandler |
---|