free(request);
}
-/*
- This function translates any modifying flags into flags for libsolv
-*/
-static int pakfire_request_job_flags(int flags) {
- int solver_flags = 0;
-
- // Essential jobs
- if (flags & PAKFIRE_REQUEST_ESSENTIAL)
- solver_flags |= SOLVER_ESSENTIAL;
-
- // Keep any dependencies
- if (!(flags & PAKFIRE_REQUEST_KEEP_DEPS))
- solver_flags |= SOLVER_CLEANDEPS;
-
- // Drop orphans
- if (!(flags & PAKFIRE_REQUEST_KEEP_ORPHANED))
- solver_flags |= SOLVER_DROP_ORPHANED;
-
- return solver_flags;
-}
-
static void pakfire_request_add_packages(struct pakfire_request* request,
int flags, const char** packages) {
Pool* pool = pakfire_get_solv_pool(request->pakfire);
if (!pool)
return;
- // Translate flags
- flags = pakfire_request_job_flags(flags);
-
for (const char** package = packages; *package; package++) {
Id id = pool_str2id(pool, *package, 1);
if (id)
static int __pakfire_request_add(struct pakfire_request* request,
const enum pakfire_request_action action, const Id type, const Id id, int flags) {
Id _action = ID_NULL;
- int permitted_flags = PAKFIRE_REQUEST_ESSENTIAL;
+ int solvflags = 0;
// Check if type/ID is not set for actions that don't support it
switch (action) {
}
}
+ // Essential jobs
+ if (flags & PAKFIRE_REQUEST_ESSENTIAL)
+ solvflags |= SOLVER_ESSENTIAL;
+
// Select the correct action
switch (action) {
case PAKFIRE_REQ_INSTALL:
case PAKFIRE_REQ_ERASE:
_action = SOLVER_ERASE;
- permitted_flags |= PAKFIRE_REQUEST_KEEP_DEPS;
+ // Should we keep any dependencies?
+ if (!(flags & PAKFIRE_REQUEST_KEEP_DEPS))
+ solvflags |= SOLVER_CLEANDEPS;
break;
case PAKFIRE_REQ_UPDATE:
case PAKFIRE_REQ_SYNC:
_action = SOLVER_DISTUPGRADE|SOLVER_SOLVABLE_ALL;
- permitted_flags |= PAKFIRE_REQUEST_KEEP_ORPHANED;
+ // Drop orphans?
+ if (!(flags & PAKFIRE_REQUEST_KEEP_ORPHANED))
+ solvflags |= SOLVER_DROP_ORPHANED;
break;
case PAKFIRE_REQ_LOCK:
break;
}
- // Filter out any unsupported flags for the selected action
- flags &= permitted_flags;
-
- // Translate flags
- flags = pakfire_request_job_flags(flags);
-
- // XXX reset flags because the translation is broken
- flags = 0;
-
// Add it to the job queue
- queue_push2(&request->jobs, _action|type|flags, id);
+ queue_push2(&request->jobs, _action|type|solvflags, id);
return 0;
}