--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/eggs/zc.buildout-1.5.2-py2.6.egg/zc/buildout/bootstrap.txt Sat Jan 08 11:20:57 2011 +0530
@@ -0,0 +1,360 @@
+Make sure the bootstrap script actually works::
+
+ >>> import os, sys
+ >>> from os.path import dirname, join
+ >>> import zc.buildout
+ >>> bootstrap_py = join(
+ ... dirname(
+ ... dirname(
+ ... dirname(
+ ... dirname(zc.buildout.__file__)
+ ... )
+ ... )
+ ... ),
+ ... 'bootstrap', 'bootstrap.py')
+ >>> sample_buildout = tmpdir('sample')
+ >>> os.chdir(sample_buildout)
+ >>> write('buildout.cfg',
+ ... '''
+ ... [buildout]
+ ... parts =
+ ... ''')
+ >>> write('bootstrap.py', open(bootstrap_py).read())
+ >>> print 'X'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py'); print 'X' # doctest: +ELLIPSIS
+ X...
+ Creating directory '/sample/bin'.
+ Creating directory '/sample/parts'.
+ Creating directory '/sample/eggs'.
+ Creating directory '/sample/develop-eggs'.
+ Generated script '/sample/bin/buildout'.
+ ...
+
+ >>> ls(sample_buildout)
+ d bin
+ - bootstrap.py
+ - buildout.cfg
+ d develop-eggs
+ d eggs
+ d parts
+
+
+ >>> ls(sample_buildout, 'bin')
+ - buildout
+
+ >>> print 'X'; ls(sample_buildout, 'eggs') # doctest: +ELLIPSIS
+ X...
+ d zc.buildout-...egg
+
+The buildout script it has generated is a new-style script, using a
+customized site.py.
+
+ >>> buildout_script = join(sample_buildout, 'bin', 'buildout')
+ >>> if sys.platform.startswith('win'):
+ ... buildout_script += '-script.py'
+ >>> print open(buildout_script).read() # doctest: +ELLIPSIS
+ #...
+ <BLANKLINE>
+ import sys
+ sys.path[0:0] = [
+ '/sample/parts/buildout',
+ ]
+ <BLANKLINE>
+ <BLANKLINE>
+ import os
+ path = sys.path[0]
+ if os.environ.get('PYTHONPATH'):
+ path = os.pathsep.join([path, os.environ['PYTHONPATH']])
+ os.environ['BUILDOUT_ORIGINAL_PYTHONPATH'] = os.environ.get('PYTHONPATH', '')
+ os.environ['PYTHONPATH'] = path
+ import site # imports custom buildout-generated site.py
+ <BLANKLINE>
+ import zc.buildout.buildout
+ <BLANKLINE>
+ if __name__ == '__main__':
+ zc.buildout.buildout.main()
+ <BLANKLINE>
+
+The bootstrap process prefers final versions of zc.buildout, so it has
+selected the (generated-locally) 99.99 egg rather than the also-available
+100.0b1 egg. We can see that in the buildout script's site.py.
+
+ >>> buildout_site_py = join(
+ ... sample_buildout, 'parts', 'buildout', 'site.py')
+ >>> print open(buildout_site_py).read() # doctest: +ELLIPSIS
+ "...
+ buildout_paths = [
+ '/sample/eggs/setuptools-...egg',
+ '/sample/eggs/zc.buildout-99.99-pyN.N.egg'
+ ]
+ ...
+
+If you want to accept early releases of zc.buildout, you either need to
+specify an explicit version (using --version here and specifying the
+version in the buildout configuration file using the
+``buildout-version`` option or the ``versions`` option) or specify that you
+accept early releases by using ``--accept-buildout-test-releases`` on the
+bootstrap script.
+
+Here's an example.
+
+ >>> ignored = system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --accept-buildout-test-releases')
+ >>> print open(buildout_site_py).read() # doctest: +ELLIPSIS
+ "...
+ buildout_paths = [
+ '/sample/eggs/setuptools-...egg',
+ '/sample/eggs/zc.buildout-100.0b1-pyN.N.egg'
+ ]
+ ...
+
+Notice we are now using zc.buildout 100.0b1, a non-final release.
+
+The buildout script remembers the decision to accept early releases, and
+alerts the user.
+
+ >>> print system(join('bin', 'buildout')),
+ ... # doctest: +NORMALIZE_WHITESPACE
+ NOTE: Accepting early releases of build system packages. Rerun bootstrap
+ without --accept-buildout-test-releases (-t) to return to default
+ behavior.
+
+This is accomplished within the script itself.
+
+ >>> print open(buildout_script).read() # doctest: +ELLIPSIS
+ #...
+ sys.argv.insert(1, 'buildout:accept-buildout-test-releases=true')
+ print ('NOTE: Accepting early releases of build system packages. Rerun '
+ 'bootstrap without --accept-buildout-test-releases (-t) to return to '
+ 'default behavior.')
+ ...
+
+As the note says, to undo, you just need to re-run bootstrap without
+--accept-buildout-test-releases.
+
+ >>> ignored = system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py')
+ >>> print open(buildout_site_py).read() # doctest: +ELLIPSIS
+ "...
+ buildout_paths = [
+ '/sample/eggs/setuptools-...egg',
+ '/sample/eggs/zc.buildout-99.99-pyN.N.egg'
+ ]
+ ...
+ >>> ('buildout:accept-buildout-test-releases=true' in
+ ... open(buildout_script).read())
+ False
+
+Now we will try the `--version` option, which lets you define a version for
+`zc.buildout`. If not provided, bootstrap will look for the latest one.
+
+Let's try with an unknown version::
+
+ >>> print 'XX'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --version UNKNOWN'); print 'X' # doctest: +ELLIPSIS
+ ...
+ X...
+ No local packages or download links found for zc.buildout==UNKNOWN...
+ ...
+
+Now let's try with `1.1.2`, which happens to exist::
+
+ >>> print 'X'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --version 1.1.2'); print 'X'
+ ...
+ X
+ Generated script '/sample/bin/buildout'.
+ <BLANKLINE>
+ X
+
+Versions older than 1.5.0 put their egg dependencies in the ``buildout`` script.
+Let's make sure it was generated as we expect::
+
+ >>> print open(buildout_script).read() # doctest: +ELLIPSIS
+ #...
+ <BLANKLINE>
+ import sys
+ sys.path[0:0] = [
+ '/sample/eggs/setuptools-...egg',
+ '/sample/eggs/zc.buildout-1.1.2...egg',
+ ]
+ <BLANKLINE>
+ import zc.buildout.buildout
+ <BLANKLINE>
+ if __name__ == '__main__':
+ zc.buildout.buildout.main()
+ <BLANKLINE>
+
+Let's try with `1.2.1`::
+
+ >>> print 'X'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --version 1.2.1'); print 'X' # doctest: +ELLIPSIS
+ ...
+ X
+ Generated script '/sample/bin/buildout'.
+ <BLANKLINE>
+ X
+
+Let's make sure the generated ``buildout`` script uses it::
+
+ >>> print open(buildout_script).read() # doctest: +ELLIPSIS
+ #...
+ <BLANKLINE>
+ import sys
+ sys.path[0:0] = [
+ '/sample/eggs/setuptools-...egg',
+ '/sample/eggs/zc.buildout-1.2.1...egg',
+ ]
+ <BLANKLINE>
+ import zc.buildout.buildout
+ <BLANKLINE>
+ if __name__ == '__main__':
+ zc.buildout.buildout.main()
+ <BLANKLINE>
+
+``zc.buildout`` now can also run with `Distribute` with the `--distribute`
+option::
+
+ >>> print 'X'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --distribute'); print 'X' # doctest: +ELLIPSIS
+ ...
+ X
+ ...
+ Generated script '/sample/bin/buildout'...
+ X
+
+Let's make sure the generated ``site.py`` uses it::
+ >>> print open(buildout_site_py).read() # doctest: +ELLIPSIS
+ "...
+ buildout_paths = [
+ '/sample/eggs/distribute-...egg',
+ '/sample/eggs/zc.buildout-99.99-pyN.N.egg'
+ ]
+ ...
+
+Make sure both options can be used together::
+
+ >>> print 'X'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --distribute --version 1.2.1'); print 'X'
+ ... # doctest: +ELLIPSIS
+ ...
+ X
+ ...
+ Generated script '/sample/bin/buildout'...
+ X
+
+Let's make sure the old-style generated ``buildout`` script uses
+``Distribute`` *and* ``zc.buildout-1.2.1``::
+
+ >>> print open(buildout_script).read() # doctest: +ELLIPSIS
+ #...
+ <BLANKLINE>
+ import sys
+ sys.path[0:0] = [
+ '/sample/eggs/distribute-...egg',
+ '/sample/eggs/zc.buildout-1.2.1...egg',
+ ]
+ <BLANKLINE>
+ import zc.buildout.buildout
+ <BLANKLINE>
+ if __name__ == '__main__':
+ zc.buildout.buildout.main()
+ <BLANKLINE>
+
+Last, the -c option needs to work on bootstrap.py::
+
+ >>> conf_file = os.path.join(sample_buildout, 'other.cfg')
+ >>> f = open(conf_file, 'w')
+ >>> f.write('[buildout]\nparts=\n\n')
+ >>> f.close()
+ >>> print 'X'; print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py -c %s --distribute' % conf_file); print 'X' # doctest: +ELLIPSIS
+ ...
+ X
+ ...
+ Generated script '/sample/bin/buildout'...
+ X
+
+You can specify a location of ez_setup.py or distribute_setup, so you
+can rely on a local or remote location. We'll write our own ez_setup.py
+that we will also use to test some other bootstrap options.
+
+ >>> write('ez_setup.py', '''\
+ ... def use_setuptools(**kwargs):
+ ... import sys, pprint
+ ... pprint.pprint(kwargs, width=40)
+ ... sys.exit()
+ ... ''')
+ >>> print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --setup-source=./ez_setup.py')
+ ... # doctest: +ELLIPSIS
+ {'download_delay': 0,
+ 'to_dir': '...'}
+ <BLANKLINE>
+
+You can also pass a download-cache, and a place in which eggs should be stored
+(they are normally stored in a temporary directory).
+
+ >>> print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --setup-source=./ez_setup.py '+
+ ... '--download-base=./download-cache --eggs=eggs')
+ ... # doctest: +ELLIPSIS
+ {'download_base': '/sample/download-cache/',
+ 'download_delay': 0,
+ 'to_dir': '/sample/eggs'}
+ <BLANKLINE>
+
+Here's the entire help text.
+
+ >>> print system(
+ ... zc.buildout.easy_install._safe_arg(sys.executable)+' '+
+ ... 'bootstrap.py --help'),
+ ... # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
+ Usage: [DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
+ <BLANKLINE>
+ Bootstraps a buildout-based project.
+ <BLANKLINE>
+ Simply run this script in a directory containing a buildout.cfg, using the
+ Python that you want bin/buildout to use.
+ <BLANKLINE>
+ Note that by using --setup-source and --download-base to point to
+ local resources, you can keep this script from going over the network.
+ <BLANKLINE>
+ <BLANKLINE>
+ Options:
+ -h, --help show this help message and exit
+ -v VERSION, --version=VERSION
+ use a specific zc.buildout version
+ -d, --distribute Use Distribute rather than Setuptools.
+ --setup-source=SETUP_SOURCE
+ Specify a URL or file location for the setup file. If
+ you use Setuptools, this will default to
+ http://peak.telecommunity.com/dist/ez_setup.py; if you
+ use Distribute, this will default to http://python-
+ distribute.org/distribute_setup.py.
+ --download-base=DOWNLOAD_BASE
+ Specify a URL or directory for downloading zc.buildout
+ and either Setuptools or Distribute. Defaults to PyPI.
+ --eggs=EGGS Specify a directory for storing eggs. Defaults to a
+ temporary directory that is deleted when the bootstrap
+ script completes.
+ -t, --accept-buildout-test-releases
+ Normally, if you do not specify a --version, the
+ bootstrap script and buildout gets the newest *final*
+ versions of zc.buildout and its recipes and extensions
+ for you. If you use this flag, bootstrap and buildout
+ will get the newest releases even if they are alphas
+ or betas.
+ -c CONFIG_FILE Specify the path to the buildout configuration file to
+ be used.