| 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 |
|---|