comparison ez_setup.py @ 36:38bf72f3c3de MySQLdb

Last merge of everything from 1.2br that went into 1.2.3b1 (499:567)
author kylev
date Thu, 12 Feb 2009 00:28:34 +0000
parents cbdd84eabe07
children 3e3bfbb2d2ae
comparison
equal deleted inserted replaced
35:e7bd07afbcb9 36:38bf72f3c3de
12 the appropriate options to ``use_setuptools()``. 12 the appropriate options to ``use_setuptools()``.
13 13
14 This file can also be run as a script to install or upgrade setuptools. 14 This file can also be run as a script to install or upgrade setuptools.
15 """ 15 """
16 import sys 16 import sys
17 DEFAULT_VERSION = "0.6c5" 17 DEFAULT_VERSION = "0.6c9"
18 DEFAULT_URL = "http://cheeseshop.python.org/packages/%s/s/setuptools/" % sys.version[:3] 18 DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
19 19
20 md5_data = { 20 md5_data = {
21 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca', 21 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
22 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb', 22 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
23 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b', 23 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
37 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2', 37 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
38 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc', 38 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
39 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167', 39 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
40 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64', 40 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
41 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d', 41 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
42 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
43 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
44 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
45 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
46 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
47 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
48 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
49 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
50 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
51 'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
52 'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
53 'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
54 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
42 } 55 }
43 56
44 import sys, os 57 import sys, os
58 try: from hashlib import md5
59 except ImportError: from md5 import md5
45 60
46 def _validate_md5(egg_name, data): 61 def _validate_md5(egg_name, data):
47 if egg_name in md5_data: 62 if egg_name in md5_data:
48 from md5 import md5
49 digest = md5(data).hexdigest() 63 digest = md5(data).hexdigest()
50 if digest != md5_data[egg_name]: 64 if digest != md5_data[egg_name]:
51 print >>sys.stderr, ( 65 print >>sys.stderr, (
52 "md5 validation of %s failed! (Possible download problem?)" 66 "md5 validation of %s failed! (Possible download problem?)"
53 % egg_name 67 % egg_name
54 ) 68 )
55 sys.exit(2) 69 sys.exit(2)
56 return data 70 return data
57
58 71
59 def use_setuptools( 72 def use_setuptools(
60 version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, 73 version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
61 download_delay=15 74 download_delay=15
62 ): 75 ):
69 be the number of seconds that will be paused before initiating a download, 82 be the number of seconds that will be paused before initiating a download,
70 should one be required. If an older version of setuptools is installed, 83 should one be required. If an older version of setuptools is installed,
71 this routine will print a message to ``sys.stderr`` and raise SystemExit in 84 this routine will print a message to ``sys.stderr`` and raise SystemExit in
72 an attempt to abort the calling script. 85 an attempt to abort the calling script.
73 """ 86 """
74 try: 87 was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
75 import setuptools 88 def do_download():
76 if setuptools.__version__ == '0.0.1':
77 print >>sys.stderr, (
78 "You have an obsolete version of setuptools installed. Please\n"
79 "remove it from your system entirely before rerunning this script."
80 )
81 sys.exit(2)
82 except ImportError:
83 egg = download_setuptools(version, download_base, to_dir, download_delay) 89 egg = download_setuptools(version, download_base, to_dir, download_delay)
84 sys.path.insert(0, egg) 90 sys.path.insert(0, egg)
85 import setuptools; setuptools.bootstrap_install_from = egg 91 import setuptools; setuptools.bootstrap_install_from = egg
86 92 try:
87 import pkg_resources 93 import pkg_resources
88 try: 94 except ImportError:
89 pkg_resources.require("setuptools>="+version) 95 return do_download()
90 96 try:
97 pkg_resources.require("setuptools>="+version); return
91 except pkg_resources.VersionConflict, e: 98 except pkg_resources.VersionConflict, e:
92 # XXX could we install in a subprocess here? 99 if was_imported:
93 print >>sys.stderr, ( 100 print >>sys.stderr, (
94 "The required version of setuptools (>=%s) is not available, and\n" 101 "The required version of setuptools (>=%s) is not available, and\n"
95 "can't be installed while this script is running. Please install\n" 102 "can't be installed while this script is running. Please install\n"
96 " a more recent version first.\n\n(Currently using %r)" 103 " a more recent version first, using 'easy_install -U setuptools'."
97 ) % (version, e.args[0]) 104 "\n\n(Currently using %r)"
98 sys.exit(2) 105 ) % (version, e.args[0])
106 sys.exit(2)
107 else:
108 del pkg_resources, sys.modules['pkg_resources'] # reload ok
109 return do_download()
110 except pkg_resources.DistributionNotFound:
111 return do_download()
99 112
100 def download_setuptools( 113 def download_setuptools(
101 version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, 114 version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
102 delay = 15 115 delay = 15
103 ): 116 ):
142 finally: 155 finally:
143 if src: src.close() 156 if src: src.close()
144 if dst: dst.close() 157 if dst: dst.close()
145 return os.path.realpath(saveto) 158 return os.path.realpath(saveto)
146 159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
147 def main(argv, version=DEFAULT_VERSION): 195 def main(argv, version=DEFAULT_VERSION):
148 """Install or upgrade setuptools and EasyInstall""" 196 """Install or upgrade setuptools and EasyInstall"""
149
150 try: 197 try:
151 import setuptools 198 import setuptools
152 except ImportError: 199 except ImportError:
153 egg = None 200 egg = None
154 try: 201 try:
159 finally: 206 finally:
160 if egg and os.path.exists(egg): 207 if egg and os.path.exists(egg):
161 os.unlink(egg) 208 os.unlink(egg)
162 else: 209 else:
163 if setuptools.__version__ == '0.0.1': 210 if setuptools.__version__ == '0.0.1':
164 # tell the user to uninstall obsolete version 211 print >>sys.stderr, (
165 use_setuptools(version) 212 "You have an obsolete version of setuptools installed. Please\n"
213 "remove it from your system entirely before rerunning this script."
214 )
215 sys.exit(2)
166 216
167 req = "setuptools>="+version 217 req = "setuptools>="+version
168 import pkg_resources 218 import pkg_resources
169 try: 219 try:
170 pkg_resources.require(req) 220 pkg_resources.require(req)
181 main(argv) 231 main(argv)
182 else: 232 else:
183 print "Setuptools version",version,"or greater has been installed." 233 print "Setuptools version",version,"or greater has been installed."
184 print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)' 234 print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
185 235
186
187
188 def update_md5(filenames): 236 def update_md5(filenames):
189 """Update our built-in md5 registry""" 237 """Update our built-in md5 registry"""
190 238
191 import re 239 import re
192 from md5 import md5
193 240
194 for name in filenames: 241 for name in filenames:
195 base = os.path.basename(name) 242 base = os.path.basename(name)
196 f = open(name,'rb') 243 f = open(name,'rb')
197 md5_data[base] = md5(f.read()).hexdigest() 244 md5_data[base] = md5(f.read()).hexdigest()
224 271
225 272
226 273
227 274
228 275
276