[Checkins] SVN: CMF/trunk/ update to buildout 2 and get `bin/buildout` to succeed for a limited set of parts
Hano Schlichting
cvs-admin at zope.org
Sat Mar 2 20:14:25 UTC 2013
Log message for revision 130012:
update to buildout 2 and get `bin/buildout` to succeed for a limited set of parts
Changed:
U CMF/trunk/bootstrap.py
U CMF/trunk/buildout.cfg
U CMF/trunk/sources.cfg
_U CMF/trunk/src/
U CMF/trunk/versions.cfg
-=-
Modified: CMF/trunk/bootstrap.py
===================================================================
--- CMF/trunk/bootstrap.py 2013-03-02 18:05:29 UTC (rev 130011)
+++ CMF/trunk/bootstrap.py 2013-03-02 20:14:25 UTC (rev 130012)
@@ -18,75 +18,11 @@
use the -c option to specify an alternate configuration file.
"""
-import os, shutil, sys, tempfile, textwrap, urllib, urllib2, subprocess
+import os, shutil, sys, tempfile
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
+tmpeggs = tempfile.mkdtemp()
-# 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]
@@ -100,26 +36,8 @@
'''
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("-v", "--version", help="use a specific zc.buildout version")
+
parser.add_option("-t", "--accept-buildout-test-releases",
dest='accept_buildout_test_releases',
action="store_true", default=False,
@@ -129,49 +47,38 @@
"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",
+parser.add_option("-c", "--config-file",
help=("Specify the path to the buildout configuration "
"file to be used."))
+parser.add_option("-f", "--find-links",
+ help=("Specify a URL to search for buildout releases"))
+
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]
+######################################################################
+# load/install distribute
-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')
-
+to_reload = False
try:
- import pkg_resources
- import setuptools # A flag. Sometimes pkg_resources is installed alone.
+ import pkg_resources, setuptools
if not hasattr(pkg_resources, '_distribute'):
+ to_reload = True
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
+
+ try:
+ from urllib.request import urlopen
+ except ImportError:
+ from urllib2 import urlopen
+
+ exec(urlopen('http://python-distribute.org/distribute_setup.py').read(), ez)
+ setup_args = dict(to_dir=tmpeggs, download_delay=0, no_fake=True)
ez['use_setuptools'](**setup_args)
- if 'pkg_resources' in sys.modules:
- reload(sys.modules['pkg_resources'])
+
+ if to_reload:
+ reload(pkg_resources)
import pkg_resources
# This does not (always?) update the default working set. We will
# do it.
@@ -179,31 +86,26 @@
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)]
+######################################################################
+# Install buildout
-if not has_broken_dash_S:
- cmd.insert(1, '-S')
+ws = pkg_resources.working_set
-find_links = options.download_base
-if not find_links:
- find_links = os.environ.get('bootstrap-testing-find-links')
+cmd = [sys.executable, '-c',
+ 'from setuptools.command.easy_install import main; main()',
+ '-mZqNxd', tmpeggs]
+
+find_links = os.environ.get(
+ 'bootstrap-testing-find-links',
+ options.find_links or
+ ('http://downloads.buildout.org/'
+ if options.accept_buildout_test_releases else None)
+ )
if find_links:
- cmd.extend(['-f', quote(find_links)])
+ cmd.extend(['-f', 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)
+distribute_path = ws.find(
+ pkg_resources.Requirement.parse('distribute')).location
requirement = 'zc.buildout'
version = options.version
@@ -217,7 +119,7 @@
return False
return True
index = setuptools.package_index.PackageIndex(
- search_path=[setup_requirement_path])
+ search_path=[distribute_path])
if find_links:
index.add_find_links((find_links,))
req = pkg_resources.Requirement.parse(requirement)
@@ -239,22 +141,25 @@
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)
+import subprocess
+if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=distribute_path)) != 0:
+ raise Exception(
+ "Failed to execute command:\n%s",
+ repr(cmd)[1:-1])
-ws.add_entry(eggs_dir)
+######################################################################
+# Import and run buildout
+
+ws.add_entry(tmpeggs)
ws.require(requirement)
import zc.buildout.buildout
+
+if not [a for a in args if '=' not in a]:
+ args.append('bootstrap')
+
+# if -c was provided, we push it back into args for buildout' main function
+if options.config_file is not None:
+ args[0:0] = ['-c', options.config_file]
+
zc.buildout.buildout.main(args)
-if not options.eggs: # clean up temporary egg directory
- shutil.rmtree(eggs_dir)
+shutil.rmtree(tmpeggs)
Modified: CMF/trunk/buildout.cfg
===================================================================
--- CMF/trunk/buildout.cfg 2013-03-02 18:05:29 UTC (rev 130011)
+++ CMF/trunk/buildout.cfg 2013-03-02 20:14:25 UTC (rev 130012)
@@ -3,8 +3,7 @@
[buildout]
extends =
sources.cfg
- http://svn.zope.org/repos/main/zopetoolkit/trunk/zopeapp-versions.cfg
- src/Zope2/versions.cfg
+ https://raw.github.com/zopefoundation/Zope/master/versions.cfg
versions.cfg
allow-picked-versions = false
parts =
@@ -14,8 +13,8 @@
docs
checkversions
instance
- i18n-cmfcalendar
- i18n-cmfdefault
+# i18n-cmfcalendar
+# i18n-cmfdefault
eggs =
five.localsitemanager
Products.CMFCalendar
@@ -34,19 +33,18 @@
src/Products.CMFUid
src/Products.DCWorkflow
src/Products.GenericSetup
- src/Zope2
-allowed-eggs-from-site-packages =
unzip = true
extensions = mr.developer
always-accept-server-certificate = true
auto-checkout =
+ Zope
+ five.localsitemanager
sources-dir = develop
[versions]
# develop
-five.localsitemanager =
[test]
@@ -67,21 +65,21 @@
[scripts]
-recipe = z3c.recipe.scripts
+recipe = zc.recipe.egg
eggs =
${buildout:eggs}
Zope2
[zopepy]
-recipe = z3c.recipe.scripts
+recipe = zc.recipe.egg
eggs = ${buildout:eggs}
interpreter = zopepy
scripts = zopepy
[docs]
-recipe = z3c.recipe.scripts
+recipe = zc.recipe.egg
eggs =
${buildout:eggs}
pkginfo
@@ -90,7 +88,7 @@
[checkversions]
-recipe = z3c.recipe.scripts
+recipe = zc.recipe.egg
eggs = z3c.checkversions [buildout]
Modified: CMF/trunk/sources.cfg
===================================================================
--- CMF/trunk/sources.cfg 2013-03-02 18:05:29 UTC (rev 130011)
+++ CMF/trunk/sources.cfg 2013-03-02 20:14:25 UTC (rev 130012)
@@ -1,8 +1,10 @@
[buildout]
extends =
- http://svn.zope.org/repos/main/zopetoolkit/trunk/zopeapp-sources.cfg
- http://svn.zope.org/repos/main/Zope/trunk/sources.cfg
+ http://svn.zope.org/repos/main/zopetoolkit/trunk/ztk-sources.cfg
+ https://raw.github.com/zopefoundation/Zope/master/sources.cfg
svn-zope-org = ^
+github = git://github.com/zopefoundation
+github_push = git at github.com:zopefoundation
[sources]
# CMF
@@ -15,8 +17,8 @@
Products.GenericSetup = svn ${buildout:svn-zope-org}/Products.GenericSetup/trunk
# CMF dependencies
-five.globalrequest = svn ${buildout:svn-zope-org}/five.globalrequest/trunk
-five.localsitemanager = svn ${buildout:svn-zope-org}/five.localsitemanager/trunk
-Products.ZSQLMethods = svn ${buildout:svn-zope-org}/Products.ZSQLMethods/trunk
-Zope = svn ${buildout:svn-zope-org}/Zope/trunk
-zope.globalrequest = svn ${buildout:svn-zope-org}/zope.globalrequest/trunk
+five.globalrequest = git ${buildout:github}/five.globalrequest pushurl=${remotes:github_push}/five.globalrequest
+five.localsitemanager = git ${buildout:github}/five.localsitemanager pushurl=${remotes:github_push}/five.localsitemanager
+Products.ZSQLMethods = git ${buildout:github}/Products.ZSQLMethods pushurl=${remotes:github_push}/Products.ZSQLMethods
+Zope = git ${buildout:github}/Zope pushurl=${remotes:github_push}/Zope
+zope.globalrequest = git ${buildout:github}/zope.globalrequest pushurl=${remotes:github_push}/zope.globalrequest
Property changes on: CMF/trunk/src
___________________________________________________________________
Modified: svn:externals
- ^/Zope/trunk Zope2
^/Products.CMFCalendar/trunk Products.CMFCalendar
^/Products.CMFCore/trunk Products.CMFCore
^/Products.CMFDefault/trunk Products.CMFDefault
^/Products.CMFTopic/trunk Products.CMFTopic
^/Products.CMFUid/trunk Products.CMFUid
^/Products.DCWorkflow/trunk Products.DCWorkflow
^/Products.GenericSetup/trunk Products.GenericSetup
^/five.localsitemanager/trunk five.localsitemanager
+ ^/Products.CMFCalendar/trunk Products.CMFCalendar
^/Products.CMFCore/trunk Products.CMFCore
^/Products.CMFDefault/trunk Products.CMFDefault
^/Products.CMFTopic/trunk Products.CMFTopic
^/Products.CMFUid/trunk Products.CMFUid
^/Products.DCWorkflow/trunk Products.DCWorkflow
^/Products.GenericSetup/trunk Products.GenericSetup
Modified: CMF/trunk/versions.cfg
===================================================================
--- CMF/trunk/versions.cfg 2013-03-02 18:05:29 UTC (rev 130011)
+++ CMF/trunk/versions.cfg 2013-03-02 20:14:25 UTC (rev 130012)
@@ -1,15 +1,15 @@
[versions]
# ZTK KGS overrides (for Zope 2.13)
z3c.recipe.scripts = 1.0.1
-zc.buildout = 1.6.3
-zc.recipe.egg = 1.3.2
-zc.recipe.testrunner = 1.4.0
-zope.testrunner = 4.0.4
# CMF dependencies
five.globalrequest = 1.0
five.localsitemanager = 2.0.5
Products.ZSQLMethods = 2.13.4
+zope.app.applicationcontrol = 3.5.10
+zope.app.appsetup = 3.16.0
+zope.app.locales = 3.7.4
+zope.app.publication = 3.14.0
zope.globalrequest = 1.0
# CMF toolchain
More information about the checkins
mailing list