~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to bootstrap.py

  • Committer: Gary Poster
  • Date: 2009-07-13 15:10:05 UTC
  • mto: (8697.27.2 zbuildout)
  • mto: This revision was merged to the branch mainline in revision 8912.
  • Revision ID: gary.poster@canonical.com-20090713151005-wdapt5hy7mri8smu
use temporary, local eggs for buildout work.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
The script accepts buildout command-line options, so you can
18
18
use the -c option to specify an alternate configuration file.
19
19
 
20
 
$Id: bootstrap.py 101879 2009-07-14 01:24:48Z gary $
 
20
$Id: bootstrap.py 101848 2009-07-13 13:45:10Z gary $
21
21
"""
22
22
 
23
23
import os, re, shutil, sys, tempfile, textwrap, urllib, urllib2
56
56
    By using --ez_setup-source and --download-base to point to local resources,
57
57
    you can keep this script from going over the network.
58
58
    ''' % configuration)
59
 
match_equals = re.compile(r'(%s)=(.*)' % ('|'.join(configuration),)).match
 
59
match_equals = re.compile(r'(%s)=(\S*)' % ('|'.join(configuration),)).match
60
60
args = sys.argv[1:]
61
61
if args == ['--help']:
62
62
    print helpstring
63
63
    sys.exit(0)
64
64
 
65
 
# If we end up using a temporary directory for storing our eggs, this will
66
 
# hold the path of that directory.  On the other hand, if an explicit directory
67
 
# is specified in the argv, this will remain None.
 
65
# defaults
68
66
tmpeggs = None
69
67
 
70
68
while args:
86
84
 
87
85
for name in ('--ez_setup-source', '--download-base'):
88
86
    val = configuration[name]
89
 
    if val is not None and '://' not in val: # We're being lazy.
 
87
    if val is not None and '://' not in val: # we're being lazy.
90
88
        configuration[name] = 'file://%s' % (
91
89
            urllib.pathname2url(os.path.abspath(os.path.expanduser(val))),)
92
90
 
93
91
if (configuration['--download-base'] and
94
92
    not configuration['--download-base'].endswith('/')):
95
 
    # Download base needs a trailing slash to make the world happy.
 
93
    # download base needs a trailing slash to make the world happy
96
94
    configuration['--download-base'] += '/'
97
95
 
98
96
if not configuration['--eggs']:
101
99
    configuration['--eggs'] = os.path.abspath(
102
100
        os.path.expanduser(configuration['--eggs']))
103
101
 
104
 
# The requirement is what we will pass to setuptools to specify zc.buildout.
105
 
requirement = 'zc.buildout'
106
102
if configuration['--version']:
107
 
    requirement += '==' + configuration['--version']
 
103
    configuration['--version'] = '==' + configuration['--version']
108
104
 
109
105
try:
110
106
    import pkg_resources
136
132
if configuration['--download-base']:
137
133
    cmd.extend(['-f', quote(configuration['--download-base'])])
138
134
 
139
 
cmd.append(requirement)
 
135
cmd.append('zc.buildout' + configuration['--version'])
140
136
 
141
137
ws = pkg_resources.working_set
142
138
env = dict(
157
153
    sys.exit(exitcode)
158
154
 
159
155
ws.add_entry(configuration['--eggs'])
160
 
ws.require(requirement)
 
156
ws.require('zc.buildout' + configuration['--version'])
161
157
import zc.buildout.buildout
162
158
args.append('bootstrap')
163
159
zc.buildout.buildout.main(args)