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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# -*- coding: utf-8 -*-
#
# File: portato/db/eix_sql.py
# This file is part of the Portato-Project, a graphical portage-frontend.
#
# Copyright (C) 2006-2010 René 'Necoro' Neumann
# This is free software. You may redistribute copies of it under the terms of
# the GNU General Public License version 2.
# There is NO WARRANTY, to the extent permitted by law.
#
# Written by René 'Necoro' Neumann <necoro@necoro.net>
from __future__ import absolute_import, with_statement
try:
import sqlite3 as sql
except ImportError:
from pysqlite2 import dbapi2 as sql
import os
from .sql import SQLDatabase
from ..eix import EixReader
from ..helper import debug, warning
from ..backend import system
class EixSQLDatabase (SQLDatabase):
CACHE_FILE = "/var/cache/eix"
def __init__ (self, session):
self.cache = session.get("cache", self.CACHE_FILE)
if not os.path.exists(self.cache):
warning(_("Cache file '%s' does not exist. Using default instead."), self.cache)
self.cache = self.CACHE_FILE
debug("Using '%s' as eix cache file.", self.cache)
session["cache"] = self.cache
SQLDatabase.__init__(self, session)
def search_types(self):
return self.SEARCH_NAME | self.SEARCH_DESCRIPTION
def updated (self):
mtime = os.stat(self.cache).st_mtime
old = float(self.session.get("mtime", 0))
self.session["mtime"] = str(mtime)
return old < mtime
def generate_cat_expr (self, cat):
# be a noop
return cat
@SQLDatabase.con
def populate (self, category = None, connection = None):
inst = set(system.find_packages(pkgSet = system.SET_INSTALLED, key = category, with_version = False))
def _get():
with EixReader(self.cache) as eix:
for cat in eix.categories:
if category is None or cat.name == category:
for pkg in cat.packages:
p = "%s/%s" % (cat.name, pkg.name)
yield (cat.name, pkg.name, pkg.description, p in inst, False)
connection.executemany("INSERT INTO packages (cat, name, descr, inst, disabled) VALUES (?, ?, ?, ?, ?)", _get())
connection.commit()
|