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:
+26
-1
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user