pisi info package not prints sourcedb infos

Paket pardus-devel deposunda bulundu:
Name: hal, version: 0.5.10, release: 51
Özet: Donanım soyutlama katmanı
Açıklama: HAL, donanım soyutlama katmanının belirtim ve uygulamasıdır.
Bileşen: desktop.freedesktop
Build Dependencies: udev expat libusb PolicyKit ConsoleKit libsmbios intltool dbus dbus-glib dmidecode util-linux glib2 baselayout
comar-api ntfs_3g gperf
Reverse Build Dependencies: gimp libgphoto2 gst-plugins-good k3b libgpod notification-daemon xorg-server kpowersave virtualbox
libnotify nut kdelibs4 kdebase vlc
This commit is contained in:
Faik Uygur
2008-03-10 10:25:20 +00:00
parent 69782490bf
commit ba2cb4d8c2
3 changed files with 67 additions and 2 deletions
+26 -1
View File
@@ -36,6 +36,7 @@ Usage: info <package1> <package2> ... <packagen>
self.installdb = pisi.db.installdb.InstallDB()
self.componentdb = pisi.db.componentdb.ComponentDB()
self.packagedb = pisi.db.packagedb.PackageDB()
self.sourcedb = pisi.db.sourcedb.SourceDB()
name = ("info", None)
@@ -107,6 +108,7 @@ Usage: info <package1> <package2> ... <packagen>
self.installdb_info(arg)
self.packagedb_info(arg)
self.sourcedb_info(arg)
def print_files(self, files):
files.list.sort(key = lambda x:x.path)
@@ -127,6 +129,17 @@ Usage: info <package1> <package2> ... <packagen>
print _('Reverse Dependencies:'), util.strlist(revdeps)
print
def print_specdata(self, spec, sourcedb=None):
src = spec.source
if ctx.get_option('short'):
ctx.ui.info('%15s - %s' % (src.name, unicode(src.summary)))
else:
ctx.ui.info(unicode(spec))
if sourcedb:
revdeps = [name for name, dep in sourcedb.get_rev_deps(spec.source.name)]
print _('Reverse Build Dependencies:'), util.strlist(revdeps)
print
def pisifile_info(self, package):
metadata, files = pisi.api.info_file(package)
ctx.ui.info(_('Package file: %s') % package)
@@ -156,9 +169,21 @@ Usage: info <package1> <package2> ... <packagen>
if self.packagedb.has_package(package):
metadata, files, repo = pisi.api.info_name(package, False)
if self.options.short:
ctx.ui.info(_('[repo] '), noln=True)
ctx.ui.info(_('[binary] '), noln=True)
else:
ctx.ui.info(_('Package found in %s repository:') % repo)
self.print_metadata(metadata, self.packagedb)
else:
ctx.ui.info(_("%s is not found in repositories") % package)
def sourcedb_info(self, package):
if self.sourcedb.has_spec(package):
repo = self.sourcedb.which_repo(package)
spec = self.sourcedb.get_spec(package)
if self.options.short:
ctx.ui.info(_('[source] '), noln=True)
else:
ctx.ui.info(_('Package found in %s repository:') % repo)
self.print_specdata(spec, self.sourcedb)
else:
ctx.ui.info(_("%s is not found in repositories") % package)
+30
View File
@@ -28,15 +28,18 @@ class SourceDB(lazydb.LazyDB):
self.__source_nodes = {}
self.__pkgstosrc = {}
self.__revdeps = {}
repodb = pisi.db.repodb.RepoDB()
for repo in repodb.list_repos():
doc = repodb.get_repo_doc(repo)
self.__source_nodes[repo], self.__pkgstosrc[repo] = self.__generate_sources(doc)
self.__revdeps[repo] = self.__generate_revdeps(doc)
self.sdb = pisi.db.itembyrepo.ItemByRepo(self.__source_nodes, compressed=True)
self.psdb = pisi.db.itembyrepo.ItemByRepo(self.__pkgstosrc)
self.rvdb = pisi.db.itembyrepo.ItemByRepo(self.__revdeps)
def __generate_sources(self, doc):
@@ -51,6 +54,16 @@ class SourceDB(lazydb.LazyDB):
return sources, pkgstosrc
def __generate_revdeps(self, doc):
revdeps = {}
for spec in doc.tags("SpecFile"):
name = spec.getTag("Source").getTagData("Name")
deps = spec.getTag("Source").getTag("BuildDependencies")
if deps:
for dep in deps.tags("Dependency"):
revdeps.setdefault(dep.firstChild().data(), set()).add((name, dep.toString()))
return revdeps
def list_sources(self, repo=None):
return self.sdb.get_item_keys(repo)
@@ -89,3 +102,20 @@ class SourceDB(lazydb.LazyDB):
def pkgtosrc(self, name, repo=None):
return self.psdb.get_item(name, repo)
def get_rev_deps(self, name, repo=None):
try:
rvdb = self.rvdb.get_item(name, repo)
except Exception: #FIXME: what exception could we catch here, replace with that.
return []
rev_deps = []
for pkg, dep in rvdb:
node = piksemel.parseString(dep)
dependency = pisi.dependency.Dependency()
dependency.package = node.firstChild().data()
if node.attributes():
attr = node.attributes()[0]
dependency.__dict__[attr] = node.getAttribute(attr)
rev_deps.append((pkg, dependency))
return rev_deps
+11 -1
View File
@@ -158,7 +158,6 @@ class Source:
t_Release = [ autoxml.String, autoxml.optional]
t_SourceURI = [ autoxml.String, autoxml.optional ] # used in index
class Package:
t_Name = [ autoxml.String, autoxml.mandatory ]
@@ -260,3 +259,14 @@ class SpecFile(xmlfile.XmlFile):
if inst.name == pak.getTagData("Name"):
break
self._set_i18n(pak, inst)
def __str__(self):
s = _('Name: %s, version: %s, release: %s\n') % (
self.source.name, self.history[0].version, self.history[0].release)
s += _('Summary: %s\n') % unicode(self.source.summary)
s += _('Description: %s\n') % unicode(self.source.description)
s += _('Component: %s\n') % unicode(self.source.partOf)
s += _('Build Dependencies: ')
for x in self.source.buildDependencies:
s += x.package + ' '
return s