From 6292a6a9b6f06de24bae7b2ab2f6270729773185 Mon Sep 17 00:00:00 2001 From: hvelarde Date: Tue, 11 Mar 2014 11:53:32 -0300 Subject: [PATCH] Use bootstrap.py from 1.x branch and upgrade zc.buildout to 1.7.1 --- Makefile | 2 +- bootstrap.py | 106 ++++++++++++++++++++++++++++----------------------- buildout.cfg | 5 +-- 3 files changed, 60 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index 156450e..71f1a5e 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ test: bin/flake8 plonesocial bin/buildout: bin/python - bin/easy_install zc.buildout==1.6.3 + bin/easy_install zc.buildout==1.7.1 bin/easy_install distribute==0.6.28 bin/python: diff --git a/bootstrap.py b/bootstrap.py index 0722f8a..d5e8be1 100644 --- a/bootstrap.py +++ b/bootstrap.py @@ -18,13 +18,13 @@ use the -c option to specify an alternate configuration file. """ -import os, shutil, sys, tempfile, textwrap, urllib, urllib2, subprocess +import os, shutil, sys, tempfile, urllib, urllib2, subprocess from optparse import OptionParser if sys.platform == 'win32': def quote(c): if ' ' in c: - return '"%s"' % c# work around spawn lamosity on windows + return '"%s"' % c # work around spawn lamosity on windows else: return c else: @@ -57,12 +57,12 @@ def quote(c): # out any namespace packages from site-packages that might have been # loaded by .pth files. clean_path = sys.path[:] -import site +import site # imported because of its side effects sys.path[:] = clean_path for k, v in sys.modules.items(): if k in ('setuptools', 'pkg_resources') or ( hasattr(v, '__path__') and - len(v.__path__)==1 and + len(v.__path__) == 1 and not os.path.exists(os.path.join(v.__path__[0], '__init__.py'))): # This is a namespace package. Remove it. sys.modules.pop(k) @@ -71,15 +71,12 @@ def quote(c): setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py' distribute_source = 'http://python-distribute.org/distribute_setup.py' +distribute_source = 'https://bitbucket.org/pypa/setuptools/raw/f657df1f1ed46596d236376649c99a470662b4ba/distribute_setup.py' - +# parsing arguments def normalize_to_url(option, opt_str, value, parser): - """ parsing arguments - """ - if value: - # It doesn't smell like a URL. - if '://' not in value: + if '://' not in value: # It doesn't smell like a URL. value = 'file://%s' % ( urllib.pathname2url( os.path.abspath(os.path.expanduser(value))),) @@ -105,43 +102,40 @@ def normalize_to_url(option, opt_str, value, parser): parser = OptionParser(usage=usage) parser.add_option("-v", "--version", dest="version", - help="use a specific zc.buildout version") -parser.add_option("-d", "--distribute", action="store_true", dest="use_distribute", default=False, - help="Use Distribute rather than Setuptools.") + help="use a specific zc.buildout version") +parser.add_option("-d", "--distribute", + action="store_true", dest="use_distribute", default=False, + help="Use Distribute rather than Setuptools.") parser.add_option("--setup-source", action="callback", dest="setup_source", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or file location for the setup file. " - "If you use Setuptools, this will default to " + - setuptools_source + "; if you use Distribute, this " - "will default to " + distribute_source +".")) + callback=normalize_to_url, nargs=1, type="string", + help=("Specify a URL or file location for the setup file. " + "If you use Setuptools, this will default to " + + setuptools_source + "; if you use Distribute, this " + "will default to " + distribute_source + ".")) parser.add_option("--download-base", action="callback", dest="download_base", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or directory for downloading " - "zc.buildout and either Setuptools or Distribute. " - "Defaults to PyPI.")) + callback=normalize_to_url, nargs=1, type="string", + help=("Specify a URL or directory for downloading " + "zc.buildout and either Setuptools or Distribute. " + "Defaults to PyPI.")) parser.add_option("--eggs", - help=("Specify a directory for storing eggs. Defaults to " - "a temporary directory that is deleted when the " - "bootstrap script completes.")) + help=("Specify a directory for storing eggs. Defaults to " + "a temporary directory that is deleted when the " + "bootstrap script completes.")) parser.add_option("-t", "--accept-buildout-test-releases", - dest='accept_buildout_test_releases', - action="store_true", default=False, - help=("Normally, if you do not specify a --version, the " - "bootstrap script and buildout gets the newest " - "*final* versions of zc.buildout and its recipes and " - "extensions for you. If you use this flag, " - "bootstrap and buildout will get the newest releases " - "even if they are alphas or betas.")) + dest='accept_buildout_test_releases', + action="store_true", default=False, + help=("Normally, if you do not specify a --version, the " + "bootstrap script and buildout gets the newest " + "*final* versions of zc.buildout and its recipes and " + "extensions for you. If you use this flag, " + "bootstrap and buildout will get the newest releases " + "even if they are alphas or betas.")) parser.add_option("-c", None, action="store", dest="config_file", - help=("Specify the path to the buildout configuration " - "file to be used.")) + help=("Specify the path to the buildout configuration " + "file to be used.")) options, args = parser.parse_args() -# if -c was provided, we push it back into args for buildout's main function -if options.config_file is not None: - args += ['-c', options.config_file] - if options.eggs: eggs_dir = os.path.abspath(os.path.expanduser(options.eggs)) else: @@ -154,13 +148,11 @@ def normalize_to_url(option, opt_str, value, parser): options.setup_source = setuptools_source if options.accept_buildout_test_releases: - args.append('buildout:accept-buildout-test-releases=true') -args.append('bootstrap') + args.insert(0, 'buildout:accept-buildout-test-releases=true') try: import pkg_resources - # A flag. Sometimes pkg_resources is installed alone. - import setuptools + import setuptools # A flag. Sometimes pkg_resources is installed alone. if not hasattr(pkg_resources, '_distribute'): raise ImportError except ImportError: @@ -173,6 +165,8 @@ def normalize_to_url(option, opt_str, value, parser): setup_args['download_base'] = options.download_base if options.use_distribute: setup_args['no_fake'] = True + if sys.version_info[:2] == (2, 4): + setup_args['version'] = '0.6.32' ez['use_setuptools'](**setup_args) if 'pkg_resources' in sys.modules: reload(sys.modules['pkg_resources']) @@ -195,6 +189,8 @@ def normalize_to_url(option, opt_str, value, parser): find_links = options.download_base if not find_links: find_links = os.environ.get('bootstrap-testing-find-links') +if not find_links and options.accept_buildout_test_releases: + find_links = 'http://downloads.buildout.org/' if find_links: cmd.extend(['-f', quote(find_links)]) @@ -231,6 +227,8 @@ def _final_version(parsed_version): bestv = None for dist in index[req.project_name]: distv = dist.parsed_version + if distv >= pkg_resources.parse_version('2dev'): + continue if _final_version(distv): if bestv is None or distv > bestv: best = [dist] @@ -240,15 +238,18 @@ def _final_version(parsed_version): if best: best.sort() version = best[-1].version + if version: - requirement = '=='.join((requirement, version)) + requirement += '=='+version +else: + requirement += '<2dev' + cmd.append(requirement) if is_jython: import subprocess exitcode = subprocess.Popen(cmd, env=env).wait() -else: - # Windows prefers this, apparently; otherwise we would prefer subprocess +else: # Windows prefers this, apparently; otherwise we would prefer subprocess exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env])) if exitcode != 0: sys.stdout.flush() @@ -261,7 +262,16 @@ def _final_version(parsed_version): ws.add_entry(eggs_dir) ws.require(requirement) import zc.buildout.buildout + +# If there isn't already a command in the args, add bootstrap +if not [a for a in args if '=' not in a]: + args.append('bootstrap') + + +# if -c was provided, we push it back into args for buildout's main function +if options.config_file is not None: + args[0:0] = ['-c', options.config_file] + zc.buildout.buildout.main(args) -if not options.eggs: - # clean up temporary egg directory +if not options.eggs: # clean up temporary egg directory shutil.rmtree(eggs_dir) diff --git a/buildout.cfg b/buildout.cfg index bca2500..5e1d57b 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -8,12 +8,9 @@ package-extras = [test] parts += flake8 -[versions] -zc.buildout = 1.6.3 - [flake8] recipe = zc.recipe.egg eggs = flake8 ${instance:eggs} entry-points = - flake8=flake8.run:main \ No newline at end of file + flake8=flake8.run:main