mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
v1.8.4
This commit is contained in:
+1
-1
@@ -79,7 +79,7 @@ cleanup() {
|
||||
|
||||
# Virtualenv wrapper.
|
||||
function virtualenv (){
|
||||
python "$ROOT_DIR/vendor/virtualenv-1.7.2/virtualenv.py" "$@"
|
||||
python "$ROOT_DIR/vendor/virtualenv-1.8.4/virtualenv.py" "$@"
|
||||
}
|
||||
|
||||
# Buildpack Steps.
|
||||
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Helper script to rebuild virtualenv.py from virtualenv_support
|
||||
"""
|
||||
|
||||
import re
|
||||
import os
|
||||
import sys
|
||||
|
||||
here = os.path.dirname(__file__)
|
||||
script = os.path.join(here, '..', 'virtualenv.py')
|
||||
|
||||
file_regex = re.compile(
|
||||
r'##file (.*?)\n([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*convert\("""(.*?)"""\)',
|
||||
re.S)
|
||||
file_template = '##file %(filename)s\n%(varname)s = convert("""\n%(data)s""")'
|
||||
|
||||
def rebuild():
|
||||
f = open(script, 'rb')
|
||||
content = f.read()
|
||||
f.close()
|
||||
parts = []
|
||||
last_pos = 0
|
||||
match = None
|
||||
for match in file_regex.finditer(content):
|
||||
parts.append(content[last_pos:match.start()])
|
||||
last_pos = match.end()
|
||||
filename = match.group(1)
|
||||
varname = match.group(2)
|
||||
data = match.group(3)
|
||||
print('Found reference to file %s' % filename)
|
||||
pathname = os.path.join(here, '..', 'virtualenv_embedded', filename)
|
||||
f = open(pathname, 'rb')
|
||||
c = f.read()
|
||||
f.close()
|
||||
new_data = c.encode('zlib').encode('base64')
|
||||
if new_data == data:
|
||||
print(' Reference up to date (%s bytes)' % len(c))
|
||||
parts.append(match.group(0))
|
||||
continue
|
||||
print(' Content changed (%s bytes -> %s bytes)' % (
|
||||
zipped_len(data), len(c)))
|
||||
new_match = file_template % dict(
|
||||
filename=filename,
|
||||
varname=varname,
|
||||
data=new_data)
|
||||
parts.append(new_match)
|
||||
parts.append(content[last_pos:])
|
||||
new_content = ''.join(parts)
|
||||
if new_content != content:
|
||||
sys.stdout.write('Content updated; overwriting... ')
|
||||
f = open(script, 'wb')
|
||||
f.write(new_content)
|
||||
f.close()
|
||||
print('done.')
|
||||
else:
|
||||
print('No changes in content')
|
||||
if match is None:
|
||||
print('No variables were matched/found')
|
||||
|
||||
def zipped_len(data):
|
||||
if not data:
|
||||
return 'no data'
|
||||
try:
|
||||
return len(data.decode('base64').decode('zlib'))
|
||||
except:
|
||||
return 'unknown'
|
||||
|
||||
if __name__ == '__main__':
|
||||
rebuild()
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Refresh any files in ../virtualenv_support/ that come from elsewhere
|
||||
"""
|
||||
|
||||
import os
|
||||
try:
|
||||
from urllib.request import urlopen
|
||||
except ImportError:
|
||||
from urllib2 import urlopen
|
||||
import sys
|
||||
|
||||
here = os.path.dirname(__file__)
|
||||
support_location = os.path.join(here, '..', 'virtualenv_support')
|
||||
embedded_location = os.path.join(here, '..', 'virtualenv_embedded')
|
||||
|
||||
embedded_files = [
|
||||
('http://peak.telecommunity.com/dist/ez_setup.py', 'ez_setup.py'),
|
||||
('http://python-distribute.org/distribute_setup.py', 'distribute_setup.py'),
|
||||
]
|
||||
|
||||
support_files = [
|
||||
('http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg', 'setuptools-0.6c11-py2.6.egg'),
|
||||
('http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg', 'setuptools-0.6c11-py2.5.egg'),
|
||||
('http://pypi.python.org/packages/source/d/distribute/distribute-0.6.31.tar.gz', 'distribute-0.6.31.tar.gz'),
|
||||
('http://pypi.python.org/packages/source/p/pip/pip-1.2.1.tar.gz', 'pip-1.2.1.tar.gz'),
|
||||
]
|
||||
|
||||
|
||||
def refresh_files(files, location):
|
||||
for url, filename in files:
|
||||
sys.stdout.write('fetching %s ... ' % url)
|
||||
sys.stdout.flush()
|
||||
f = urlopen(url)
|
||||
content = f.read()
|
||||
f.close()
|
||||
print('done.')
|
||||
filename = os.path.join(location, filename)
|
||||
if os.path.exists(filename):
|
||||
f = open(filename, 'rb')
|
||||
cur_content = f.read()
|
||||
f.close()
|
||||
else:
|
||||
cur_content = ''
|
||||
if cur_content == content:
|
||||
print(' %s up-to-date' % filename)
|
||||
else:
|
||||
print(' overwriting %s' % filename)
|
||||
f = open(filename, 'wb')
|
||||
f.write(content)
|
||||
f.close()
|
||||
|
||||
|
||||
def main():
|
||||
refresh_files(embedded_files, embedded_location)
|
||||
refresh_files(support_files, support_location)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user