]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/__init__.py
setup: use setuptools (if it is present) at run-time to give a specific error message...
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / __init__.py
1
2 """
3 Decentralized storage grid.
4
5 maintainer web site: U{http://allmydata.com/}
6
7 community web site: U{http://allmydata.org/}
8 """
9
10 __version__ = "unknown"
11 try:
12     from _version import __version__
13 except ImportError:
14     # We're running in a tree that hasn't run "./setup.py darcsver", and didn't
15     # come with a _version.py, so we don't know what our version is. This should
16     # not happen very often.
17     pass
18
19 hush_pyflakes = __version__
20 del hush_pyflakes
21
22 try:
23     import pkg_resources
24 except ImportError:
25     # nevermind
26     pass
27 else:
28     pkg_resources.require("zfec >= 1.3.0")
29     pkg_resources.require("foolscap >= 0.2.3")
30     pkg_resources.require("simplejson >= 1.7.3")
31     pkg_resources.require("pycryptopp >= 0.2.9")
32     pkg_resources.require("nevow >= 0.6.0")
33     pkg_resources.require("zope.interface >= 3.1.0")
34
35 def get_package_versions():
36     import OpenSSL, allmydata, foolscap, nevow, pycryptopp, simplejson, twisted, zfec
37     setuptools_version = "unavailable"
38     try:
39         import setuptools
40         setuptools_version = setuptools.__version__
41     except ImportError:
42         pass
43     return {
44         'pyopenssl': OpenSSL.__version__,
45         'allmydata': allmydata.__version__,
46         'foolscap': foolscap.__version__,
47         'nevow': nevow.__version__,
48         'pycryptopp': pycryptopp.__version__,
49         'setuptools': setuptools_version,
50         'simplejson': simplejson.__version__,
51         'twisted': twisted.__version__,
52         'zfec': zfec.__version__,
53         }
54
55 def get_package_versions_string():
56     versions = get_package_versions()
57     res = []
58     for p in ["allmydata", "foolscap", "pycryptopp", "zfec", "twisted", "nevow"]:
59         if versions.has_key(p):
60             res.append(str(p) + ": " + str(versions[p]))
61             del versions[p]
62         else:
63             res.append(str(p) + ": UNKNOWN")
64     for p, v in versions.iteritems():
65         res.append(str(p) + ": " + str(v))
66     return ', '.join(res)