* because of a compatibility problem with building the index, can't make

the package -> metadata change before all clients are updated and still 
have the source info . yes, i know this sounds silly. the new packagedb 
is tagged to packagedb-metadata.py
This commit is contained in:
Eray Özkural
2006-04-20 13:03:20 +00:00
parent 78878638e8
commit c2fa9891a5
2 changed files with 12 additions and 35 deletions
+2 -2
View File
@@ -12,9 +12,9 @@
# PiSi version # PiSi version
__version__ = "1.0.8" __version__ = "1.0.9"
__dbversion__ = "1.0.8" __dbversion__ = "1.0.9"
__filesdbversion__ = "1.0.5" # yes, this is the real bottleneck __filesdbversion__ = "1.0.5" # yes, this is the real bottleneck
__all__ = [ 'api', 'config', 'packagedb', 'installdb', 'search' ] __all__ = [ 'api', 'config', 'packagedb', 'installdb', 'search' ]
+9 -32
View File
@@ -16,7 +16,7 @@
# Authors: Eray Ozkural <eray@pardus.org.tr> # Authors: Eray Ozkural <eray@pardus.org.tr>
# Baris Metin <baris@pardus.org.tr> # Baris Metin <baris@pardus.org.tr>
# we basically store everything in MetaData # we basically store everything in PackageInfo class
# yes, we are cheap # yes, we are cheap
import os import os
@@ -33,7 +33,6 @@ import pisi.context as ctx
import pisi.lockeddbshelve as shelve import pisi.lockeddbshelve as shelve
from pisi.itembyrepodb import ItemByRepoDB from pisi.itembyrepodb import ItemByRepoDB
import pisi.itembyrepodb as itembyrepodb import pisi.itembyrepodb as itembyrepodb
from pisi.metadata import MetaData
class Error(pisi.Error): class Error(pisi.Error):
pass pass
@@ -59,27 +58,17 @@ class PackageDB(object):
self.d.destroy() self.d.destroy()
self.dr.destroy() self.dr.destroy()
def has_metadata(self, name, repo=None, txn = None):
return self.d.has_key(name, repo, txn=txn)
def has_package(self, name, repo=None, txn = None): def has_package(self, name, repo=None, txn = None):
return self.d.has_key(name, repo, txn=txn) return self.d.has_key(name, repo, txn=txn)
def get_metadata(self, name, repo=None, txn = None): def get_package(self, name, repo=None, txn = None):
try: try:
return self.d.get_item(name, repo, txn=txn) return self.d.get_item(name, repo, txn=txn)
except pisi.itembyrepodb.NotfoundError, e: except pisi.itembyrepodb.NotfoundError, e:
raise Error(_('Package %s not found') % name) raise Error(_('Package %s not found') % name)
def get_package(self, name, repo=None, txn = None):
return self.get_metadata(name, repo, txn).package
def get_metadata_repo(self, name, repo=None, txn = None):
return self.d.get_item_repo(name, repo, txn=txn)
def get_package_repo(self, name, repo=None, txn = None): def get_package_repo(self, name, repo=None, txn = None):
metadata, repo = self.get_metadata_repo(name, repo, txn=txn) return self.d.get_item_repo(name, repo, txn=txn)
return metadata.package, repo
def which_repo(self, name, txn = None): def which_repo(self, name, txn = None):
return self.d.which_repo(name, txn=txn) return self.d.which_repo(name, txn=txn)
@@ -90,18 +79,14 @@ class PackageDB(object):
else: else:
return [] return []
def list_metadatas(self, repo=None, show_tracking=False): def list_packages(self, repo=None, show_tracking=False):
return self.d.list(repo, show_tracking=show_tracking) return self.d.list(repo, show_tracking=show_tracking)
def list_packages(self, repo=None, show_tracking=False): def add_package(self, package_info, repo, txn = None):
return self.list_metadatas(repo, show_tracking)
def add_metadata(self, metadata, repo, txn = None):
package_info = metadata.package
name = str(package_info.name) name = str(package_info.name)
def proc(txn): def proc(txn):
self.d.add_item(name, metadata, repo, txn) self.d.add_item(name, package_info, repo, txn)
for dep in package_info.runtimeDependencies(): for dep in package_info.runtimeDependencies():
dep_name = str(dep.package) dep_name = str(dep.package)
if self.dr.has_key(dep_name, None, txn): if self.dr.has_key(dep_name, None, txn):
@@ -120,22 +105,17 @@ class PackageDB(object):
for (lang, doc) in package_info.description.iteritems(): for (lang, doc) in package_info.description.iteritems():
if lang in ['en', 'tr']: if lang in ['en', 'tr']:
pisi.search.add_doc('description', lang, package_info.name, doc, txn) pisi.search.add_doc('description', lang, package_info.name, doc, txn)
ctx.txn_proc(proc, txn)
def add_package(self, package_info, repo, txn = None): ctx.txn_proc(proc, txn)
metadata = MetaData()
metadata.package = package_info
self.add_metadata(metadata, repo, txn)
def clear(self, txn = None): def clear(self, txn = None):
self.d.clear() self.d.clear()
self.dr.clear() self.dr.clear()
def remove_metadata(self, name, repo = None, txn = None): def remove_package(self, name, repo = None, txn = None):
name = str(name) name = str(name)
def proc(txn): def proc(txn):
metadata = self.d.get_item(name, repo, txn=txn) package_info = self.d.get_item(name, repo, txn=txn)
package_info = metadata.package
self.d.remove_item(name, repo, txn=txn) self.d.remove_item(name, repo, txn=txn)
if self.dr.has_key(name, repo, txn=txn): if self.dr.has_key(name, repo, txn=txn):
self.dr.remove_item(name, repo, txn=txn) self.dr.remove_item(name, repo, txn=txn)
@@ -144,9 +124,6 @@ class PackageDB(object):
ctx.componentdb.remove_package(package_info.partOf, package_info.name, txn) ctx.componentdb.remove_package(package_info.partOf, package_info.name, txn)
self.d.txn_proc(proc, txn) self.d.txn_proc(proc, txn)
def remove_package(self, name, repo = None, txn = None):
return self.remove_metadata(name, repo, txn)
def remove_repo(self, repo, txn = None): def remove_repo(self, repo, txn = None):
def proc(txn): def proc(txn):
self.d.remove_repo(repo, txn=txn) self.d.remove_repo(repo, txn=txn)