Ignore:
Timestamp:
9 Feb 2016, 12:40:02 (9 years ago)
Author:
uli
Message:

Use zc.buildout v2 with new bootstrap.py.

Location:
main/waeup.plonetheme/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.plonetheme/trunk/bootstrap.py

    r10867 r13667  
    1919"""
    2020
    21 import os, shutil, sys, tempfile
     21import os
     22import shutil
     23import sys
     24import tempfile
     25
    2226from optparse import OptionParser
    2327
    24 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-')
    2532
    2633usage = '''\
     
    3239Python that you want bin/buildout to use.
    3340
    34 Note that by using --setup-source and --download-base to point to
    35 local resources, you can keep this script from going over the network.
     41Note that by using --find-links to point to local resources, you can keep
     42this script from going over the network.
    3643'''
    3744
    3845parser = OptionParser(usage=usage)
    39 parser.add_option("-v", "--version", help="use a specific zc.buildout version")
    40 
     46parser.add_option("--version",
     47                  action="store_true", default=False,
     48                  help=("Return bootstrap.py version."))
    4149parser.add_option("-t", "--accept-buildout-test-releases",
    4250                  dest='accept_buildout_test_releases',
     
    4957                        "even if they are alphas or betas."))
    5058parser.add_option("-c", "--config-file",
    51                    help=("Specify the path to the buildout configuration "
    52                          "file to be used."))
     59                  help=("Specify the path to the buildout configuration "
     60                        "file to be used."))
    5361parser.add_option("-f", "--find-links",
    54                    help=("Specify a URL to search for buildout releases"))
    55 
     62                  help=("Specify a URL to search for buildout releases"))
     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"))
    5673
    5774options, args = parser.parse_args()
     75if options.version:
     76    print("bootstrap.py version %s" % __version__)
     77    sys.exit(0)
     78
    5879
    5980######################################################################
    60 # load/install distribute
    61 
    62 to_reload = False
     81# load/install setuptools
     82
    6383try:
    64     import pkg_resources, setuptools
    65     if not hasattr(pkg_resources, '_distribute'):
    66         to_reload = True
    67         raise ImportError
     84    from urllib.request import urlopen
    6885except ImportError:
    69     ez = {}
    70 
    71     try:
    72         from urllib.request import urlopen
    73     except ImportError:
    74         from urllib2 import urlopen
    75 
    76     exec(urlopen('http://python-distribute.org/distribute_setup.py').read(), ez)
    77     setup_args = dict(to_dir=tmpeggs, download_delay=0, no_fake=True)
    78     ez['use_setuptools'](**setup_args)
    79 
    80     if to_reload:
    81         reload(pkg_resources)
    82     import pkg_resources
    83     # This does not (always?) update the default working set.  We will
    84     # do it.
    85     for path in sys.path:
    86         if path not in pkg_resources.working_set.entries:
    87             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)
    88126
    89127######################################################################
    90128# Install buildout
    91129
    92 ws  = pkg_resources.working_set
    93 
     130ws = pkg_resources.working_set
     131
     132setuptools_path = ws.find(
     133    pkg_resources.Requirement.parse('setuptools')).location
     134
     135# Fix sys.path here as easy_install.pth added before PYTHONPATH
    94136cmd = [sys.executable, '-c',
     137       'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
    95138       'from setuptools.command.easy_install import main; main()',
    96139       '-mZqNxd', tmpeggs]
     
    105148    cmd.extend(['-f', find_links])
    106149
    107 distribute_path = ws.find(
    108     pkg_resources.Requirement.parse('distribute')).location
    109 
    110150requirement = 'zc.buildout'
    111 version = options.version
     151version = options.buildout_version
    112152if version is None and not options.accept_buildout_test_releases:
    113153    # Figure out the most recent final version of zc.buildout.
    114154    import setuptools.package_index
    115155    _final_parts = '*final-', '*final'
     156
    116157    def _final_version(parsed_version):
    117         for part in parsed_version:
    118             if (part[:1] == '*') and (part not in _final_parts):
    119                 return False
    120         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
    121167    index = setuptools.package_index.PackageIndex(
    122         search_path=[distribute_path])
     168        search_path=[setuptools_path])
    123169    if find_links:
    124170        index.add_find_links((find_links,))
     
    143189
    144190import subprocess
    145 if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=distribute_path)) != 0:
     191if subprocess.call(cmd) != 0:
    146192    raise Exception(
    147         "Failed to execute command:\n%s",
    148         repr(cmd)[1:-1])
     193        "Failed to execute command:\n%s" % repr(cmd)[1:-1])
    149194
    150195######################################################################
     
    164209zc.buildout.buildout.main(args)
    165210shutil.rmtree(tmpeggs)
     211
  • main/waeup.plonetheme/trunk/buildout.cfg

    r10868 r13667  
    1616    http://effbot.org/downloads
    1717unzip = true
    18 extensions = buildout.dumppickedversions
     18show-picked-versions = true
    1919http-address = 0.0.0.0:5000
    2020eggs =
Note: See TracChangeset for help on using the changeset viewer.