#include "errors.h"
#include "package.h"
+#include "pakfire.h"
#include "problem.h"
#include "relation.h"
#include "request.h"
RequestObject* self = (RequestObject *)type->tp_alloc(type, 0);
if (self) {
self->request = NULL;
- self->pool = NULL;
+ self->pakfire = NULL;
}
return (PyObject *)self;
if (self->request)
pakfire_request_unref(self->request);
- Py_XDECREF(self->pool);
+ Py_XDECREF(self->pakfire);
Py_TYPE(self)->tp_free((PyObject *)self);
}
static int Request_init(RequestObject* self, PyObject* args, PyObject* kwds) {
- PyObject* pool;
+ PakfireObject* pakfire;
- if (!PyArg_ParseTuple(args, "O!", &PoolType, &pool))
+ if (!PyArg_ParseTuple(args, "O!", &PakfireType, &pakfire))
return -1;
- self->pool = (PoolObject *)pool;
- Py_INCREF(self->pool);
+ self->pakfire = pakfire;
+ Py_INCREF(self->pakfire);
- self->request = pakfire_request_create(self->pool->pool);
+ self->request = pakfire_request_create(self->pakfire->pakfire);
return 0;
}
return new_transaction(self, transaction);
}
-static PyObject* Request_get_pool(RequestObject* self) {
- PoolObject* pool = self->pool;
- Py_INCREF(pool);
-
- return (PyObject *)pool;
-}
-
static struct PyMethodDef Request_methods[] = {
{
"install",
NULL,
NULL
},
- {
- "pool",
- (getter)Request_get_pool,
- NULL,
- NULL,
- NULL
- },
{ NULL },
};
#include <pakfire/request.h>
-#include "pool.h"
+#include "pakfire.h"
typedef struct {
PyObject_HEAD
- PoolObject* pool;
+ PakfireObject* pakfire;
PakfireRequest request;
-
- // XXX COMPAT
- Pool* _pool;
} RequestObject;
extern PyTypeObject RequestType;
static PyObject* Step_get_package(StepObject* self) {
PakfirePackage package = pakfire_step_get_package(self->step);
- PyObject* obj = new_package(self->transaction->request->pool, pakfire_package_id(package));
+ // XXX NULL must be the pool object
+ PyObject* obj = new_package(NULL, pakfire_package_id(package));
pakfire_package_unref(package);
return obj;
PakfireRepo pakfire_get_installed_repo(Pakfire pakfire);
void pakfire_set_installed_repo(Pakfire pakfire, PakfireRepo repo);
+#ifdef PAKFIRE_PRIVATE
+
+#include <solv/pool.h>
+
+Pool* pakfire_get_solv_pool(Pakfire pakfire);
+
+#endif
+
#endif /* PAKFIRE_PAKFIRE_H */
PAKFIRE_SOLVER_ALLOW_VENDORCHANGE = 1 << 5,
};
-PakfireRequest pakfire_request_create(PakfirePool pool);
+PakfireRequest pakfire_request_create(Pakfire pakfire);
PakfireRequest pakfire_request_ref(PakfireRequest request);
PakfireRequest pakfire_request_unref(PakfireRequest request);
return pakfire_pool_ref(pakfire->pool);
}
+Pool* pakfire_get_solv_pool(Pakfire pakfire) {
+ return pakfire_pool_get_solv_pool(pakfire->pool);
+}
+
PAKFIRE_EXPORT PakfireRepo pakfire_get_installed_repo(Pakfire pakfire) {
Pool* p = pakfire_pool_get_solv_pool(pakfire->pool);
if (!p->installed)
#include <pakfire/logging.h>
#include <pakfire/package.h>
+#include <pakfire/pakfire.h>
#include <pakfire/private.h>
#include <pakfire/problem.h>
#include <pakfire/request.h>
#include <pakfire/util.h>
struct _PakfireRequest {
- PakfirePool pool;
+ Pakfire pakfire;
Queue queue;
Solver* solver;
Transaction* transaction;
int nrefs;
};
-PAKFIRE_EXPORT PakfireRequest pakfire_request_create(PakfirePool pool) {
+PAKFIRE_EXPORT PakfireRequest pakfire_request_create(Pakfire pakfire) {
PakfireRequest request = pakfire_calloc(1, sizeof(*request));
if (request) {
DEBUG("Allocated Request at %p\n", request);
request->nrefs = 1;
- request->pool = pakfire_pool_ref(pool);
+ request->pakfire = pakfire_ref(pakfire);
queue_init(&request->queue);
}
}
static void pakfire_request_free(PakfireRequest request) {
- pakfire_pool_unref(request->pool);
+ pakfire_unref(request->pakfire);
if (request->transaction)
transaction_free(request->transaction);
}
PAKFIRE_EXPORT PakfirePool pakfire_request_get_pool(PakfireRequest request) {
- return pakfire_pool_ref(request->pool);
+ return pakfire_get_pool(request->pakfire);
}
Solver* pakfire_request_get_solver(PakfireRequest request) {
}
static void init_solver(PakfireRequest request, int flags) {
- Pool* p = pakfire_pool_get_solv_pool(request->pool);
+ Pool* p = pakfire_get_solv_pool(request->pakfire);
Solver* solver = solver_create(p);
request->transaction = NULL;
}
- pakfire_pool_apply_changes(request->pool);
+ PakfirePool pool = pakfire_get_pool(request->pakfire);
+ pakfire_pool_apply_changes(pool);
+ pakfire_pool_unref(pool);
// Save time when we starting solving
clock_t solving_start = clock();
}
/* turn off implicit obsoletes for installonly packages */
- Queue* installonly = pakfire_pool_get_installonly_queue(request->pool);
+ PakfirePool pool = pakfire_get_pool(request->pakfire);
+ Queue* installonly = pakfire_pool_get_installonly_queue(pool);
+ pakfire_pool_unref(pool);
+
for (int i = 0; i < installonly->count; i++)
queue_push2(&queue, SOLVER_MULTIVERSION|SOLVER_SOLVABLE_PROVIDES,
installonly->elements[i]);
if (!request->transaction)
return NULL;
- return pakfire_transaction_create(request->pool, request->transaction);
+ PakfirePool pool = pakfire_get_pool(request->pakfire);
+ PakfireTransaction transaction = pakfire_transaction_create(pool, request->transaction);
+ pakfire_pool_unref(pool);
+
+ return transaction;
}
PAKFIRE_EXPORT int pakfire_request_install(PakfireRequest request, PakfirePackage package) {
# Detect any errors in the dependency tree.
# For that we create an empty request and solver and try to solve
# something.
- request = _pakfire.Request(self.pakfire.pool)
+ request = _pakfire.Request(self.pakfire)
request.verify()
return request.solve(**kwargs)
# Transactions
def install(self, requires, **kwargs):
- request = _pakfire.Request(self.pakfire.pool)
+ request = _pakfire.Request(self.pakfire)
# XXX handle files and URLs
raise NotImplementedError
def erase(self, pkgs, **kwargs):
- request = _pakfire.Request(self.pakfire.pool)
+ request = _pakfire.Request(self.pakfire)
for pkg in pkgs:
relation = _pakfire.Relation(self.pakfire.pool, pkg)
return request.solve(**kwargs)
def update(self, reqs=None, excludes=None, **kwargs):
- request = _pakfire.Request(self.pakfire.pool)
+ request = _pakfire.Request(self.pakfire)
# Add all packages that should be updated to the request
for req in reqs or []: