~mvo/software-center/trigger-memory-leak

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/python

import apt
import os
import sys
import xapian

sys.path.insert(0, "../")
from softwarecenter.enums import XAPIAN_VALUE_PKGNAME, XAPIAN_VALUE_APPNAME, XAPIAN_VALUE_SUMMARY
from softwarecenter.paths import XAPIAN_BASE_PATH


if __name__ == "__main__":

    cache = apt.Cache()

    pathname = os.path.join(XAPIAN_BASE_PATH, "xapian")
    db = xapian.Database(pathname)

    installed = []
    for m in db.postlist(""):
        doc = db.get_document(m.docid)
        pkgname = doc.get_value(XAPIAN_VALUE_PKGNAME)
        appname = doc.get_value(XAPIAN_VALUE_APPNAME)
        summary = doc.get_value(XAPIAN_VALUE_SUMMARY)
        if pkgname in cache and cache[pkgname].is_installed:
            installed.append("%s: %s [%s]" % (appname, summary, pkgname))

    print "\n".join(sorted(installed, 
                           cmp=lambda x, y: cmp(x.split(":")[0].lower(),
                                                y.split(":")[0].lower())))