diff --git a/bin/compile b/bin/compile index aa16b9c..65b466b 100755 --- a/bin/compile +++ b/bin/compile @@ -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. diff --git a/vendor/virtualenv-1.8.4/bin/rebuild-script.py b/vendor/virtualenv-1.8.4/bin/rebuild-script.py new file mode 100755 index 0000000..44fb129 --- /dev/null +++ b/vendor/virtualenv-1.8.4/bin/rebuild-script.py @@ -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() + diff --git a/vendor/virtualenv-1.8.4/bin/refresh-support-files.py b/vendor/virtualenv-1.8.4/bin/refresh-support-files.py new file mode 100755 index 0000000..bad9419 --- /dev/null +++ b/vendor/virtualenv-1.8.4/bin/refresh-support-files.py @@ -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()