# HG changeset patch # User Augie Fackler # Date 1247015843 18000 # Node ID ec7818110fd293d6fcaaa8e01aaa3044f07d0825 # Parent 283bb903b216b5b1d6821893380e1e1c0ea73abf Start using buildout to bring in external dependencies. This makes running tests easier in situations where dependencies are not always available, such as buildbot. Thanks to Matthew Wilkes for help and moral support. diff -r 283bb903b216 -r ec7818110fd2 .hgignore --- a/.hgignore Fri Jul 10 12:09:09 2009 +0200 +++ b/.hgignore Tue Jul 07 20:17:23 2009 -0500 @@ -12,6 +12,12 @@ *,cover tests/.coverage *.git +*.egg-info +eggs +parts +.installed.cfg +bin +develop-eggs .gitignore .DS_Store .settings diff -r 283bb903b216 -r ec7818110fd2 bootstrap.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bootstrap.py Tue Jul 07 20:17:23 2009 -0500 @@ -0,0 +1,52 @@ +############################################################################## +# +# Copyright (c) 2006 Zope Corporation 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. + +$Id: bootstrap.py 73144 2007-03-12 05:25:36Z baijum $ +""" + +import os, shutil, sys, tempfile, urllib2 + +tmpeggs = tempfile.mkdtemp() + +ez = {} +exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' + ).read() in ez +ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) + +import pkg_resources + +cmd = 'from setuptools.command.easy_install import main; main()' +if sys.platform == 'win32': + cmd = '"%s"' % cmd # work around spawn lamosity on windows + +ws = pkg_resources.working_set +assert os.spawnle( + os.P_WAIT, sys.executable, sys.executable, + '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout', + dict(os.environ, + PYTHONPATH= + ws.find(pkg_resources.Requirement.parse('setuptools')).location + ), + ) == 0 + +ws.add_entry(tmpeggs) +ws.require('zc.buildout') +import zc.buildout.buildout +zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap']) +shutil.rmtree(tmpeggs) diff -r 283bb903b216 -r ec7818110fd2 buildout.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildout.cfg Tue Jul 07 20:17:23 2009 -0500 @@ -0,0 +1,44 @@ +[buildout] +parts = + python + omelette +develop = + . + thirdparty/google_appengine/lib/django + thirdparty/google_appengine/lib/yaml + thirdparty/google_appengine/lib/webob +# commented out because antlr3 doesn't succeed at setup.py +# thirdparty/google_appengine/lib/antlr3 +# commented out because doing so causes changes to the included version +# thirdparty/coverage +eggs = + melange + PyYAML + WebOb + gaeftest + zope.testbrowser + Paver + pylint +# ditto above per-package +# antlr_python_runtime +# coverage + +[python] +recipe = zc.recipe.egg +interpreter = python +eggs = + ${buildout:eggs} +extra-paths = + ${buildout:directory}/app + ${buildout:directory}/thirdparty + ${buildout:directory}/thirdparty/google_appengine + ${buildout:directory}/thirdparty/google_appengine/lib + ${buildout:directory}/thirdparty/google_appengine/google + +[omelette] +recipe = collective.recipe.omelette +eggs = + ${python:eggs} +packages = + ${buildout:directory}/app ./app + ${buildout:directory}/thirdparty/google_appengine/google ./google diff -r 283bb903b216 -r ec7818110fd2 setup.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setup.py Tue Jul 07 20:17:23 2009 -0500 @@ -0,0 +1,37 @@ +"""Minimal setup script to appease buildout for Melange. +""" +import os +import re +from setuptools import setup, find_packages + +match_version = re.compile("version: ([0-9\-]+)") +try: + appyaml = open(os.path.join("app", "app.yaml.template")) + version = match_version.findall(appyaml.read())[0] +except: + version = "UNKNOWN" + + +setup( + name = 'melange', + description=("The goal of this project is to create a framework for " + "representing Open Source contribution workflows, such as" + " the existing Google Summer of Code TM (GSoC) program."), + version = version, + packages = find_packages(exclude=['app.django.*','thirdparty','parts']), + author=open("AUTHORS").read(), + url='http://code.google.com/p/soc', + license='Apache2', + install_requires = [ + ], + tests_require=[ + 'zope.testbrowser', + 'gaeftest', + 'nose', + ], + entry_points = {'console_scripts': ['run-tests = tests.run:main', + ], + }, + include_package_data = True, + zip_safe = False, + )