#include "package.h"
#include "pakfire.h"
#include "repo.h"
+#include "util.h"
PyObject* new_package(PyTypeObject* type, PakfirePackage pkg) {
PackageObject* self = (PackageObject *)type->tp_alloc(type, 0);
return list;
}
+static PyObject* Package_get_reverse_requires(PackageObject* self) {
+ struct pakfire_packagelist* list = NULL;
+
+ int r = pakfire_package_get_reverse_requires(self->package, &list);
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return NULL;
+ }
+
+ PyObject* object = PyList_FromPackageList(list);
+ pakfire_packagelist_unref(list);
+
+ return object;
+}
+
static PyObject* Package_get_filelist(PackageObject* self, PyObject* args) {
PyObject* list = PyList_New(0);
if (list == NULL)
NULL,
NULL
},
+ {
+ "reverse_requires",
+ (getter)Package_get_reverse_requires,
+ NULL,
+ NULL,
+ NULL
+ },
// Repository
{
#include <time.h>
#include <pakfire/filelist.h>
+#include <pakfire/packagelist.h>
#include <pakfire/types.h>
PakfirePackage pakfire_package_create(Pakfire pakfire, PakfireRepo repo,
char** pakfire_package_get_supplements(PakfirePackage pkg);
char** pakfire_package_get_enhances(PakfirePackage pkg);
+int pakfire_package_get_reverse_requires(PakfirePackage pkg,
+ struct pakfire_packagelist** list);
+
PakfireRepo pakfire_package_get_repo(PakfirePackage pkg);
char* pakfire_package_dump(PakfirePackage pkg, int flags);
pakfire_package_get_recommends;
pakfire_package_get_repo;
pakfire_package_get_requires;
+ pakfire_package_get_reverse_requires;
pakfire_package_get_size;
pakfire_package_get_suggests;
pakfire_package_get_summary;
pakfire_package_add_dep(pkg, SOLVABLE_ENHANCES, dep, 0);
}
+PAKFIRE_EXPORT int pakfire_package_get_reverse_requires(PakfirePackage pkg,
+ struct pakfire_packagelist** list) {
+ Queue matches;
+ queue_init(&matches);
+
+ // Reset pointer
+ *list = NULL;
+
+ Pool* pool = pakfire_get_solv_pool(pkg->pakfire);
+
+ // Search for any matches
+ pool_whatmatchessolvable(pool, SOLVABLE_REQUIRES, pkg->id, &matches, 0);
+
+ // Create a new package list
+ int r = pakfire_packagelist_create_from_queue(list, pkg->pakfire, &matches);
+ if (r)
+ goto ERROR;
+
+ERROR:
+ queue_free(&matches);
+
+ return r;
+}
+
PAKFIRE_EXPORT PakfireRepo pakfire_package_get_repo(PakfirePackage pkg) {
if (!pkg->repo) {
Solvable* s = get_solvable(pkg);