diff -r 5ff1fc726848 -r c6bca38c1cbf eggs/zc.buildout-1.5.2-py2.6.egg/zc/buildout/bootstrap.txt --- /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 + #... + + import sys + sys.path[0:0] = [ + '/sample/parts/buildout', + ] + + + 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 + + import zc.buildout.buildout + + if __name__ == '__main__': + zc.buildout.buildout.main() + + +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'. + + 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 + #... + + import sys + sys.path[0:0] = [ + '/sample/eggs/setuptools-...egg', + '/sample/eggs/zc.buildout-1.1.2...egg', + ] + + import zc.buildout.buildout + + if __name__ == '__main__': + zc.buildout.buildout.main() + + +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'. + + X + +Let's make sure the generated ``buildout`` script uses it:: + + >>> print open(buildout_script).read() # doctest: +ELLIPSIS + #... + + import sys + sys.path[0:0] = [ + '/sample/eggs/setuptools-...egg', + '/sample/eggs/zc.buildout-1.2.1...egg', + ] + + import zc.buildout.buildout + + if __name__ == '__main__': + zc.buildout.buildout.main() + + +``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 + #... + + import sys + sys.path[0:0] = [ + '/sample/eggs/distribute-...egg', + '/sample/eggs/zc.buildout-1.2.1...egg', + ] + + import zc.buildout.buildout + + if __name__ == '__main__': + zc.buildout.buildout.main() + + +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': '...'} + + +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'} + + +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] + + Bootstraps a buildout-based project. + + Simply run this script in a directory containing a buildout.cfg, using the + Python that you want bin/buildout to use. + + Note that by using --setup-source and --download-base to point to + local resources, you can keep this script from going over the network. + + + 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.