]> git.ipfire.org Git - pakfire.git/commitdiff
request: Refactor adding packages to the solver
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 23 Apr 2021 14:29:46 +0000 (14:29 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 23 Apr 2021 14:29:46 +0000 (14:29 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/request.c

index 5a75e805780bc61da3dc25b2e4276933fe28886e..d1547b4a0254e52d821b215acc188e5f4465e3c5 100644 (file)
@@ -229,6 +229,17 @@ PAKFIRE_EXPORT PakfireTransaction pakfire_request_get_transaction(struct pakfire
        return pakfire_transaction_create(request->pakfire, request->transaction);
 }
 
+static int pakfire_request_add_package(struct pakfire_request* request, int action,
+               PakfirePackage pkg, int flags) {
+       // Get the solvable ID
+       Id id = pakfire_package_id(pkg);
+
+       // Add it to the job queue
+       queue_push2(&request->jobs, SOLVER_SOLVABLE|action|flags, id);
+
+       return 0;
+}
+
 static int pakfire_request_add_job(struct pakfire_request* request, int action, const char* what) {
        Pool* pool = pakfire_get_solv_pool(request->pakfire);
        Id key = 0;
@@ -296,10 +307,9 @@ PAKFIRE_EXPORT int pakfire_request_install(struct pakfire_request* request, cons
        return pakfire_request_add_job(request, SOLVER_INSTALL, what);
 }
 
-PAKFIRE_EXPORT int pakfire_request_install_package(struct pakfire_request* request, PakfirePackage package) {
-       queue_push2(&request->jobs, SOLVER_SOLVABLE|SOLVER_INSTALL, pakfire_package_id(package));
-
-       return 0;
+PAKFIRE_EXPORT int pakfire_request_install_package(
+               struct pakfire_request* request, PakfirePackage package) {
+       return pakfire_request_add_package(request, SOLVER_INSTALL, package, 0);
 }
 
 PAKFIRE_EXPORT int pakfire_request_install_relation(struct pakfire_request* request, PakfireRelation relation) {
@@ -319,11 +329,9 @@ static int erase_flags(int flags) {
        return additional;
 }
 
-PAKFIRE_EXPORT int pakfire_request_erase_package(struct pakfire_request* request, PakfirePackage package, int flags) {
-       int additional = erase_flags(flags);
-       queue_push2(&request->jobs, SOLVER_SOLVABLE|SOLVER_ERASE|additional, pakfire_package_id(package));
-
-       return 0;
+PAKFIRE_EXPORT int pakfire_request_erase_package(
+               struct pakfire_request* request, PakfirePackage package, int flags) {
+       return pakfire_request_add_package(request, SOLVER_ERASE, package, erase_flags(flags));
 }
 
 PAKFIRE_EXPORT int pakfire_request_erase_relation(struct pakfire_request* request, PakfireRelation relation, int flags) {
@@ -338,8 +346,9 @@ PAKFIRE_EXPORT int pakfire_request_erase_selector(struct pakfire_request* reques
        return pakfire_selector2queue(selector, &request->jobs, SOLVER_ERASE|additional);
 }
 
-PAKFIRE_EXPORT int pakfire_request_upgrade_package(struct pakfire_request* request, PakfirePackage package) {
-       return pakfire_request_install_package(request, package);
+PAKFIRE_EXPORT int pakfire_request_upgrade_package(
+               struct pakfire_request* request, PakfirePackage package) {
+       return pakfire_request_add_package(request, SOLVER_UPDATE, package, 0);
 }
 
 PAKFIRE_EXPORT int pakfire_request_upgrade_relation(struct pakfire_request* request, PakfireRelation relation) {
@@ -351,21 +360,19 @@ PAKFIRE_EXPORT int pakfire_request_upgrade_selector(struct pakfire_request* requ
 }
 
 PAKFIRE_EXPORT int pakfire_request_upgrade_all(struct pakfire_request* request) {
-       queue_push2(&request->jobs, SOLVER_UPDATE|SOLVER_SOLVABLE_ALL, 0);
+       queue_push2(&request->jobs, SOLVER_SOLVABLE_ALL|SOLVER_UPDATE, 0);
 
        return 0;
 }
 
 PAKFIRE_EXPORT int pakfire_request_distupgrade(struct pakfire_request* request) {
-       queue_push2(&request->jobs, SOLVER_DISTUPGRADE|SOLVER_SOLVABLE_ALL, 0);
+       queue_push2(&request->jobs, SOLVER_SOLVABLE_ALL|SOLVER_DISTUPGRADE, 0);
 
        return 0;
 }
 
 PAKFIRE_EXPORT int pakfire_request_lock_package(struct pakfire_request* request, PakfirePackage package) {
-       queue_push2(&request->jobs, SOLVER_SOLVABLE|SOLVER_LOCK, pakfire_package_id(package));
-
-       return 0;
+       return pakfire_request_add_package(request, SOLVER_LOCK, package, 0);
 }
 
 PAKFIRE_EXPORT int pakfire_request_lock_relation(struct pakfire_request* request, PakfireRelation relation) {
@@ -377,7 +384,7 @@ PAKFIRE_EXPORT int pakfire_request_lock_selector(struct pakfire_request* request
 }
 
 PAKFIRE_EXPORT int pakfire_request_verify(struct pakfire_request* request) {
-       queue_push2(&request->jobs, SOLVER_VERIFY|SOLVER_SOLVABLE_ALL, 0);
+       queue_push2(&request->jobs, SOLVER_SOLVABLE_ALL|SOLVER_VERIFY, 0);
 
        return 0;
 }