Skip to content

Commit

Permalink
Use bootstrap.py from 1.x branch and upgrade zc.buildout to 1.7.1
Browse files Browse the repository at this point in the history
  • Loading branch information
hvelarde committed Mar 11, 2014
1 parent 8a3a2ef commit 6292a6a
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 53 deletions.
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -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:
Expand Down
106 changes: 58 additions & 48 deletions bootstrap.py
Expand Up @@ -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:
Expand Down Expand Up @@ -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)
Expand All @@ -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))),)
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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'])
Expand All @@ -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)])

Expand Down Expand Up @@ -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]
Expand All @@ -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()
Expand All @@ -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)
5 changes: 1 addition & 4 deletions buildout.cfg
Expand Up @@ -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
flake8=flake8.run:main

0 comments on commit 6292a6a

Please sign in to comment.