# #
#############################################################################*/
+#include <errno.h>
#include <stdlib.h>
#include <solv/queue.h>
return request->solver;
}
-static void init_solver(PakfireRequest request, int flags) {
+static int init_solver(PakfireRequest request, int flags) {
Pool* p = pakfire_get_solv_pool(request->pakfire);
+ if (!p->installed)
+ return -EINVAL;
+
Solver* solver = solver_create(p);
/* Free older solver */
/* no arch change for forcebest */
solver_set_flag(solver, SOLVER_FLAG_BEST_OBEY_POLICY, 1);
+
+ return 0;
}
static int solve(PakfireRequest request, Queue* queue) {
}
PAKFIRE_EXPORT int pakfire_request_solve(PakfireRequest request, int flags) {
- init_solver(request, flags);
+ int r = init_solver(request, flags);
+ if (r) {
+ ERROR(request->pakfire, "Could not initialize the solver: %s\n", strerror(errno));
+ return r;
+ }
Queue queue;
queue_init_clone(&queue, &request->queue);
// XXX EXCLUDES
- int ret = solve(request, &queue);
+ r = solve(request, &queue);
queue_free(&queue);
- return ret;
+ return r;
}
PAKFIRE_EXPORT PakfireProblem pakfire_request_get_problems(PakfireRequest request) {