Commits

Markus W. Weißmann authored 21cfd711bfd
new port python/py-medusa -- https://trac.macports.org/ticket/12922

git-svn-id: https://svn.macports.org/repository/macports/trunk/dports@30889 d073be05-634f-4543-b044-5fe20cf6d1d6
No tags

python/py-medusa/files/patch-ez_setup.py

Added
1 +--- /dev/null 2007-10-16 12:27:58.000000000 -0700
2 ++++ ez_setup.py 2007-10-16 12:34:15.000000000 -0700
3 +@@ -0,0 +1,234 @@
4 ++#!python
5 ++"""Bootstrap setuptools installation
6 ++
7 ++If you want to use setuptools in your package's setup.py, just include this
8 ++file in the same directory with it, and add this to the top of your setup.py::
9 ++
10 ++ from ez_setup import use_setuptools
11 ++ use_setuptools()
12 ++
13 ++If you want to require a specific version of setuptools, set a download
14 ++mirror, or use an alternate download directory, you can do so by supplying
15 ++the appropriate options to ``use_setuptools()``.
16 ++
17 ++This file can also be run as a script to install or upgrade setuptools.
18 ++"""
19 ++import sys
20 ++DEFAULT_VERSION = "0.6c7"
21 ++DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
22 ++
23 ++md5_data = {
24 ++ 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
25 ++ 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
26 ++ 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
27 ++ 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
28 ++ 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
29 ++ 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
30 ++ 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
31 ++ 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
32 ++ 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
33 ++ 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
34 ++ 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
35 ++ 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
36 ++ 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
37 ++ 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
38 ++ 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
39 ++ 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
40 ++ 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
41 ++ 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
42 ++ 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
43 ++ 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
44 ++ 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
45 ++ 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
46 ++ 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
47 ++ 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
48 ++ 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
49 ++ 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
50 ++ 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
51 ++}
52 ++
53 ++import sys, os
54 ++
55 ++def _validate_md5(egg_name, data):
56 ++ if egg_name in md5_data:
57 ++ from md5 import md5
58 ++ digest = md5(data).hexdigest()
59 ++ if digest != md5_data[egg_name]:
60 ++ print >>sys.stderr, (
61 ++ "md5 validation of %s failed! (Possible download problem?)"
62 ++ % egg_name
63 ++ )
64 ++ sys.exit(2)
65 ++ return data
66 ++
67 ++
68 ++def use_setuptools(
69 ++ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
70 ++ download_delay=15
71 ++):
72 ++ """Automatically find/download setuptools and make it available on sys.path
73 ++
74 ++ `version` should be a valid setuptools version number that is available
75 ++ as an egg for download under the `download_base` URL (which should end with
76 ++ a '/'). `to_dir` is the directory where setuptools will be downloaded, if
77 ++ it is not already available. If `download_delay` is specified, it should
78 ++ be the number of seconds that will be paused before initiating a download,
79 ++ should one be required. If an older version of setuptools is installed,
80 ++ this routine will print a message to ``sys.stderr`` and raise SystemExit in
81 ++ an attempt to abort the calling script.
82 ++ """
83 ++ try:
84 ++ import setuptools
85 ++ if setuptools.__version__ == '0.0.1':
86 ++ print >>sys.stderr, (
87 ++ "You have an obsolete version of setuptools installed. Please\n"
88 ++ "remove it from your system entirely before rerunning this script."
89 ++ )
90 ++ sys.exit(2)
91 ++ except ImportError:
92 ++ egg = download_setuptools(version, download_base, to_dir, download_delay)
93 ++ sys.path.insert(0, egg)
94 ++ import setuptools; setuptools.bootstrap_install_from = egg
95 ++
96 ++ import pkg_resources
97 ++ try:
98 ++ pkg_resources.require("setuptools>="+version)
99 ++
100 ++ except pkg_resources.VersionConflict, e:
101 ++ # XXX could we install in a subprocess here?
102 ++ print >>sys.stderr, (
103 ++ "The required version of setuptools (>=%s) is not available, and\n"
104 ++ "can't be installed while this script is running. Please install\n"
105 ++ " a more recent version first.\n\n(Currently using %r)"
106 ++ ) % (version, e.args[0])
107 ++ sys.exit(2)
108 ++
109 ++def download_setuptools(
110 ++ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
111 ++ delay = 15
112 ++):
113 ++ """Download setuptools from a specified location and return its filename
114 ++
115 ++ `version` should be a valid setuptools version number that is available
116 ++ as an egg for download under the `download_base` URL (which should end
117 ++ with a '/'). `to_dir` is the directory where the egg will be downloaded.
118 ++ `delay` is the number of seconds to pause before an actual download attempt.
119 ++ """
120 ++ import urllib2, shutil
121 ++ egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
122 ++ url = download_base + egg_name
123 ++ saveto = os.path.join(to_dir, egg_name)
124 ++ src = dst = None
125 ++ if not os.path.exists(saveto): # Avoid repeated downloads
126 ++ try:
127 ++ from distutils import log
128 ++ if delay:
129 ++ log.warn("""
130 ++---------------------------------------------------------------------------
131 ++This script requires setuptools version %s to run (even to display
132 ++help). I will attempt to download it for you (from
133 ++%s), but
134 ++you may need to enable firewall access for this script first.
135 ++I will start the download in %d seconds.
136 ++
137 ++(Note: if this machine does not have network access, please obtain the file
138 ++
139 ++ %s
140 ++
141 ++and place it in this directory before rerunning this script.)
142 ++---------------------------------------------------------------------------""",
143 ++ version, download_base, delay, url
144 ++ ); from time import sleep; sleep(delay)
145 ++ log.warn("Downloading %s", url)
146 ++ src = urllib2.urlopen(url)
147 ++ # Read/write all in one block, so we don't create a corrupt file
148 ++ # if the download is interrupted.
149 ++ data = _validate_md5(egg_name, src.read())
150 ++ dst = open(saveto,"wb"); dst.write(data)
151 ++ finally:
152 ++ if src: src.close()
153 ++ if dst: dst.close()
154 ++ return os.path.realpath(saveto)
155 ++
156 ++def main(argv, version=DEFAULT_VERSION):
157 ++ """Install or upgrade setuptools and EasyInstall"""
158 ++
159 ++ try:
160 ++ import setuptools
161 ++ except ImportError:
162 ++ egg = None
163 ++ try:
164 ++ egg = download_setuptools(version, delay=0)
165 ++ sys.path.insert(0,egg)
166 ++ from setuptools.command.easy_install import main
167 ++ return main(list(argv)+[egg]) # we're done here
168 ++ finally:
169 ++ if egg and os.path.exists(egg):
170 ++ os.unlink(egg)
171 ++ else:
172 ++ if setuptools.__version__ == '0.0.1':
173 ++ # tell the user to uninstall obsolete version
174 ++ use_setuptools(version)
175 ++
176 ++ req = "setuptools>="+version
177 ++ import pkg_resources
178 ++ try:
179 ++ pkg_resources.require(req)
180 ++ except pkg_resources.VersionConflict:
181 ++ try:
182 ++ from setuptools.command.easy_install import main
183 ++ except ImportError:
184 ++ from easy_install import main
185 ++ main(list(argv)+[download_setuptools(delay=0)])
186 ++ sys.exit(0) # try to force an exit
187 ++ else:
188 ++ if argv:
189 ++ from setuptools.command.easy_install import main
190 ++ main(argv)
191 ++ else:
192 ++ print "Setuptools version",version,"or greater has been installed."
193 ++ print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
194 ++
195 ++
196 ++
197 ++def update_md5(filenames):
198 ++ """Update our built-in md5 registry"""
199 ++
200 ++ import re
201 ++ from md5 import md5
202 ++
203 ++ for name in filenames:
204 ++ base = os.path.basename(name)
205 ++ f = open(name,'rb')
206 ++ md5_data[base] = md5(f.read()).hexdigest()
207 ++ f.close()
208 ++
209 ++ data = [" %r: %r,\n" % it for it in md5_data.items()]
210 ++ data.sort()
211 ++ repl = "".join(data)
212 ++
213 ++ import inspect
214 ++ srcfile = inspect.getsourcefile(sys.modules[__name__])
215 ++ f = open(srcfile, 'rb'); src = f.read(); f.close()
216 ++
217 ++ match = re.search("\nmd5_data = {\n([^}]+)}", src)
218 ++ if not match:
219 ++ print >>sys.stderr, "Internal error!"
220 ++ sys.exit(2)
221 ++
222 ++ src = src[:match.start(1)] + repl + src[match.end(1):]
223 ++ f = open(srcfile,'w')
224 ++ f.write(src)
225 ++ f.close()
226 ++
227 ++
228 ++if __name__=='__main__':
229 ++ if len(sys.argv)>2 and sys.argv[1]=='--md5update':
230 ++ update_md5(sys.argv[2:])
231 ++ else:
232 ++ main(sys.argv[1:])
233 ++
234 ++
235 ++
236 ++
237 ++

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut