Commits

Denis Kolodin committed df8bb77

Version 1.0

  • Participants

Comments (0)

Files changed (7)

+python bootstrap.py -d
+pause
+##############################################################################
+#
+# Copyright (c) 2006 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+"""
+
+import os, shutil, sys, tempfile, textwrap, urllib, urllib2, subprocess
+from optparse import OptionParser
+
+if sys.platform == 'win32':
+    def quote(c):
+        if ' ' in c:
+            return '"%s"' % c # work around spawn lamosity on windows
+        else:
+            return c
+else:
+    quote = str
+
+# See zc.buildout.easy_install._has_broken_dash_S for motivation and comments.
+stdout, stderr = subprocess.Popen(
+    [sys.executable, '-Sc',
+     'try:\n'
+     '    import ConfigParser\n'
+     'except ImportError:\n'
+     '    print 1\n'
+     'else:\n'
+     '    print 0\n'],
+    stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
+has_broken_dash_S = bool(int(stdout.strip()))
+
+# In order to be more robust in the face of system Pythons, we want to
+# run without site-packages loaded.  This is somewhat tricky, in
+# particular because Python 2.6's distutils imports site, so starting
+# with the -S flag is not sufficient.  However, we'll start with that:
+if not has_broken_dash_S and 'site' in sys.modules:
+    # We will restart with python -S.
+    args = sys.argv[:]
+    args[0:0] = [sys.executable, '-S']
+    args = map(quote, args)
+    os.execv(sys.executable, args)
+# Now we are running with -S.  We'll get the clean sys.path, import site
+# because distutils will do it later, and then reset the path and clean
+# out any namespace packages from site-packages that might have been
+# loaded by .pth files.
+clean_path = sys.path[:]
+import site
+sys.path[:] = clean_path
+for k, v in sys.modules.items():
+    if k in ('setuptools', 'pkg_resources') or (
+        hasattr(v, '__path__') and
+        len(v.__path__)==1 and
+        not os.path.exists(os.path.join(v.__path__[0],'__init__.py'))):
+        # This is a namespace package.  Remove it.
+        sys.modules.pop(k)
+
+is_jython = sys.platform.startswith('java')
+
+setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py'
+distribute_source = 'http://python-distribute.org/distribute_setup.py'
+
+# parsing arguments
+def normalize_to_url(option, opt_str, value, parser):
+    if value:
+        if '://' not in value: # It doesn't smell like a URL.
+            value = 'file://%s' % (
+                urllib.pathname2url(
+                    os.path.abspath(os.path.expanduser(value))),)
+        if opt_str == '--download-base' and not value.endswith('/'):
+            # Download base needs a trailing slash to make the world happy.
+            value += '/'
+    else:
+        value = None
+    name = opt_str[2:].replace('-', '_')
+    setattr(parser.values, name, value)
+
+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.
+'''
+
+parser = OptionParser(usage=usage)
+parser.add_option("-v", "--version", dest="version",
+                          help="use a specific zc.buildout version")
+parser.add_option("-d", "--distribute",
+                   action="store_true", dest="use_distribute", default=False,
+                   help="Use Distribute rather than Setuptools.")
+parser.add_option("--setup-source", action="callback", dest="setup_source",
+                  callback=normalize_to_url, nargs=1, type="string",
+                  help=("Specify a URL or file location for the setup file. "
+                        "If you use Setuptools, this will default to " +
+                        setuptools_source + "; if you use Distribute, this "
+                        "will default to " + distribute_source +"."))
+parser.add_option("--download-base", action="callback", dest="download_base",
+                  callback=normalize_to_url, nargs=1, type="string",
+                  help=("Specify a URL or directory for downloading "
+                        "zc.buildout and either Setuptools or Distribute. "
+                        "Defaults to PyPI."))
+parser.add_option("--eggs",
+                  help=("Specify a directory for storing eggs.  Defaults to "
+                        "a temporary directory that is deleted when the "
+                        "bootstrap script completes."))
+parser.add_option("-t", "--accept-buildout-test-releases",
+                  dest='accept_buildout_test_releases',
+                  action="store_true", default=False,
+                  help=("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."))
+parser.add_option("-c", None, action="store", dest="config_file",
+                   help=("Specify the path to the buildout configuration "
+                         "file to be used."))
+
+options, args = parser.parse_args()
+
+# if -c was provided, we push it back into args for buildout's main function
+if options.config_file is not None:
+    args += ['-c', options.config_file]
+
+if options.eggs:
+    eggs_dir = os.path.abspath(os.path.expanduser(options.eggs))
+else:
+    eggs_dir = tempfile.mkdtemp()
+
+if options.setup_source is None:
+    if options.use_distribute:
+        options.setup_source = distribute_source
+    else:
+        options.setup_source = setuptools_source
+
+if options.accept_buildout_test_releases:
+    args.append('buildout:accept-buildout-test-releases=true')
+args.append('bootstrap')
+
+try:
+    import pkg_resources
+    import setuptools # A flag.  Sometimes pkg_resources is installed alone.
+    if not hasattr(pkg_resources, '_distribute'):
+        raise ImportError
+except ImportError:
+    ez_code = urllib2.urlopen(
+        options.setup_source).read().replace('\r\n', '\n')
+    ez = {}
+    exec ez_code in ez
+    setup_args = dict(to_dir=eggs_dir, download_delay=0)
+    if options.download_base:
+        setup_args['download_base'] = options.download_base
+    if options.use_distribute:
+        setup_args['no_fake'] = True
+    ez['use_setuptools'](**setup_args)
+    if 'pkg_resources' in sys.modules:
+        reload(sys.modules['pkg_resources'])
+    import pkg_resources
+    # This does not (always?) update the default working set.  We will
+    # do it.
+    for path in sys.path:
+        if path not in pkg_resources.working_set.entries:
+            pkg_resources.working_set.add_entry(path)
+
+cmd = [quote(sys.executable),
+       '-c',
+       quote('from setuptools.command.easy_install import main; main()'),
+       '-mqNxd',
+       quote(eggs_dir)]
+
+if not has_broken_dash_S:
+    cmd.insert(1, '-S')
+
+find_links = options.download_base
+if not find_links:
+    find_links = os.environ.get('bootstrap-testing-find-links')
+if find_links:
+    cmd.extend(['-f', quote(find_links)])
+
+if options.use_distribute:
+    setup_requirement = 'distribute'
+else:
+    setup_requirement = 'setuptools'
+ws = pkg_resources.working_set
+setup_requirement_path = ws.find(
+    pkg_resources.Requirement.parse(setup_requirement)).location
+env = dict(
+    os.environ,
+    PYTHONPATH=setup_requirement_path)
+
+requirement = 'zc.buildout'
+version = options.version
+if version is None and not options.accept_buildout_test_releases:
+    # Figure out the most recent final version of zc.buildout.
+    import setuptools.package_index
+    _final_parts = '*final-', '*final'
+    def _final_version(parsed_version):
+        for part in parsed_version:
+            if (part[:1] == '*') and (part not in _final_parts):
+                return False
+        return True
+    index = setuptools.package_index.PackageIndex(
+        search_path=[setup_requirement_path])
+    if find_links:
+        index.add_find_links((find_links,))
+    req = pkg_resources.Requirement.parse(requirement)
+    if index.obtain(req) is not None:
+        best = []
+        bestv = None
+        for dist in index[req.project_name]:
+            distv = dist.parsed_version
+            if _final_version(distv):
+                if bestv is None or distv > bestv:
+                    best = [dist]
+                    bestv = distv
+                elif distv == bestv:
+                    best.append(dist)
+        if best:
+            best.sort()
+            version = best[-1].version
+if version:
+    requirement = '=='.join((requirement, version))
+cmd.append(requirement)
+
+if is_jython:
+    import subprocess
+    exitcode = subprocess.Popen(cmd, env=env).wait()
+else: # Windows prefers this, apparently; otherwise we would prefer subprocess
+    exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env]))
+if exitcode != 0:
+    sys.stdout.flush()
+    sys.stderr.flush()
+    print ("An error occurred when trying to install zc.buildout. "
+           "Look above this message for any errors that "
+           "were output by easy_install.")
+    sys.exit(exitcode)
+
+ws.add_entry(eggs_dir)
+ws.require(requirement)
+import zc.buildout.buildout
+zc.buildout.buildout.main(args)
+if not options.eggs: # clean up temporary egg directory
+    shutil.rmtree(eggs_dir)
+bin\buildout.exe
+pause
+[buildout]
+parts = python
+develop = .
+eggs = buildout_sample
+
+[python]
+recipe = zc.recipe.egg
+interpreter = python
+eggs = ${buildout:eggs}
+#!wing
+#!version=4.0
+##################################################################
+# Wing IDE project file                                          #
+##################################################################
+[project attributes]
+proj.directory-list = [{'dirloc': loc('.'),
+                        'excludes': (),
+                        'filter': '*',
+                        'include_hidden': False,
+                        'recursive': True,
+                        'watch_for_changes': True}]
+proj.file-type = 'normal'
+[user attributes]
+guimgr.overall-gui-state = {'windowing-policy': 'combined-window',
+                            'windows': [{'name': 'qlClVgvduXQUDx4tEqP7UJCvag'\
+        'q6grJ9',
+        'size-state': 'maximized',
+        'type': 'dock',
+        'view': {'area': 'tall',
+                 'constraint': None,
+                 'current_pages': [0,
+                                   2],
+                 'notebook_display': 'normal',
+                 'notebook_percent': 0.25,
+                 'override_title': None,
+                 'pagelist': [('debug-stack',
+                               'tall',
+                               1,
+                               {}),
+                              ('indent',
+                               'tall',
+                               2,
+                               {}),
+                              ('project',
+                               'tall',
+                               0,
+                               {'tree-state': {'file-sort-method': 'by name',
+        'list-files-first': False,
+        'tree-states': {'deep': {'column-widths': [1.0],
+                                 'expanded-nodes': [],
+                                 'selected-nodes': [(1,)],
+                                 'top-node': (0,)}},
+        'tree-style': 'deep'}}),
+                              ('snippets',
+                               'tall',
+                               0,
+                               {}),
+                              ('source-assistant',
+                               'tall',
+                               2,
+                               {'docstring-during-complete': False,
+                                'wrap-lines': True}),
+                              ('browser',
+                               'tall',
+                               0,
+                               {})],
+                 'primary_view_state': {'area': 'wide',
+        'constraint': None,
+        'current_pages': [1,
+                          1],
+        'notebook_display': 'normal',
+        'notebook_percent': 0.45677694770544286,
+        'override_title': None,
+        'pagelist': [('bookmarks',
+                      'wide',
+                      1,
+                      {}),
+                     ('debug-breakpoints',
+                      'wide',
+                      0,
+                      {}),
+                     ('debug-io',
+                      'wide',
+                      1,
+                      {'attrib-starts': [],
+                       'first-line': 0,
+                       'folded-linenos': [],
+                       'history': {},
+                       'sel-line': 0,
+                       'sel-line-start': 0,
+                       'selection_end': 0,
+                       'selection_start': 0}),
+                     ('debug-probe',
+                      'wide',
+                      2,
+                      {'attrib-starts': [],
+                       'first-line': 0,
+                       'folded-linenos': [],
+                       'history': {},
+                       'sel-line': 0,
+                       'sel-line-start': 0,
+                       'selection_end': 4,
+                       'selection_start': 4}),
+                     ('debug-exceptions',
+                      'wide',
+                      0,
+                      {}),
+                     ('messages',
+                      'wide',
+                      2,
+                      {}),
+                     ('debug-modules',
+                      'wide',
+                      1,
+                      {}),
+                     ('os-command',
+                      'wide',
+                      1,
+                      {}),
+                     ('python-shell',
+                      'wide',
+                      2,
+                      {'attrib-starts': [],
+                       'first-line': 0,
+                       'folded-linenos': [],
+                       'history': {},
+                       'sel-line': 2,
+                       'sel-line-start': 145,
+                       'selection_end': 149,
+                       'selection_start': 149}),
+                     ('interactive-search',
+                      'wide',
+                      0,
+                      {'fScope': {'fFileSetName': u'All Source Files',
+                                  'fLocation': None,
+                                  'fRecursive': True,
+                                  'fType': 'project-files'},
+                       'fSearchSpec': {'fEndPos': None,
+                                       'fIncludeLinenos': True,
+                                       'fInterpretBackslashes': False,
+                                       'fMatchCase': False,
+                                       'fOmitBinary': True,
+                                       'fRegexFlags': 46,
+                                       'fReplaceText': '',
+                                       'fReverse': False,
+                                       'fSearchText': '',
+                                       'fStartPos': 0,
+                                       'fStyle': 'text',
+                                       'fWholeWords': False,
+                                       'fWrap': True},
+                       'fUIOptions': {'fAutoBackground': True,
+                                      'fFilePrefix': 'short-file',
+                                      'fFindAfterReplace': True,
+                                      'fInSelection': False,
+                                      'fIncremental': True,
+                                      'fReplaceOnDisk': False,
+                                      'fShowFirstMatch': False,
+                                      'fShowLineno': True,
+                                      'fShowReplaceWidgets': False},
+                       'replace-entry-expanded': False,
+                       'search-entry-expanded': False}),
+                     ('batch-search',
+                      'wide',
+                      0,
+                      {'fScope': {'fFileSetName': u'All Source Files',
+                                  'fLocation': None,
+                                  'fRecursive': True,
+                                  'fType': 'project-files'},
+                       'fSearchSpec': {'fEndPos': None,
+                                       'fIncludeLinenos': True,
+                                       'fInterpretBackslashes': False,
+                                       'fMatchCase': False,
+                                       'fOmitBinary': True,
+                                       'fRegexFlags': 46,
+                                       'fReplaceText': '',
+                                       'fReverse': False,
+                                       'fSearchText': '',
+                                       'fStartPos': 0,
+                                       'fStyle': 'text',
+                                       'fWholeWords': False,
+                                       'fWrap': True},
+                       'fUIOptions': {'fAutoBackground': True,
+                                      'fFilePrefix': 'short-file',
+                                      'fFindAfterReplace': True,
+                                      'fInSelection': False,
+                                      'fIncremental': True,
+                                      'fReplaceOnDisk': False,
+                                      'fShowFirstMatch': False,
+                                      'fShowLineno': True,
+                                      'fShowReplaceWidgets': False},
+                       'replace-entry-expanded': False,
+                       'search-entry-expanded': False}),
+                     ('debug-data',
+                      'wide',
+                      0,
+                      {}),
+                     ('testing',
+                      'wide',
+                      0,
+                      {'added-files': [],
+                       'filter': '',
+                       'recent-filters': None}),
+                     ('debug-watch',
+                      'wide',
+                      1,
+                      {})],
+        'primary_view_state': {'editor_states': {'bookmarks': ([(loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+        {'displayed-index': 0,
+         'viewer-state': {'history': [-1,
+                                      0,
+                                      1,
+                                      2,
+                                      1,
+                                      6],
+                          'history-pos': 1,
+                          'index': 0,
+                          'top': (0,
+                                  0)}},
+        1289472816.1530001),
+        (loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 1,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 2,
+                           'index': 1,
+                           'top': (0,
+                                   0)}},
+         1289472958.6730001),
+        (loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 2,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 3,
+                           'index': 2,
+                           'top': (0,
+                                   0)}},
+         1289472960.329),
+        (loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 1,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 4,
+                           'index': 1,
+                           'top': (0,
+                                   0)}},
+         1289472966.977),
+        (loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 6,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 5,
+                           'index': 6,
+                           'top': (0,
+                                   0)}},
+         1289472981.0179999),
+        (loc('unknown:<untitled> #28'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 3,
+          'sel-line-start': 95,
+          'selection_end': 95,
+          'selection_start': 95},
+         1293087809.7030001),
+        (loc('unknown:<untitled> #29'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 3,
+          'sel-line-start': 95,
+          'selection_end': 95,
+          'selection_start': 95},
+         1293087849.612),
+        [loc('unknown:<untitled> #30'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 3,
+          'sel-line-start': 95,
+          'selection_end': 95,
+          'selection_start': 95},
+         1293087851.855],
+        (loc('../../Python/270_32/Lib/urllib2.py'),
+         {'attrib-starts': [('AbstractHTTPHandler',
+                             1064),
+                            ('AbstractHTTPHandler.do_open',
+                             1101)],
+          'first-line': 1142,
+          'folded-linenos': [],
+          'sel-line': 1147,
+          'sel-line-start': 42274,
+          'selection_end': 42274,
+          'selection_start': 42274},
+         1293087894.096),
+        (loc('../FinamDaily/loader.py'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 5,
+          'sel-line-start': 175,
+          'selection_end': 189,
+          'selection_start': 189},
+         1293087910.4449999),
+        [loc('../../Python/270_32/Lib/urllib2.py'),
+         {'attrib-starts': [('AbstractHTTPHandler',
+                             1064),
+                            ('AbstractHTTPHandler.do_open',
+                             1101)],
+          'first-line': 1142,
+          'folded-linenos': [],
+          'sel-line': 1147,
+          'sel-line-start': 42274,
+          'selection_end': 42274,
+          'selection_start': 42274},
+         1293088106.835],
+        [loc('../FinamDaily/loader.py'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 5,
+          'sel-line-start': 175,
+          'selection_end': 189,
+          'selection_start': 189},
+         1293088108.8310001],
+        (loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 6,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 5,
+                           'index': 6,
+                           'top': (0,
+                                   0)}},
+         1293088308.365),
+        [loc('unknown:<untitled> #31'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 0,
+          'sel-line-start': 0,
+          'selection_end': 0,
+          'selection_start': 0},
+         1293089562.8010001],
+        [loc('../risk.py'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 15,
+          'sel-line-start': 199,
+          'selection_end': 199,
+          'selection_start': 199},
+         1293090248.658],
+        (loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 6,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 5,
+                           'index': 6,
+                           'top': (0,
+                                   0)}},
+         1296110753.01),
+        [loc('bootstrap.bat'),
+         {'attrib-starts': [],
+          'first-line': 0,
+          'folded-linenos': [],
+          'sel-line': 0,
+          'sel-line-start': 0,
+          'selection_end': 0,
+          'selection_start': 0},
+         1296112976.9260001],
+        [loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+         {'displayed-index': 6,
+          'viewer-state': {'history': [-1,
+                                       0,
+                                       1,
+                                       2,
+                                       1,
+                                       6],
+                           'history-pos': 5,
+                           'index': 6,
+                           'top': (0,
+                                   0)}},
+         1296112978.609]],
+        17),
+        'current-loc': loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'),
+        'editor-states': {loc('../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx'): {''\
+        'displayed-index': 6,
+        'viewer-state': {'history': [-1,
+                                     0,
+                                     1,
+                                     2,
+                                     1,
+                                     6],
+                         'history-pos': 5,
+                         'index': 6,
+                         'top': (0,
+                                 0)}}},
+        'has-focus': True},
+                               'open_files': [u'../../Program Files (x86)/Wing IDE 4.0/resources/doc/en/TOC.idx']},
+        'split_percents': {0: 0.5},
+        'splits': 2,
+        'tab_location': 'top',
+        'user_data': {}},
+                 'split_percents': {0: 0.5},
+                 'splits': 2,
+                 'tab_location': 'left',
+                 'user_data': {}},
+        'window-alloc': (0,
+                         -1,
+                         1346,
+                         702)}]}
+guimgr.visual-state = {loc('bootstrap.bat'): {'attrib-starts': [],
+        'first-line': 0,
+        'folded-linenos': [],
+        'sel-line': 1,
+        'sel-line-start': 24,
+        'selection_end': 29,
+        'selection_start': 29}}
+#!/usr/bin/env python
+
+from setuptools import setup, find_packages
+
+setup(
+    name = "buildout_sample",
+    version = "1.0",
+    url = '',
+    license = '',
+    description = "",
+    author = 'Denis Kolodin',
+    packages = find_packages('src'),
+    package_dir = {'': 'src'},
+    install_requires = ['setuptools'],
+)

src/buildout_sample/__init__.py

Empty file added.