From: Michael Tremer Date: Sun, 17 Jul 2011 17:24:35 +0000 (+0200) Subject: Fix "pakfire info ..." command. X-Git-Tag: 0.9.3~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1f27e8fe1b97a8774bac7d4ebb043ff6e1c4a096;p=people%2Fms%2Fpakfire.git Fix "pakfire info ..." command. --- diff --git a/pakfire/base.py b/pakfire/base.py index 2bb325c4..d42d7232 100644 --- a/pakfire/base.py +++ b/pakfire/base.py @@ -224,8 +224,13 @@ class Pakfire(object): def info(self, patterns): pkgs = [] + # For all patterns we run a single search which returns us a bunch + # of solvables which are transformed into Package objects. for pattern in patterns: - pkgs += self.repos.get_by_glob(pattern) + solvs = self.pool.search(pattern, satsolver.SEARCH_GLOB, "solvable:name") + + for solv in solvs: + pkgs.append(packages.SolvPackage(self, solv)) return packages.PackageListing(pkgs) diff --git a/src/pool.c b/src/pool.c index c70e4093..02befe52 100644 --- a/src/pool.c +++ b/src/pool.c @@ -88,12 +88,13 @@ PyObject *Pool_size(PoolObject *self) { return Py_BuildValue("i", pool->nsolvables); } -PyObject *_Pool_search(Pool *pool, Repo *repo, const char *match, int option) { +PyObject *_Pool_search(Pool *pool, Repo *repo, const char *match, int option, const char *keyname) { // Prepare the pool, so we can search in it. _Pool_prepare(pool); Dataiterator d; - dataiterator_init(&d, pool, repo, 0, 0, match, option); + dataiterator_init(&d, pool, repo, 0, + keyname && pool ? pool_str2id(pool, keyname, 0) : 0, match, option); PyObject *list = PyList_New(0); @@ -115,12 +116,13 @@ PyObject *_Pool_search(Pool *pool, Repo *repo, const char *match, int option) { PyObject *Pool_search(PoolObject *self, PyObject *args) { const char *match = NULL; int option = SEARCH_SUBSTRING; + const char *keyname = NULL; - if (!PyArg_ParseTuple(args, "s|i", &match, &option)) { + if (!PyArg_ParseTuple(args, "s|is", &match, &option, &keyname)) { /* XXX raise exception */ } - return _Pool_search(self->_pool, NULL, match, option); + return _Pool_search(self->_pool, NULL, match, option, keyname); } PyObject *Pool_set_installed(PoolObject *self, PyObject *args) {