# Support swig 3.0.5+
# https://github.com/M2Crypto/M2Crypto/issues/24
# https://github.com/M2Crypto/M2Crypto/pull/30
git+https://github.com/M2Crypto/M2Crypto.git@d13a3a46c8934c5f50b31d5f95b23e6e06f845c3#egg=M2Crypto

# This requirements file will fail on Travis CI 12.04 LTS Ubuntu build
# machine under TOX_ENV=py26 with very confusing error (full tracback
# at https://api.travis-ci.org/jobs/66529698/log.txt?deansi=true):

#Traceback (most recent call last):
#  File "setup.py", line 133, in <module>
#    include_package_data=True,
#  File "/opt/python/2.6.9/lib/python2.6/distutils/core.py", line 152, in setup
#    dist.run_commands()
#  File "/opt/python/2.6.9/lib/python2.6/distutils/dist.py", line 975, in run_commands
#    self.run_command(cmd)
#  File "/opt/python/2.6.9/lib/python2.6/distutils/dist.py", line 995, in run_command
#    cmd_obj.run()
#  File "/home/travis/build/letsencrypt/lets-encrypt-preview/.tox/py26/lib/python2.6/site-packages/setuptools/command/test.py", line 142, in run
#    self.with_project_on_sys_path(self.run_tests)
#  File "/home/travis/build/letsencrypt/lets-encrypt-preview/.tox/py26/lib/python2.6/site-packages/setuptools/command/test.py", line 122, in with_project_on_sys_path
#    func()
#  File "/home/travis/build/letsencrypt/lets-encrypt-preview/.tox/py26/lib/python2.6/site-packages/setuptools/command/test.py", line 163, in run_tests
#    testRunner=self._resolve_as_ep(self.test_runner),
#  File "/opt/python/2.6.9/lib/python2.6/unittest.py", line 816, in __init__
#    self.parseArgs(argv)
#  File "/opt/python/2.6.9/lib/python2.6/unittest.py", line 843, in parseArgs
#    self.createTests()
#  File "/opt/python/2.6.9/lib/python2.6/unittest.py", line 849, in createTests
#    self.module)
#  File "/opt/python/2.6.9/lib/python2.6/unittest.py", line 613, in loadTestsFromNames
#    suites = [self.loadTestsFromName(name, module) for name in names]
#  File "/opt/python/2.6.9/lib/python2.6/unittest.py", line 587, in loadTestsFromName
#    return self.loadTestsFromModule(obj)
#  File "/home/travis/build/letsencrypt/lets-encrypt-preview/.tox/py26/lib/python2.6/site-packages/setuptools/command/test.py", line 37, in loadTestsFromModule
#    tests.append(self.loadTestsFromName(submodule))
#  File "/opt/python/2.6.9/lib/python2.6/unittest.py", line 584, in loadTestsFromName
#    parent, obj = obj, getattr(obj, part)
#AttributeError: 'module' object has no attribute 'continuity_auth'

# the above error happens because letsencrypt.continuity_auth cannot import M2Crypto:

#>>> import M2Crypto
#Traceback (most recent call last):
#  File "<stdin>", line 1, in <module>
#  File "/root/lets-encrypt-preview/venv/lib/python2.6/site-packages/M2Crypto-0.21.1-py2.6-linux-x86_64.egg/M2Crypto/__init__.py", line 22, in <module>
#    import m2crypto
#  File "/root/lets-encrypt-preview/venv/lib/python2.6/site-packages/M2Crypto-0.21.1-py2.6-linux-x86_64.egg/M2Crypto/m2crypto.py", line 26, in <module>
#    _m2crypto = swig_import_helper()
#  File "/root/lets-encrypt-preview/venv/lib/python2.6/site-packages/M2Crypto-0.21.1-py2.6-linux-x86_64.egg/M2Crypto/m2crypto.py", line 22, in swig_import_helper
#    _mod = imp.load_module('_m2crypto', fp, pathname, description)
#ImportError: /root/lets-encrypt-preview/venv/lib/python2.6/site-packages/M2Crypto-0.21.1-py2.6-linux-x86_64.egg/M2Crypto/_m2crypto.so: undefined symbol: SSLv2_method

# For more info see:

# - https://github.com/martinpaljak/M2Crypto/commit/84977c532c2444c5487db57146d81bb68dd5431d
# - http://stackoverflow.com/questions/10547332/install-m2crypto-on-a-virtualenv-without-system-packages
# - http://stackoverflow.com/questions/8206546/undefined-symbol-sslv2-method

# In short: Python has been built without SSLv2 support, and
# github.com/M2Crypto/M2Crypto version doesn't contain necessary
# patch, but it's the only one that has a patch for newer versions of
# swig...

# Problem seems not exists on Python 2.7. It's unlikely that the
# target distribution has swig 3.0.5+ and doesn't have Python 2.7, so
# this file should only be used in conjuction with Python 2.6.
