From cbed1552ad8073d2a261b7c3c5a897159f17de5c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 16 Jan 2018 01:50:06 +0100 Subject: [PATCH] libpakfire: Make Pakfire parent object of Package Signed-off-by: Michael Tremer --- src/_pakfire/package.c | 53 +++++++++--------- src/_pakfire/package.h | 4 +- src/_pakfire/relation.c | 8 +-- src/_pakfire/relation.h | 4 +- src/_pakfire/repo.c | 6 +- src/libpakfire/include/pakfire/package.h | 5 +- src/libpakfire/include/pakfire/packagelist.h | 2 +- src/libpakfire/include/pakfire/relation.h | 1 + src/libpakfire/package.c | 59 ++++++++++++++++---- src/libpakfire/packagelist.c | 8 ++- src/libpakfire/relation.c | 2 +- src/libpakfire/repo.c | 14 +---- src/libpakfire/request.c | 4 +- src/libpakfire/selector.c | 6 +- src/libpakfire/step.c | 4 +- 15 files changed, 104 insertions(+), 76 deletions(-) diff --git a/src/_pakfire/package.c b/src/_pakfire/package.c index 3be41aee0..0aa303e2a 100644 --- a/src/_pakfire/package.c +++ b/src/_pakfire/package.c @@ -27,11 +27,12 @@ #include #include "package.h" +#include "pakfire.h" #include "relation.h" #include "repo.h" -PyObject* new_package(PoolObject* pool, Id id) { - PyObject* args = Py_BuildValue("Oi", (PyObject *)pool, id); +PyObject* new_package(PakfireObject* pakfire, Id id) { + PyObject* args = Py_BuildValue("Oi", (PyObject *)pakfire, id); PyObject* repo = PyObject_CallObject((PyObject *)&PackageType, args); Py_DECREF(args); @@ -42,7 +43,7 @@ PyObject* new_package(PoolObject* pool, Id id) { static PyObject* Package_new(PyTypeObject* type, PyObject* args, PyObject* kwds) { PackageObject* self = (PackageObject *)type->tp_alloc(type, 0); if (self) { - self->pool = NULL; + self->pakfire = NULL; self->package = NULL; } @@ -50,23 +51,23 @@ static PyObject* Package_new(PyTypeObject* type, PyObject* args, PyObject* kwds) } static void Package_dealloc(PackageObject* self) { - if (self->package) - pakfire_package_unref(self->package); + pakfire_package_unref(self->package); + Py_XDECREF(self->pakfire); Py_TYPE(self)->tp_free((PyObject *)self); } static int Package_init(PackageObject* self, PyObject* args, PyObject* kwds) { - PyObject* pool; + PakfireObject* pakfire; int id = 0; - if (!PyArg_ParseTuple(args, "O!|i", &PoolType, &pool, &id)) + if (!PyArg_ParseTuple(args, "O!|i", &PakfireType, &pakfire, &id)) return -1; - self->pool = (PoolObject *)pool; - Py_INCREF(self->pool); + self->pakfire = pakfire; + Py_INCREF(self->pakfire); - self->package = pakfire_package_create(self->pool->pool, (Id)id); + self->package = pakfire_package_create(self->pakfire->pakfire, (Id)id); return 0; } @@ -476,7 +477,7 @@ static PyObject* Package_get_location(PackageObject* self) { return str; } -static PyObject* PyList_FromRelationList(PoolObject* pool, PakfireRelationList relationlist) { +static PyObject* PyList_FromRelationList(PakfireObject* pakfire, PakfireRelationList relationlist) { PyObject* list = PyList_New(0); if (list == NULL) return NULL; @@ -485,7 +486,7 @@ static PyObject* PyList_FromRelationList(PoolObject* pool, PakfireRelationList r for (int i = 0; i < count; i++) { PakfireRelation relation = pakfire_relationlist_get_clone(relationlist, i); - PyObject* relation_obj = new_relation(pool, pakfire_relation_id(relation)); + PyObject* relation_obj = new_relation(pakfire, pakfire_relation_id(relation)); pakfire_relation_free(relation); if (relation_obj == NULL) @@ -505,14 +506,14 @@ fail: return NULL; } -static PakfireRelationList PyList_AsRelationList(PoolObject* pool, PyObject* value) { +static PakfireRelationList PyList_AsRelationList(PakfireObject* pakfire, PyObject* value) { if (!PySequence_Check(value)) { PyErr_SetString(PyExc_AttributeError, "Expected a sequence."); return NULL; } const int length = PySequence_Length(value); - PakfireRelationList relationlist = pakfire_relationlist_create(pool->pool); + PakfireRelationList relationlist = pakfire_relationlist_create(pakfire->pakfire); for (int i = 0; i < length; i++) { PyObject* item = PySequence_GetItem(value, i); @@ -537,14 +538,14 @@ static PakfireRelationList PyList_AsRelationList(PoolObject* pool, PyObject* val static PyObject* Package_get_provides(PackageObject* self) { PakfireRelationList relationlist = pakfire_package_get_provides(self->package); - PyObject* list = PyList_FromRelationList(self->pool, relationlist); + PyObject* list = PyList_FromRelationList(self->pakfire, relationlist); pakfire_relationlist_free(relationlist); return list; } static int Package_set_provides(PackageObject* self, PyObject* value) { - PakfireRelationList relationlist = PyList_AsRelationList(self->pool, value); + PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value); if (!relationlist) return -1; @@ -568,14 +569,14 @@ static PyObject* Package_add_provides(PackageObject* self, PyObject* args) { static PyObject* Package_get_requires(PackageObject* self) { PakfireRelationList relationlist = pakfire_package_get_requires(self->package); - PyObject* list = PyList_FromRelationList(self->pool, relationlist); + PyObject* list = PyList_FromRelationList(self->pakfire, relationlist); pakfire_relationlist_free(relationlist); return list; } static int Package_set_requires(PackageObject* self, PyObject* value) { - PakfireRelationList relationlist = PyList_AsRelationList(self->pool, value); + PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value); if (!relationlist) return -1; @@ -599,14 +600,14 @@ static PyObject* Package_add_requires(PackageObject* self, PyObject* args) { static PyObject* Package_get_obsoletes(PackageObject* self) { PakfireRelationList relationlist = pakfire_package_get_obsoletes(self->package); - PyObject* list = PyList_FromRelationList(self->pool, relationlist); + PyObject* list = PyList_FromRelationList(self->pakfire, relationlist); pakfire_relationlist_free(relationlist); return list; } static int Package_set_obsoletes(PackageObject* self, PyObject* value) { - PakfireRelationList relationlist = PyList_AsRelationList(self->pool, value); + PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value); if (!relationlist) return -1; @@ -630,14 +631,14 @@ static PyObject* Package_add_obsoletes(PackageObject* self, PyObject* args) { static PyObject* Package_get_conflicts(PackageObject* self) { PakfireRelationList relationlist = pakfire_package_get_conflicts(self->package); - PyObject* list = PyList_FromRelationList(self->pool, relationlist); + PyObject* list = PyList_FromRelationList(self->pakfire, relationlist); pakfire_relationlist_free(relationlist); return list; } static int Package_set_conflicts(PackageObject* self, PyObject* value) { - PakfireRelationList relationlist = PyList_AsRelationList(self->pool, value); + PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value); if (!relationlist) return -1; @@ -661,14 +662,14 @@ static PyObject* Package_add_conflicts(PackageObject* self, PyObject* args) { static PyObject* Package_get_recommends(PackageObject* self) { PakfireRelationList relationlist = pakfire_package_get_recommends(self->package); - PyObject* list = PyList_FromRelationList(self->pool, relationlist); + PyObject* list = PyList_FromRelationList(self->pakfire, relationlist); pakfire_relationlist_free(relationlist); return list; } static int Package_set_recommends(PackageObject* self, PyObject* value) { - PakfireRelationList relationlist = PyList_AsRelationList(self->pool, value); + PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value); if (!relationlist) return -1; @@ -692,14 +693,14 @@ static PyObject* Package_add_recommends(PackageObject* self, PyObject* args) { static PyObject* Package_get_suggests(PackageObject* self) { PakfireRelationList relationlist = pakfire_package_get_suggests(self->package); - PyObject* list = PyList_FromRelationList(self->pool, relationlist); + PyObject* list = PyList_FromRelationList(self->pakfire, relationlist); pakfire_relationlist_free(relationlist); return list; } static int Package_set_suggests(PackageObject* self, PyObject* value) { - PakfireRelationList relationlist = PyList_AsRelationList(self->pool, value); + PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value); if (!relationlist) return -1; diff --git a/src/_pakfire/package.h b/src/_pakfire/package.h index d88c8cd49..48b29a845 100644 --- a/src/_pakfire/package.h +++ b/src/_pakfire/package.h @@ -27,17 +27,15 @@ #include #include "pakfire.h" -#include "pool.h" typedef struct { PyObject_HEAD PakfireObject* pakfire; - PoolObject* pool; PakfirePackage package; } PackageObject; extern PyTypeObject PackageType; -PyObject* new_package(PoolObject* pool, Id id); +PyObject* new_package(PakfireObject* pakfire, Id id); #endif /* PYTHON_PAKFIRE_PACKAGE_H */ diff --git a/src/_pakfire/relation.c b/src/_pakfire/relation.c index 1b5b11ce0..b0498fd1c 100644 --- a/src/_pakfire/relation.c +++ b/src/_pakfire/relation.c @@ -44,9 +44,9 @@ static RelationObject* Relation_new_core(PyTypeObject* type, PoolObject* pool) { return self; } -PyObject* new_relation(PoolObject* pool, Id id) { - RelationObject* relation = Relation_new_core(&RelationType, pool); - relation->relation = pakfire_relation_create_from_id(pool->pool, id); +PyObject* new_relation(PakfireObject* pakfire, Id id) { + RelationObject* relation = Relation_new_core(&RelationType, pakfire); + relation->relation = pakfire_relation_create_from_id(pakfire->pakfire, id); return (PyObject *)relation; } @@ -115,7 +115,7 @@ static PyObject* Relation_get_providers(RelationObject* self) { for (unsigned int i = 0; i < pakfire_packagelist_count(packagelist); i++) { PakfirePackage package = pakfire_packagelist_get(packagelist, i); - PyObject* obj = new_package(self->pool, pakfire_package_id(package)); + PyObject* obj = new_package(self->pakfire, pakfire_package_id(package)); PyList_Append(list, obj); pakfire_package_unref(package); diff --git a/src/_pakfire/relation.h b/src/_pakfire/relation.h index 2a236ac60..2c1841495 100644 --- a/src/_pakfire/relation.h +++ b/src/_pakfire/relation.h @@ -26,10 +26,12 @@ #include #include +#include "pakfire.h" #include "pool.h" typedef struct { PyObject_HEAD + PakfireObject* pakfire; PoolObject* pool; PakfireRelation relation; @@ -40,6 +42,6 @@ typedef struct { extern PyTypeObject RelationType; -PyObject* new_relation(PoolObject* pool, Id id); +PyObject* new_relation(PakfireObject* pakfire, Id id); #endif /* PYTHON_PAKFIRE_RELATION_H */ diff --git a/src/_pakfire/repo.c b/src/_pakfire/repo.c index 11669b63b..9d96cc3f7 100644 --- a/src/_pakfire/repo.c +++ b/src/_pakfire/repo.c @@ -220,11 +220,9 @@ static PyObject* Repo__add_package(RepoObject* self, PyObject* args) { if (!PyArg_ParseTuple(args, "sss", &name, &evr, &arch)) return NULL; - PakfirePool pool = pakfire_repo_get_pool(self->repo); - PakfirePackage pkg = pakfire_package_create2(pool, self->repo, name, evr, arch); + PakfirePackage pkg = pakfire_package_create2(self->pakfire->pakfire, self->repo, name, evr, arch); - // XXX must be self->pakfire instead of NULL - return new_package(NULL /* self->pakfire */, pakfire_package_id(pkg)); + return new_package(self->pakfire, pakfire_package_id(pkg)); } static PyObject* Repo_cache_age(RepoObject* self, PyObject* args) { diff --git a/src/libpakfire/include/pakfire/package.h b/src/libpakfire/include/pakfire/package.h index e49998ed8..b6835146c 100644 --- a/src/libpakfire/include/pakfire/package.h +++ b/src/libpakfire/include/pakfire/package.h @@ -25,11 +25,10 @@ #include #include -#include #include -PakfirePackage pakfire_package_create(PakfirePool pool, Id id); -PakfirePackage pakfire_package_create2(PakfirePool pool, PakfireRepo repo, const char* name, const char* evr, const char* arch); +PakfirePackage pakfire_package_create(Pakfire pakfire, Id id); +PakfirePackage pakfire_package_create2(Pakfire pakfire, PakfireRepo repo, const char* name, const char* evr, const char* arch); PakfirePackage pakfire_package_ref(PakfirePackage pkg); PakfirePackage pakfire_package_unref(PakfirePackage pkg); diff --git a/src/libpakfire/include/pakfire/packagelist.h b/src/libpakfire/include/pakfire/packagelist.h index c6582c14c..5ce7a0eea 100644 --- a/src/libpakfire/include/pakfire/packagelist.h +++ b/src/libpakfire/include/pakfire/packagelist.h @@ -39,7 +39,7 @@ void pakfire_packagelist_push_if_not_exists(PakfirePackageList list, PakfirePack #ifdef PAKFIRE_PRIVATE -PakfirePackageList pakfire_packagelist_from_queue(PakfirePool _pool, Queue* q); +PakfirePackageList pakfire_packagelist_from_queue(Pakfire pakfire, Queue* q); #endif diff --git a/src/libpakfire/include/pakfire/relation.h b/src/libpakfire/include/pakfire/relation.h index 1ff7a1e9c..9542a4a8b 100644 --- a/src/libpakfire/include/pakfire/relation.h +++ b/src/libpakfire/include/pakfire/relation.h @@ -42,6 +42,7 @@ int pakfire_relation2queue(const PakfireRelation relation, Queue* queue, int sol #ifdef PAKFIRE_PRIVATE struct _PakfireRelation { + Pakfire pakfire; PakfirePool pool; Id id; }; diff --git a/src/libpakfire/package.c b/src/libpakfire/package.c index 2f350d5f6..59fda486e 100644 --- a/src/libpakfire/package.c +++ b/src/libpakfire/package.c @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -36,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -45,29 +47,38 @@ #include struct _PakfirePackage { - PakfirePool pool; + Pakfire pakfire; Id id; PakfireFile filelist; + PakfireArchive archive; int nrefs; }; static Pool* pakfire_package_get_solv_pool(PakfirePackage pkg) { - return pakfire_pool_get_solv_pool(pkg->pool); + PakfirePool pool = pakfire_get_pool(pkg->pakfire); + + Pool* p = pakfire_pool_get_solv_pool(pool); + pakfire_pool_unref(pool); + + return p; } -static void pakfire_package_add_self_provides(PakfirePool pool, PakfirePackage pkg, const char* name, const char* evr) { +static void pakfire_package_add_self_provides(Pakfire pakfire, PakfirePackage pkg, const char* name, const char* evr) { + PakfirePool pool = pakfire_get_pool(pakfire); + PakfireRelation relation = pakfire_relation_create(pool, name, PAKFIRE_EQ, evr); pakfire_package_add_provides(pkg, relation); pakfire_relation_free(relation); + pakfire_pool_unref(pool); } -PAKFIRE_EXPORT PakfirePackage pakfire_package_create(PakfirePool pool, Id id) { +PAKFIRE_EXPORT PakfirePackage pakfire_package_create(Pakfire pakfire, Id id) { PakfirePackage pkg = pakfire_calloc(1, sizeof(*pkg)); if (pkg) { DEBUG("Allocated Package at %p\n", pkg); - pkg->pool = pakfire_pool_ref(pool); + pkg->pakfire = pakfire_ref(pakfire); pkg->id = id; // Initialize reference counter @@ -77,21 +88,22 @@ PAKFIRE_EXPORT PakfirePackage pakfire_package_create(PakfirePool pool, Id id) { return pkg; } -PAKFIRE_EXPORT PakfirePackage pakfire_package_create2(PakfirePool pool, PakfireRepo repo, const char* name, const char* evr, const char* arch) { +PAKFIRE_EXPORT PakfirePackage pakfire_package_create2(Pakfire pakfire, PakfireRepo repo, const char* name, const char* evr, const char* arch) { PakfirePackage pkg = pakfire_repo_add_package(repo); pakfire_package_set_name(pkg, name); pakfire_package_set_evr(pkg, evr); pakfire_package_set_arch(pkg, arch); - pakfire_package_add_self_provides(pool, pkg, name, evr); + pakfire_package_add_self_provides(pakfire, pkg, name, evr); return pkg; } static void pakfire_package_free(PakfirePackage pkg) { - pakfire_pool_unref(pkg->pool); + pakfire_archive_unref(pkg->archive); pakfire_package_filelist_remove(pkg); + pakfire_unref(pkg->pakfire); pakfire_free(pkg); DEBUG("Released Package at %p\n", pkg); @@ -515,7 +527,9 @@ static PakfireRelationList pakfire_package_get_relationlist(PakfirePackage pkg, Solvable* s = get_solvable(pkg); solvable_lookup_idarray(s, type, &q); - PakfireRelationList relationlist = pakfire_relationlist_from_queue(pkg->pool, q); + PakfirePool pool = pakfire_get_pool(pkg->pakfire); + PakfireRelationList relationlist = pakfire_relationlist_from_queue(pool, q); + pakfire_pool_unref(pool); queue_free(&q); @@ -632,7 +646,7 @@ PAKFIRE_EXPORT void pakfire_package_add_suggests(PakfirePackage pkg, PakfireRela PAKFIRE_EXPORT PakfireRepo pakfire_package_get_repo(PakfirePackage pkg) { Solvable* s = get_solvable(pkg); - return pakfire_repo_create_from_repo(pkg->pool, s->repo); + return pakfire_repo_create_from_repo(pkg->pakfire, s->repo); } PAKFIRE_EXPORT void pakfire_package_set_repo(PakfirePackage pkg, PakfireRepo repo) { @@ -853,7 +867,10 @@ PAKFIRE_EXPORT char* pakfire_package_dump(PakfirePackage pkg, int flags) { } PAKFIRE_EXPORT int pakfire_package_is_cached(PakfirePackage pkg) { - PakfireCache cache = pakfire_pool_get_cache(pkg->pool); + PakfirePool pool = pakfire_get_pool(pkg->pakfire); + PakfireCache cache = pakfire_pool_get_cache(pool); + pakfire_pool_unref(pool); + if (!cache) return 1; @@ -861,7 +878,10 @@ PAKFIRE_EXPORT int pakfire_package_is_cached(PakfirePackage pkg) { } PAKFIRE_EXPORT char* pakfire_package_get_cache_path(PakfirePackage pkg) { - PakfireCache cache = pakfire_pool_get_cache(pkg->pool); + PakfirePool pool = pakfire_get_pool(pkg->pakfire); + PakfireCache cache = pakfire_pool_get_cache(pool); + pakfire_pool_unref(pool); + if (!cache) return NULL; @@ -892,6 +912,21 @@ out: return cache_path; } +PAKFIRE_EXPORT PakfireArchive pakfire_package_get_archive(PakfirePackage pkg) { + // Return the package if it has already been opened + if (pkg->archive) + return pakfire_archive_ref(pkg->archive); + + // Otherwise open the archive from the cache + char* path = pakfire_package_get_cache_full_path(pkg); + PakfireArchive archive = pakfire_archive_open(pkg->pakfire, path); + + // Free resources + pakfire_free(path); + + return archive; +} + static PakfireFile pakfire_package_fetch_legacy_filelist(PakfirePackage pkg) { pakfire_package_internalize_repo(pkg); diff --git a/src/libpakfire/packagelist.c b/src/libpakfire/packagelist.c index 560e8ffdd..a6d786792 100644 --- a/src/libpakfire/packagelist.c +++ b/src/libpakfire/packagelist.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -120,19 +121,22 @@ PAKFIRE_EXPORT void pakfire_packagelist_push_if_not_exists(PakfirePackageList li pakfire_packagelist_push(list, pkg); } -PAKFIRE_EXPORT PakfirePackageList pakfire_packagelist_from_queue(PakfirePool _pool, Queue* q) { +PAKFIRE_EXPORT PakfirePackageList pakfire_packagelist_from_queue(Pakfire pakfire, Queue* q) { + PakfirePool _pool = pakfire_get_pool(pakfire); PakfirePackageList list = pakfire_packagelist_create(); Pool* pool = pakfire_pool_get_solv_pool(_pool); Id p, pp; for (int i = 0; i < q->count; i += 2) { FOR_JOB_SELECT(p, pp, q->elements[i], q->elements[i + 1]) { - PakfirePackage pkg = pakfire_package_create(_pool, p); + PakfirePackage pkg = pakfire_package_create(pakfire, p); pakfire_packagelist_push(list, pkg); pakfire_package_unref(pkg); } } + pakfire_pool_unref(_pool); + return list; } diff --git a/src/libpakfire/relation.c b/src/libpakfire/relation.c index a1fe2c3a7..0411395a5 100644 --- a/src/libpakfire/relation.c +++ b/src/libpakfire/relation.c @@ -100,7 +100,7 @@ PAKFIRE_EXPORT PakfirePackageList pakfire_relation_providers(PakfireRelation rel pakfire_relation2queue(relation, &q, 0); - PakfirePackageList list = pakfire_packagelist_from_queue(relation->pool, &q); + PakfirePackageList list = pakfire_packagelist_from_queue(relation->pakfire, &q); queue_free(&q); diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 518fc2ff0..a386bce03 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -221,9 +221,7 @@ PAKFIRE_EXPORT int pakfire_repo_get_enabled(PakfireRepo repo) { PAKFIRE_EXPORT void pakfire_repo_set_enabled(PakfireRepo repo, int enabled) { repo->repo->disabled = !enabled; - PakfirePool pool = pakfire_repo_get_pool(repo); - pakfire_pool_has_changed(pool); - pakfire_pool_unref(pool); + pakfire_pool_has_changed(repo->pakfire); } PAKFIRE_EXPORT int pakfire_repo_get_priority(PakfireRepo repo) { @@ -403,9 +401,7 @@ PAKFIRE_EXPORT int pakfire_repo_read_solv_fp(PakfireRepo repo, FILE *f, int flag return PAKFIRE_E_SOLV_CORRUPTED; } - PakfirePool pool = pakfire_get_pool(repo->pakfire); - pakfire_pool_has_changed(pool); - pakfire_pool_unref(pool); + pakfire_pool_has_changed(repo->pakfire); return ret; } @@ -431,11 +427,7 @@ PAKFIRE_EXPORT int pakfire_repo_write_solv_fp(PakfireRepo repo, FILE *f, int fla PAKFIRE_EXPORT PakfirePackage pakfire_repo_add_package(PakfireRepo repo) { Id id = repo_add_solvable(repo->repo); - PakfirePool pool = pakfire_get_pool(repo->pakfire); - PakfirePackage pkg = pakfire_package_create(pool, id); - pakfire_pool_unref(pool); - - return pkg; + return pakfire_package_create(repo->pakfire, id); } PAKFIRE_EXPORT PakfireRepoCache pakfire_repo_get_cache(PakfireRepo repo) { diff --git a/src/libpakfire/request.c b/src/libpakfire/request.c index f9dc0313d..77408585c 100644 --- a/src/libpakfire/request.c +++ b/src/libpakfire/request.c @@ -137,9 +137,7 @@ static int solve(PakfireRequest request, Queue* queue) { request->transaction = NULL; } - PakfirePool pool = pakfire_get_pool(request->pakfire); - pakfire_pool_apply_changes(pool); - pakfire_pool_unref(pool); + pakfire_pool_apply_changes(request->pakfire); // Save time when we starting solving clock_t solving_start = clock(); diff --git a/src/libpakfire/selector.c b/src/libpakfire/selector.c index 9b313051f..60910f687 100644 --- a/src/libpakfire/selector.c +++ b/src/libpakfire/selector.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,7 @@ #include struct _PakfireSelector { + Pakfire pakfire; PakfirePool pool; PakfireFilter f_name; PakfireFilter f_provides; @@ -161,7 +163,7 @@ PAKFIRE_EXPORT PakfirePackageList pakfire_selector_providers(PakfireSelector sel pakfire_selector2queue(selector, &q, 0); - PakfirePackageList list = pakfire_packagelist_from_queue(selector->pool, &q); + PakfirePackageList list = pakfire_packagelist_from_queue(selector->pakfire, &q); queue_free(&q); @@ -310,7 +312,7 @@ PAKFIRE_EXPORT int pakfire_selector2queue(const PakfireSelector selector, Queue* goto finish; } - pakfire_pool_apply_changes(pool); + pakfire_pool_apply_changes(selector->pakfire); ret = filter_name2queue(pool, selector->f_name, &queue_selector); if (ret) diff --git a/src/libpakfire/step.c b/src/libpakfire/step.c index ee55c77fb..f30725a6f 100644 --- a/src/libpakfire/step.c +++ b/src/libpakfire/step.c @@ -90,9 +90,7 @@ PAKFIRE_EXPORT PakfireStep pakfire_step_create(PakfireTransaction transaction, I step->type = get_type(t, id); // Get the package - PakfirePool pool = pakfire_get_pool(step->pakfire); - step->package = pakfire_package_create(pool, id); - pakfire_pool_unref(pool); + step->package = pakfire_package_create(step->pakfire, id); } return step; -- 2.39.5