{ NULL },
};
-/*
- These packages can be installed multiple times simultaneously
-*/
-const char* pakfire_multiinstall_packages[] = {
- "kernel",
- "kernel-devel",
- NULL,
-};
-
int pakfire_on_root(Pakfire pakfire) {
return (strcmp(pakfire->path, "/") == 0);
}
// Install namespace callback
pool_setnamespacecallback(pool, pakfire_namespace_callback, pakfire);
- // Add multiinstall packages
- pakfire_pool_add_multiinstall(pool);
-
-
// Open database in read-only mode and try to load all installed packages
r = pakfire_db_open(&db, pakfire, PAKFIRE_DB_READWRITE);
if (r)
Queue jobs;
};
+/*
+ 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];
/* no arch change for forcebest */
solver_set_flag(request->solver, SOLVER_FLAG_BEST_OBEY_POLICY, 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);