Changeset 13685 for main/kofacustom.wdu/trunk/bootstrap.py
- Timestamp:
- 11 Feb 2016, 13:53:36 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/kofacustom.wdu/trunk/bootstrap.py
r11859 r13685 26 26 from optparse import OptionParser 27 27 28 tmpeggs = tempfile.mkdtemp() 28 __version__ = '2015-07-01' 29 # See zc.buildout's changelog if this version is up to date. 30 31 tmpeggs = tempfile.mkdtemp(prefix='bootstrap-') 29 32 30 33 usage = '''\ … … 36 39 Python that you want bin/buildout to use. 37 40 38 Note that by using --find-links to point to local resources, you can keep 41 Note that by using --find-links to point to local resources, you can keep 39 42 this script from going over the network. 40 43 ''' 41 44 42 45 parser = OptionParser(usage=usage) 43 parser.add_option("-v", "--version", help="use a specific zc.buildout version") 44 46 parser.add_option("--version", 47 action="store_true", default=False, 48 help=("Return bootstrap.py version.")) 45 49 parser.add_option("-t", "--accept-buildout-test-releases", 46 50 dest='accept_buildout_test_releases', … … 57 61 parser.add_option("-f", "--find-links", 58 62 help=("Specify a URL to search for buildout releases")) 59 63 parser.add_option("--allow-site-packages", 64 action="store_true", default=False, 65 help=("Let bootstrap.py use existing site packages")) 66 parser.add_option("--buildout-version", 67 help="Use a specific zc.buildout version") 68 parser.add_option("--setuptools-version", 69 help="Use a specific setuptools version") 70 parser.add_option("--setuptools-to-dir", 71 help=("Allow for re-use of existing directory of " 72 "setuptools versions")) 60 73 61 74 options, args = parser.parse_args() 75 if options.version: 76 print("bootstrap.py version %s" % __version__) 77 sys.exit(0) 78 62 79 63 80 ###################################################################### 64 # load/install distribute 65 66 to_reload = False 81 # load/install setuptools 82 67 83 try: 68 import pkg_resources 69 import setuptools 70 if not hasattr(pkg_resources, '_distribute'): 71 to_reload = True 72 raise ImportError 84 from urllib.request import urlopen 73 85 except ImportError: 74 ez = {} 75 76 try: 77 from urllib.request import urlopen 78 except ImportError: 79 from urllib2 import urlopen 80 81 exec(urlopen( 82 'http://downloads.buildout.org/2.1/distribute_setup.py').read(), ez) 83 setup_args = dict(to_dir=tmpeggs, download_delay=0, no_fake=True) 84 ez['use_setuptools'](**setup_args) 85 86 if to_reload: 87 reload(pkg_resources) 88 import pkg_resources 89 # This does not (always?) update the default working set. We will 90 # do it. 91 for path in sys.path: 92 if path not in pkg_resources.working_set.entries: 93 pkg_resources.working_set.add_entry(path) 86 from urllib2 import urlopen 87 88 ez = {} 89 if os.path.exists('ez_setup.py'): 90 exec(open('ez_setup.py').read(), ez) 91 else: 92 exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) 93 94 if not options.allow_site_packages: 95 # ez_setup imports site, which adds site packages 96 # this will remove them from the path to ensure that incompatible versions 97 # of setuptools are not in the path 98 import site 99 # inside a virtualenv, there is no 'getsitepackages'. 100 # We can't remove these reliably 101 if hasattr(site, 'getsitepackages'): 102 for sitepackage_path in site.getsitepackages(): 103 # Strip all site-packages directories from sys.path that 104 # are not sys.prefix; this is because on Windows 105 # sys.prefix is a site-package directory. 106 if sitepackage_path != sys.prefix: 107 sys.path[:] = [x for x in sys.path 108 if sitepackage_path not in x] 109 110 setup_args = dict(to_dir=tmpeggs, download_delay=0) 111 112 if options.setuptools_version is not None: 113 setup_args['version'] = options.setuptools_version 114 if options.setuptools_to_dir is not None: 115 setup_args['to_dir'] = options.setuptools_to_dir 116 117 ez['use_setuptools'](**setup_args) 118 import setuptools 119 import pkg_resources 120 121 # This does not (always?) update the default working set. We will 122 # do it. 123 for path in sys.path: 124 if path not in pkg_resources.working_set.entries: 125 pkg_resources.working_set.add_entry(path) 94 126 95 127 ###################################################################### … … 98 130 ws = pkg_resources.working_set 99 131 132 setuptools_path = ws.find( 133 pkg_resources.Requirement.parse('setuptools')).location 134 135 # Fix sys.path here as easy_install.pth added before PYTHONPATH 100 136 cmd = [sys.executable, '-c', 137 'import sys; sys.path[0:0] = [%r]; ' % setuptools_path + 101 138 'from setuptools.command.easy_install import main; main()', 102 139 '-mZqNxd', tmpeggs] … … 111 148 cmd.extend(['-f', find_links]) 112 149 113 distribute_path = ws.find(114 pkg_resources.Requirement.parse('distribute')).location115 116 150 requirement = 'zc.buildout' 117 version = options. version151 version = options.buildout_version 118 152 if version is None and not options.accept_buildout_test_releases: 119 153 # Figure out the most recent final version of zc.buildout. … … 122 156 123 157 def _final_version(parsed_version): 124 for part in parsed_version: 125 if (part[:1] == '*') and (part not in _final_parts): 126 return False 127 return True 158 try: 159 return not parsed_version.is_prerelease 160 except AttributeError: 161 # Older setuptools 162 for part in parsed_version: 163 if (part[:1] == '*') and (part not in _final_parts): 164 return False 165 return True 166 128 167 index = setuptools.package_index.PackageIndex( 129 search_path=[ distribute_path])168 search_path=[setuptools_path]) 130 169 if find_links: 131 170 index.add_find_links((find_links,)) … … 150 189 151 190 import subprocess 152 if subprocess.call(cmd , env=dict(os.environ, PYTHONPATH=distribute_path)) != 0:191 if subprocess.call(cmd) != 0: 153 192 raise Exception( 154 "Failed to execute command:\n%s", 155 repr(cmd)[1:-1]) 193 "Failed to execute command:\n%s" % repr(cmd)[1:-1]) 156 194 157 195 ######################################################################
Note: See TracChangeset for help on using the changeset viewer.