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