]> git.ipfire.org Git - pakfire.git/commitdiff
requests: Move fetching the transaction into a separate function
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Nov 2022 11:09:16 +0000 (11:09 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Nov 2022 11:09:16 +0000 (11:09 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/include/pakfire/request.h
src/libpakfire/pakfire.c
src/libpakfire/request.c

index e605f2904a6cb21d730dad7a7356bc74188682ff..4ec759e9e027b1813ba6c640ce39c3801b4fd2db 100644 (file)
@@ -1326,7 +1326,7 @@ static int pakfire_build_install_test(struct pakfire_build* build) {
        r = pakfire_packagelist_walk(build->packages, pakfire_build_install_package, request);
 
        // Solve the request
-       r = pakfire_request_solve(request, NULL);
+       r = pakfire_request_solve(request);
        switch (r) {
                // All okay
                case 0:
index 72f2f79141529f3bd9b5b2a2f17f231b257c3fc1..89b808cbd15d1e3ac20d019776f87f95795a7aca 100644 (file)
@@ -59,8 +59,7 @@ int pakfire_request_create(struct pakfire_request** request, struct pakfire* pak
 struct pakfire_request* pakfire_request_ref(struct pakfire_request* request);
 struct pakfire_request* pakfire_request_unref(struct pakfire_request* request);
 
-int pakfire_request_solve(struct pakfire_request* request,
-       struct pakfire_transaction** transaction);
+int pakfire_request_solve(struct pakfire_request* request);
 
 int pakfire_request_add(struct pakfire_request* request,
        const enum pakfire_request_action action, const char* what, int flags);
@@ -75,6 +74,9 @@ Solver* pakfire_request_get_solver(struct pakfire_request* request);
 int pakfire_request_next_problem(
        struct pakfire_request* request, struct pakfire_problem** problem);
 
+int pakfire_request_get_transaction(struct pakfire_request* request,
+       struct pakfire_transaction** transaction);
+
 #endif
 
 #endif /* PAKFIRE_REQUEST_H */
index 19dff85b7d375677f5b09f07b34c754cd98a38c8..427a40fa296296ef870e027fc1bd0edde8e18a0e 100644 (file)
@@ -1755,7 +1755,7 @@ static int pakfire_perform_transaction(
 
        // Solve the request
        while (!solved) {
-               r = pakfire_request_solve(request, &transaction);
+               r = pakfire_request_solve(request);
                switch (r) {
                        case 0:
                                solved = 1;
@@ -1775,6 +1775,11 @@ static int pakfire_perform_transaction(
                }
        }
 
+       // Fetch the transaction
+       r = pakfire_request_get_transaction(request, &transaction);
+       if (r)
+               goto ERROR;
+
        // Set how many packages have been changed
        if (changed)
                *changed = pakfire_transaction_count(transaction);
@@ -1876,7 +1881,7 @@ static int pakfire_perform_transaction_simple(struct pakfire* pakfire, int solve
 
        // Solve the request
        while (!solved) {
-               r = pakfire_request_solve(request, &transaction);
+               r = pakfire_request_solve(request);
                switch (r) {
                        case 0:
                                solved = 1;
@@ -1897,6 +1902,11 @@ static int pakfire_perform_transaction_simple(struct pakfire* pakfire, int solve
                }
        }
 
+       // Fetch the transaction
+       r = pakfire_request_get_transaction(request, &transaction);
+       if (r)
+               goto ERROR;
+
        // Set how many packages have been changed
        if (changed)
                *changed = pakfire_transaction_count(transaction);
index 0e9331f73bd7cc75a9c2f806bf426214227b33fa..8cc773d8c8feac30db02247ed709932f0ed1619b 100644 (file)
@@ -214,17 +214,10 @@ Solver* pakfire_request_get_solver(struct pakfire_request* request) {
        return request->solver;
 }
 
-int pakfire_request_solve(struct pakfire_request* request,
-               struct pakfire_transaction** transaction) {
-       int r;
-
+int pakfire_request_solve(struct pakfire_request* request) {
        // Prepare pool
        pakfire_pool_internalize(request->pakfire);
 
-       // Reset pointer
-       if (transaction)
-               *transaction = NULL;
-
 #ifdef ENABLE_DEBUG
        Pool* pool = pakfire_get_solv_pool(request->pakfire);
 
@@ -255,21 +248,8 @@ int pakfire_request_solve(struct pakfire_request* request,
        solver_printdecisions(request->solver);
 #endif
 
-       // If the solving process was successful, we create the transaction
-       if (transaction) {
-               r = pakfire_transaction_create(transaction, request->pakfire, request->solver);
-               if (r)
-                       goto ERROR;
-       }
-
        // All okay
        return 0;
-
-ERROR:
-       if (transaction && *transaction)
-               pakfire_transaction_unref(*transaction);
-
-       return r;
 }
 
 static int pakfire_request_is_file(const char* what) {
@@ -490,3 +470,11 @@ int pakfire_request_take_solution(struct pakfire_request* request,
        pakfire_problem_unref(problem);
        return 0;
 }
+
+int pakfire_request_get_transaction(struct pakfire_request* request,
+               struct pakfire_transaction** transaction) {
+       // XXX Check if we have solved successfully
+
+       // Create the transaction
+       return pakfire_transaction_create(transaction, request->pakfire, request->solver);
+}