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)
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);
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) {