From 1f035a8f1fa80db2d9c80959ac070baeb5079cfe Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Sat, 15 Sep 2007 15:05:35 -0700 Subject: [PATCH] setup.py: factor out dependency stuff, add workaround for nevow-0.6.0-on-dapper problem --- README | 12 ++++--- calcdeps.py | 52 +++++++++++++++++++++++++++ misc/dependencies/build-deps-setup.py | 11 ++---- setup.py | 21 ++--------- 4 files changed, 65 insertions(+), 31 deletions(-) create mode 100644 calcdeps.py diff --git a/README b/README index f4c3cd3b..dc1c8bb2 100644 --- a/README +++ b/README @@ -69,8 +69,8 @@ gcc make python-dev python-twisted python-nevow python-pyopenssl". http://python.org/ - + Python Twisted (tested against both 2.4 and 2.5) (network and operating - system integration library) + + Twisted Python (tested against 2.2.0, 2.4.0, and 2.5.0) (network and + operating system integration library) http://twistedmatrix.com/ @@ -81,12 +81,16 @@ gcc make python-dev python-twisted python-nevow python-pyopenssl". * web, trial, conch Twisted requires zope.interface, a copy of which is included in the - Twisted distribution. + Twisted distribution. Note that Twisted does *not* require the entire Zope + distribution, merely the much smaller zope.interface component. - + Python Nevow (0.9.18 or later) (web presentation language) + + Python Nevow (0.6.0 or later) (web presentation language) http://divmod.org/trac/wiki/DivmodNevow + Note that the current version of Nevow (0.9.18) requires Twisted 2.4.0 or + later. + + Python setuptools (build and distribution tool) Note: The build process will automatically download and install setuptools diff --git a/calcdeps.py b/calcdeps.py new file mode 100644 index 00000000..45375816 --- /dev/null +++ b/calcdeps.py @@ -0,0 +1,52 @@ + +import os.path + +# This form is used when the unpacked source distribution is copied into our +# tree: +# "file:misc/dependencies/zfec-1.0.2/" +# and this form is used when we provide a tarball +# "file:misc/dependencies/zfec-1.0.2.tar.gz", +# The file: URL can start with either 'misc' or './misc' to get a relative path. + +dependency_tarballs=[ "file:" + os.path.join("misc", "dependencies", fn) + for fn in os.listdir(os.path.join("misc", "dependencies")) + if fn.endswith(".tar.gz") ] + +dependency_links=["http://allmydata.org/trac/tahoe/wiki/Dependencies"] + dependency_tarballs + +nevow_version = None +try: + import nevow + nevow_version = nevow.__version__ +except ImportError: + pass + +install_requires=["zfec >= 1.0.3", + "foolscap >= 0.1.6", + "simplejson >= 1.4", + ] + +# Ubuntu Dapper includes nevow-0.6.0 and twisted-2.2.0, both of which work. +# However, setuptools doesn't know about them, so our install_requires= +# dependency upon nevow causes our 'build-deps' step to try and build the +# latest version (nevow-0.9.18), which *doesn't* work with twisted-2.2.0 . To +# work around this, remove nevow from our dependency list if we detect that +# we've got nevow-0.6.0 installed. This will allow build-deps (and everything +# else) to work on dapper systems that have the python-nevow package +# installed, and shouldn't hurt any other systems. Dapper systems *without* +# python-nevow will try to build it (and will fail unless they also have a +# newer version of Twisted installed). + +if nevow_version != "0.6.0": + install_requires.append("nevow >= 0.6.0") + + +if __name__ == '__main__': + print "install_requires:" + for ir in install_requires: + print " ", ir + print + print "dependency_links:" + for dl in dependency_links: + print " ", dl + print diff --git a/misc/dependencies/build-deps-setup.py b/misc/dependencies/build-deps-setup.py index 3b123742..d9692b9d 100644 --- a/misc/dependencies/build-deps-setup.py +++ b/misc/dependencies/build-deps-setup.py @@ -12,17 +12,10 @@ use_setuptools(min_version=min_version, download_base="file:misc/dependencies/") from setuptools import setup -dependency_tarballs=[ os.path.join("misc", "dependencies", fn) - for fn in os.listdir(os.path.join("misc", "dependencies")) - if fn.endswith(".tar.gz") ] -dependency_links=["http://allmydata.org/trac/tahoe/wiki/Dependencies"] + dependency_tarballs +from calcdeps import install_requires, dependency_links setup(name='tahoe-deps', version="1", - install_requires=["zfec >= 1.0.3", - "foolscap >= 0.1.6", - "simplejson >= 1.4", - "nevow", - ], + install_requires=install_requires, dependency_links=dependency_links, ) diff --git a/setup.py b/setup.py index 3dec614f..0b6accb6 100644 --- a/setup.py +++ b/setup.py @@ -31,6 +31,8 @@ use_setuptools(min_version=min_version, download_base="file:misc/dependencies/") from setuptools import Extension, setup import re, os.path +from calcdeps import install_requires, dependency_links + trove_classifiers=[ "Development Status :: 3 - Alpha", "Environment :: Console", @@ -85,19 +87,6 @@ participating nodes, using an algorithm that can recover the data even if a majority of the nodes are no longer available.""" -# This form is used when the unpacked source distribution is copied into our -# tree: -# "file:misc/dependencies/zfec-1.0.2/" -# and this form is used when we provide a tarball -# "file:misc/dependencies/zfec-1.0.2.tar.gz", -# The file: URL can start with either 'misc' or './misc' to get a relative path. - -dependency_tarballs=[ "file:" + os.path.join("misc", "dependencies", fn) - for fn in os.listdir(os.path.join("misc", "dependencies")) - if fn.endswith(".tar.gz") ] - -dependency_links=["http://allmydata.org/trac/tahoe/wiki/Dependencies"] + dependency_tarballs - setup(name='allmydata-tahoe', version=verstr, description='secure, distributed storage grid', @@ -117,11 +106,7 @@ setup(name='allmydata-tahoe', package_data={ 'allmydata': ['web/*.xhtml', 'web/*.html', 'web/*.css'] }, classifiers=trove_classifiers, test_suite="allmydata.test", - install_requires=["zfec >= 1.0.3", - "foolscap >= 0.1.6", - "simplejson >= 1.4", - "nevow", - ], + install_requires=install_requires, dependency_links=dependency_links, ext_modules=[ Extension("allmydata.Crypto.Cipher.AES", -- 2.45.2