Changeset 13708


Ignore:
Timestamp:
17 Feb 2016, 13:34:15 (9 years ago)
Author:
Henrik Bettermann
Message:

Use new bootstrap.py version. Use local grok versions file.

Location:
main/ikobacustom.pcn/trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • main/ikobacustom.pcn/trunk/bootstrap.py

    r12175 r13708  
    2626from optparse import OptionParser
    2727
    28 tmpeggs = tempfile.mkdtemp()
     28__version__ = '2015-07-01'
     29# See zc.buildout's changelog if this version is up to date.
     30
     31tmpeggs = tempfile.mkdtemp(prefix='bootstrap-')
    2932
    3033usage = '''\
     
    3639Python that you want bin/buildout to use.
    3740
    38 Note that by using --find-links to point to local resources, you can keep 
     41Note that by using --find-links to point to local resources, you can keep
    3942this script from going over the network.
    4043'''
    4144
    4245parser = OptionParser(usage=usage)
    43 parser.add_option("-v", "--version", help="use a specific zc.buildout version")
    44 
     46parser.add_option("--version",
     47                  action="store_true", default=False,
     48                  help=("Return bootstrap.py version."))
    4549parser.add_option("-t", "--accept-buildout-test-releases",
    4650                  dest='accept_buildout_test_releases',
     
    5761parser.add_option("-f", "--find-links",
    5862                  help=("Specify a URL to search for buildout releases"))
    59 
     63parser.add_option("--allow-site-packages",
     64                  action="store_true", default=False,
     65                  help=("Let bootstrap.py use existing site packages"))
     66parser.add_option("--buildout-version",
     67                  help="Use a specific zc.buildout version")
     68parser.add_option("--setuptools-version",
     69                  help="Use a specific setuptools version")
     70parser.add_option("--setuptools-to-dir",
     71                  help=("Allow for re-use of existing directory of "
     72                        "setuptools versions"))
    6073
    6174options, args = parser.parse_args()
     75if options.version:
     76    print("bootstrap.py version %s" % __version__)
     77    sys.exit(0)
     78
    6279
    6380######################################################################
    64 # load/install distribute
    65 
    66 to_reload = False
     81# load/install setuptools
     82
    6783try:
    68     import pkg_resources
    69     import setuptools
    70     if not hasattr(pkg_resources, '_distribute'):
    71         to_reload = True
    72         raise ImportError
     84    from urllib.request import urlopen
    7385except ImportError:
    74     ez = {}
    75 
    76     try:
    77         from urllib.request import urlopen
    78     except ImportError:
    79         from urllib2 import urlopen
    80 
    81     exec(urlopen(
    82         'http://downloads.buildout.org/2.1/distribute_setup.py').read(), ez)
    83     setup_args = dict(to_dir=tmpeggs, download_delay=0, no_fake=True)
    84     ez['use_setuptools'](**setup_args)
    85 
    86     if to_reload:
    87         reload(pkg_resources)
    88     import pkg_resources
    89     # This does not (always?) update the default working set.  We will
    90     # do it.
    91     for path in sys.path:
    92         if path not in pkg_resources.working_set.entries:
    93             pkg_resources.working_set.add_entry(path)
     86    from urllib2 import urlopen
     87
     88ez = {}
     89if os.path.exists('ez_setup.py'):
     90    exec(open('ez_setup.py').read(), ez)
     91else:
     92    exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
     93
     94if not options.allow_site_packages:
     95    # ez_setup imports site, which adds site packages
     96    # this will remove them from the path to ensure that incompatible versions
     97    # of setuptools are not in the path
     98    import site
     99    # inside a virtualenv, there is no 'getsitepackages'.
     100    # We can't remove these reliably
     101    if hasattr(site, 'getsitepackages'):
     102        for sitepackage_path in site.getsitepackages():
     103            # Strip all site-packages directories from sys.path that
     104            # are not sys.prefix; this is because on Windows
     105            # sys.prefix is a site-package directory.
     106            if sitepackage_path != sys.prefix:
     107                sys.path[:] = [x for x in sys.path
     108                               if sitepackage_path not in x]
     109
     110setup_args = dict(to_dir=tmpeggs, download_delay=0)
     111
     112if options.setuptools_version is not None:
     113    setup_args['version'] = options.setuptools_version
     114if options.setuptools_to_dir is not None:
     115    setup_args['to_dir'] = options.setuptools_to_dir
     116
     117ez['use_setuptools'](**setup_args)
     118import setuptools
     119import pkg_resources
     120
     121# This does not (always?) update the default working set.  We will
     122# do it.
     123for path in sys.path:
     124    if path not in pkg_resources.working_set.entries:
     125        pkg_resources.working_set.add_entry(path)
    94126
    95127######################################################################
     
    98130ws = pkg_resources.working_set
    99131
     132setuptools_path = ws.find(
     133    pkg_resources.Requirement.parse('setuptools')).location
     134
     135# Fix sys.path here as easy_install.pth added before PYTHONPATH
    100136cmd = [sys.executable, '-c',
     137       'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
    101138       'from setuptools.command.easy_install import main; main()',
    102139       '-mZqNxd', tmpeggs]
     
    111148    cmd.extend(['-f', find_links])
    112149
    113 distribute_path = ws.find(
    114     pkg_resources.Requirement.parse('distribute')).location
    115 
    116150requirement = 'zc.buildout'
    117 version = options.version
     151version = options.buildout_version
    118152if version is None and not options.accept_buildout_test_releases:
    119153    # Figure out the most recent final version of zc.buildout.
     
    122156
    123157    def _final_version(parsed_version):
    124         for part in parsed_version:
    125             if (part[:1] == '*') and (part not in _final_parts):
    126                 return False
    127         return True
     158        try:
     159            return not parsed_version.is_prerelease
     160        except AttributeError:
     161            # Older setuptools
     162            for part in parsed_version:
     163                if (part[:1] == '*') and (part not in _final_parts):
     164                    return False
     165            return True
     166
    128167    index = setuptools.package_index.PackageIndex(
    129         search_path=[distribute_path])
     168        search_path=[setuptools_path])
    130169    if find_links:
    131170        index.add_find_links((find_links,))
     
    150189
    151190import subprocess
    152 if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=distribute_path)) != 0:
     191if subprocess.call(cmd) != 0:
    153192    raise Exception(
    154         "Failed to execute command:\n%s",
    155         repr(cmd)[1:-1])
     193        "Failed to execute command:\n%s" % repr(cmd)[1:-1])
    156194
    157195######################################################################
  • main/ikobacustom.pcn/trunk/versions.cfg

    r12293 r13708  
    22[buildout]
    33# default set of versions we use.
    4 extends= http://grok.zope.org/releaseinfo/grok-1.1.cfg
     4#extends = http://grok.zope.org/releaseinfo/grok-1.1.cfg
     5extends = grok-1.1.cfg
    56
    67versions = versions
Note: See TracChangeset for help on using the changeset viewer.