# HG changeset patch
# User Augie Fackler <durin42@gmail.com>
# 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 <matthew@matthewwilkes.co.uk> 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,
+    )