]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
Fix "pakfire info ..." command.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Jul 2011 17:24:35 +0000 (19:24 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Jul 2011 17:24:35 +0000 (19:24 +0200)
pakfire/base.py
src/pool.c

index 2bb325c4f0d2f624744a575f846006d7bb5acf44..d42d7232bb0b38745cff128e3eb5931f1716145d 100644 (file)
@@ -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)
 
index c70e4093aaa8e7a70506db2a5194e0f1b2d4c53e..02befe528c7a23f502890ca73d85b114c8051565 100644 (file)
@@ -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) {