// Install namespace callback
pool_setnamespacecallback(pool, pakfire_namespace_callback, pakfire);
+ // These packages can be installed multiple times simultaneously
+ static const char* pakfire_multiinstall_packages[] = {
+ "kernel",
+ "kernel-devel",
+ NULL,
+ };
+
+ for (const char** package = pakfire_multiinstall_packages; *package; package++) {
+ Id id = pakfire_str2dep(pakfire, *package);
+ if (!id)
+ continue;
+
+ queue_push2(&pool->pooljobs, SOLVER_SOLVABLE_PROVIDES|SOLVER_MULTIVERSION, id);
+ }
+
// Open database in read-only mode and try to load all installed packages
r = pakfire_db_open(&db, pakfire, PAKFIRE_DB_READWRITE);
if (r)
int solved:1;
};
-/*
- These packages can be installed multiple times simultaneously
-*/
-const char* pakfire_multiinstall_packages[] = {
- "kernel",
- "kernel-devel",
- NULL,
-};
-
static void pakfire_request_free(struct pakfire_request* request) {
if (request->solver)
solver_free(request->solver);
free(request);
}
-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;
-
- for (const char** package = packages; *package; package++) {
- Id id = pool_str2id(pool, *package, 1);
- if (id)
- queue_push2(&request->jobs, flags, id);
- }
-}
-
static void pakfire_request_lock_running_kernel(struct pakfire_request* request) {
struct utsname utsname;
char buffer[NAME_MAX];
if (flags & PAKFIRE_REQUEST_WITHOUT_RECOMMENDED)
solver_set_flag(request->solver, SOLVER_FLAG_IGNORE_RECOMMENDED, 1);
- // Add multiinstall packages
- pakfire_request_add_packages(request,
- SOLVER_MULTIVERSION|SOLVER_SOLVABLE_PROVIDES, pakfire_multiinstall_packages);
-
// Lock the running kernel
if (pakfire_on_root(request->pakfire))
pakfire_request_lock_running_kernel(request);