From 2841d6a266715f633622b6c6f274cfba3524ac48 Mon Sep 17 00:00:00 2001
From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Thu, 4 Jun 2009 08:37:28 -0700
Subject: [PATCH] setup: add pysqlite and sqlite to get_package_versions()

---
 src/allmydata/__init__.py         | 27 ++++++++++++++++++++++++---
 src/allmydata/scripts/backupdb.py |  5 +++--
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/src/allmydata/__init__.py b/src/allmydata/__init__.py
index 2e2d8b1d..deebb080 100644
--- a/src/allmydata/__init__.py
+++ b/src/allmydata/__init__.py
@@ -133,10 +133,29 @@ def get_platform():
         return platform.platform()
 
 def get_package_versions_and_locations():
-    # because there are a few dependencies that are outside setuptools's ken (Python and
-    # platform), and because setuptools might fail to find something even though import finds
-    # it:
+    # because there are a few dependencies that are outside setuptools's ken
+    # (Python and platform, and sqlite3 if you are on Python >= 2.5), and
+    # because setuptools might fail to find something even though import
+    # finds it:
     import OpenSSL, allmydata, foolscap.api, nevow, platform, pycryptopp, setuptools, simplejson, twisted, zfec, zope.interface
+    pysqlitever = None
+    pysqlitefile = None
+    sqlitever = None
+    try:
+        import sqlite3
+    except ImportError:
+        try:
+            from pysqlite2 import dbapi2
+        except ImportError:
+            pass
+        else:
+            pysqlitever = dbapi2.version
+            pysqlitefile = os.path.dirname(dbapi2.__file__)
+            sqlitever = dbapi2.sqlite_version
+    else:
+        pysqlitever = sqlite3.version
+        pysqlitefile = os.path.dirname(sqlite3.__file__)
+        sqlitever = sqlite3.sqlite_version
 
     d1 = {
         'pyOpenSSL': (OpenSSL.__version__, os.path.dirname(OpenSSL.__file__)),
@@ -146,6 +165,8 @@ def get_package_versions_and_locations():
         'pycryptopp': (pycryptopp.__version__, os.path.dirname(pycryptopp.__file__)),
         'setuptools': (setuptools.__version__, os.path.dirname(setuptools.__file__)),
         'simplejson': (simplejson.__version__, os.path.dirname(simplejson.__file__)),
+        'pysqlite': (pysqlitever, pysqlitefile),
+        'sqlite': (sqlitever, 'unknown'),
         'zope.interface': ('unknown', os.path.dirname(zope.interface.__file__)),
         'Twisted': (twisted.__version__, os.path.dirname(twisted.__file__)),
         'zfec': (zfec.__version__, os.path.dirname(zfec.__file__)),
diff --git a/src/allmydata/scripts/backupdb.py b/src/allmydata/scripts/backupdb.py
index e04e0ea7..8ab41d15 100644
--- a/src/allmydata/scripts/backupdb.py
+++ b/src/allmydata/scripts/backupdb.py
@@ -1,8 +1,9 @@
 
 # the backupdb is only available if sqlite3 is available. Python-2.5.x and
 # beyond include sqlite3 in the standard library. For python-2.4, the
-# "pysqlite2" package (which, despite the confusing name, uses sqlite3) must
-# be installed. On debian, install python-pysqlite2
+# "pysqlite2" "package" (or "module") (which, despite the confusing name, uses
+# sqlite3, and which, confusingly, comes in the "pysqlite" "distribution" (or
+# "package")) must be installed. On debian, install python-pysqlite2
 
 import os.path, sys, time, random, stat
 
-- 
2.45.2