bootstrap.py
author gibus
Thu, 19 Sep 2013 14:57:00 +0200
changeset 534 2ee166f109ae
parent 0 40c8f766c9b8
permissions -rw-r--r--
Filter pane should have bigger height to display category dropdown list.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
##############################################################################
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
# Copyright (c) 2006 Zope Corporation and Contributors.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
# All Rights Reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
# This software is subject to the provisions of the Zope Public License,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
# FOR A PARTICULAR PURPOSE.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
#
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
##############################################################################
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
"""Bootstrap a buildout-based project
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
Simply run this script in a directory containing a buildout.cfg.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
The script accepts buildout command-line options, so you can
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
use the -c option to specify an alternate configuration file.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
$Id$
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
"""
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
import os, shutil, sys, tempfile, urllib2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
tmpeggs = tempfile.mkdtemp()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
is_jython = sys.platform.startswith('java')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
try:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
    import pkg_resources
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
except ImportError:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
    ez = {}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
    exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
                         ).read() in ez
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    import pkg_resources
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
if sys.platform == 'win32':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
    def quote(c):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
        if ' ' in c:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
            return '"%s"' % c # work around spawn lamosity on windows
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        else:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
            return c
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
else:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
    def quote (c):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        return c
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
cmd = 'from setuptools.command.easy_install import main; main()'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
ws  = pkg_resources.working_set
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
if len(sys.argv) > 2 and sys.argv[1] == '--version':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
    VERSION = '==%s' % sys.argv[2]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
    args = sys.argv[3:] + ['bootstrap']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
else:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
    VERSION = ''
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
    args = sys.argv[1:] + ['bootstrap']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
if is_jython:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
    import subprocess
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
    assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
           quote(tmpeggs), 'zc.buildout' + VERSION],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
           env=dict(os.environ,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
               PYTHONPATH=
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
               ws.find(pkg_resources.Requirement.parse('setuptools')).location
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
               ),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
           ).wait() == 0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
else:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
    assert os.spawnle(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
        os.P_WAIT, sys.executable, quote (sys.executable),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
        '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
        dict(os.environ,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
            PYTHONPATH=
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
            ws.find(pkg_resources.Requirement.parse('setuptools')).location
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
            ),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
        ) == 0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
ws.add_entry(tmpeggs)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
ws.require('zc.buildout' + VERSION)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
import zc.buildout.buildout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
zc.buildout.buildout.main(args)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
shutil.rmtree(tmpeggs)