return obj;
}
+static PyObject* Pakfire_whatrequires(PakfireObject* self, PyObject* args) {
+ const char* requires = NULL;
+
+ if (!PyArg_ParseTuple(args, "s", &requires))
+ return NULL;
+
+ struct pakfire_packagelist* list = pakfire_whatrequires(self->pakfire, requires, 0);
+
+ PyObject* obj = PyList_FromPackageList(list);
+ pakfire_packagelist_unref(list);
+
+ return obj;
+}
+
static PyObject* Pakfire_search(PakfireObject* self, PyObject* args) {
const char* what;
METH_VARARGS|METH_KEYWORDS,
NULL
},
+ {
+ "whatrequires",
+ (PyCFunction)Pakfire_whatrequires,
+ METH_VARARGS,
+ NULL
+ },
{ NULL },
};
PakfireRepo pakfire_get_repo(Pakfire pakfire, const char* name);
struct pakfire_packagelist* pakfire_whatprovides(Pakfire pakfire, const char* provides, int flags);
+struct pakfire_packagelist* pakfire_whatrequires(Pakfire pakfire, const char* what, int flags);
struct pakfire_packagelist* pakfire_search(Pakfire pakfire, const char* what, int flags);
// Logging
pakfire_update;
pakfire_version_compare;
pakfire_whatprovides;
+ pakfire_whatrequires;
# arch
pakfire_arch_native;
}
}
+PAKFIRE_EXPORT struct pakfire_packagelist* pakfire_whatrequires(Pakfire pakfire, const char* what, int flags) {
+ // Refresh repositories
+ int r = pakfire_refresh(pakfire, 0);
+ if (r)
+ return NULL;
+
+ // Get the pool ready
+ pakfire_pool_apply_changes(pakfire);
+
+ // Translate dependency to ID
+ Id dep = pakfire_parse_dep(pakfire, what);
+ if (!dep) {
+ errno = EINVAL;
+ return NULL;
+ }
+
+ Queue matches;
+ queue_init(&matches);
+
+ // Search for anything that matches
+ pool_whatmatchesdep(pakfire->pool, SOLVABLE_REQUIRES, dep, &matches, 0);
+
+ // Create a packagelist
+ struct pakfire_packagelist* list = pakfire_packagelist_from_queue(pakfire, &matches);
+
+ // Cleanup
+ queue_free(&matches);
+
+ // Sort the list
+ if (list) {
+ pakfire_packagelist_sort(list);
+ }
+
+ return list;
+}
+
PAKFIRE_EXPORT struct pakfire_packagelist* pakfire_search(Pakfire pakfire, const char* what, int flags) {
// Refresh repositories
int r = pakfire_refresh(pakfire, 0);
provides.add_argument("pattern", nargs="+", help=_("File or feature to search for"))
provides.set_defaults(func=self.handle_provides)
+ # requires
+ requires = subparsers.add_parser("requires",
+ help=_("Get a list of packages that require this dependency"))
+ requires.add_argument("pattern", required=True,
+ help=_("File or feature to search for"))
+ requires.set_defaults(func=self.handle_requires)
+
# reinstall
reinstall = subparsers.add_parser("reinstall",
help=_("Reinstall one or more packages"))
s = pkg.dump(long=long)
print(s)
+ def handle_requires(self, ns):
+ for pkg in self.pakfire(ns).whatrequires(ns.pattern):
+ s = pkg.dump(long=True)
+ print(s)
+
def handle_repolist(self, ns):
p = self.pakfire(ns)
help=_("File or feature to search for"))
#provides.set_defaults(func=self._provides)
+ # requires
+ requires = subparsers.add_parser("requires",
+ help=_("Get a list of packages that require a given file or feature"))
+ requires.add_argument("pattern", required=True,
+ help=_("File or feature to search for"))
+ requires.set_defaults(func=self._requires)
+
# repolist
repolist = subparsers.add_parser("repolist",
help=_("List all currently enabled repositories"))
s = pkg.dump(long=True, filelist=ns.filelist)
print(s)
+ def _requires(self, ns):
+ for pkg in self.pakfire(ns).whatrequires(ns.pattern):
+ s = pkg.dump(long=True)
+ print(s)
+
def _repolist(self, ns):
"""
List all repositories