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.installdb = pisi.db.installdb.InstallDB()
|
||||||
self.componentdb = pisi.db.componentdb.ComponentDB()
|
self.componentdb = pisi.db.componentdb.ComponentDB()
|
||||||
self.packagedb = pisi.db.packagedb.PackageDB()
|
self.packagedb = pisi.db.packagedb.PackageDB()
|
||||||
|
self.sourcedb = pisi.db.sourcedb.SourceDB()
|
||||||
|
|
||||||
name = ("info", None)
|
name = ("info", None)
|
||||||
|
|
||||||
@@ -107,6 +108,7 @@ Usage: info <package1> <package2> ... <packagen>
|
|||||||
|
|
||||||
self.installdb_info(arg)
|
self.installdb_info(arg)
|
||||||
self.packagedb_info(arg)
|
self.packagedb_info(arg)
|
||||||
|
self.sourcedb_info(arg)
|
||||||
|
|
||||||
def print_files(self, files):
|
def print_files(self, files):
|
||||||
files.list.sort(key = lambda x:x.path)
|
files.list.sort(key = lambda x:x.path)
|
||||||
@@ -127,6 +129,17 @@ Usage: info <package1> <package2> ... <packagen>
|
|||||||
print _('Reverse Dependencies:'), util.strlist(revdeps)
|
print _('Reverse Dependencies:'), util.strlist(revdeps)
|
||||||
print
|
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):
|
def pisifile_info(self, package):
|
||||||
metadata, files = pisi.api.info_file(package)
|
metadata, files = pisi.api.info_file(package)
|
||||||
ctx.ui.info(_('Package file: %s') % package)
|
ctx.ui.info(_('Package file: %s') % package)
|
||||||
@@ -156,9 +169,21 @@ Usage: info <package1> <package2> ... <packagen>
|
|||||||
if self.packagedb.has_package(package):
|
if self.packagedb.has_package(package):
|
||||||
metadata, files, repo = pisi.api.info_name(package, False)
|
metadata, files, repo = pisi.api.info_name(package, False)
|
||||||
if self.options.short:
|
if self.options.short:
|
||||||
ctx.ui.info(_('[repo] '), noln=True)
|
ctx.ui.info(_('[binary] '), noln=True)
|
||||||
else:
|
else:
|
||||||
ctx.ui.info(_('Package found in %s repository:') % repo)
|
ctx.ui.info(_('Package found in %s repository:') % repo)
|
||||||
self.print_metadata(metadata, self.packagedb)
|
self.print_metadata(metadata, self.packagedb)
|
||||||
else:
|
else:
|
||||||
ctx.ui.info(_("%s is not found in repositories") % package)
|
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.__source_nodes = {}
|
||||||
self.__pkgstosrc = {}
|
self.__pkgstosrc = {}
|
||||||
|
self.__revdeps = {}
|
||||||
|
|
||||||
repodb = pisi.db.repodb.RepoDB()
|
repodb = pisi.db.repodb.RepoDB()
|
||||||
|
|
||||||
for repo in repodb.list_repos():
|
for repo in repodb.list_repos():
|
||||||
doc = repodb.get_repo_doc(repo)
|
doc = repodb.get_repo_doc(repo)
|
||||||
self.__source_nodes[repo], self.__pkgstosrc[repo] = self.__generate_sources(doc)
|
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.sdb = pisi.db.itembyrepo.ItemByRepo(self.__source_nodes, compressed=True)
|
||||||
self.psdb = pisi.db.itembyrepo.ItemByRepo(self.__pkgstosrc)
|
self.psdb = pisi.db.itembyrepo.ItemByRepo(self.__pkgstosrc)
|
||||||
|
self.rvdb = pisi.db.itembyrepo.ItemByRepo(self.__revdeps)
|
||||||
|
|
||||||
def __generate_sources(self, doc):
|
def __generate_sources(self, doc):
|
||||||
|
|
||||||
@@ -51,6 +54,16 @@ class SourceDB(lazydb.LazyDB):
|
|||||||
|
|
||||||
return sources, pkgstosrc
|
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):
|
def list_sources(self, repo=None):
|
||||||
return self.sdb.get_item_keys(repo)
|
return self.sdb.get_item_keys(repo)
|
||||||
|
|
||||||
@@ -89,3 +102,20 @@ class SourceDB(lazydb.LazyDB):
|
|||||||
|
|
||||||
def pkgtosrc(self, name, repo=None):
|
def pkgtosrc(self, name, repo=None):
|
||||||
return self.psdb.get_item(name, repo)
|
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_Release = [ autoxml.String, autoxml.optional]
|
||||||
t_SourceURI = [ autoxml.String, autoxml.optional ] # used in index
|
t_SourceURI = [ autoxml.String, autoxml.optional ] # used in index
|
||||||
|
|
||||||
|
|
||||||
class Package:
|
class Package:
|
||||||
|
|
||||||
t_Name = [ autoxml.String, autoxml.mandatory ]
|
t_Name = [ autoxml.String, autoxml.mandatory ]
|
||||||
@@ -260,3 +259,14 @@ class SpecFile(xmlfile.XmlFile):
|
|||||||
if inst.name == pak.getTagData("Name"):
|
if inst.name == pak.getTagData("Name"):
|
||||||
break
|
break
|
||||||
self._set_i18n(pak, inst)
|
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