]> git.ipfire.org Git - pakfire.git/commitdiff
transaction: Remove the legacy logger
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 25 Oct 2024 13:58:07 +0000 (13:58 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 25 Oct 2024 13:58:07 +0000 (13:58 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/transaction.c

index 035ce9a2295496f2aa74784edbfa54bc18413815..1ff82b8464e71e1573dc58b7a191f0c85bac0df5 100644 (file)
 #include <errno.h>
 #include <stdlib.h>
 
+// libsolv
 #include <solv/selection.h>
 #include <solv/transaction.h>
 #include <solv/solverdebug.h>
 
-// Enable legacy logging
-#define PAKFIRE_LEGACY_LOGGING
-
 #include <pakfire/archive.h>
 #include <pakfire/ctx.h>
 #include <pakfire/db.h>
@@ -138,8 +136,9 @@ static enum pakfire_steps pakfire_transaction_get_step_type(
                        return PAKFIRE_STEP_DOWNGRADED;
 
                default:
-                       ERROR(transaction->pakfire, "Unhandled step type 0x%x. Ignoring.\n",
-                               (unsigned int)type);
+                       CTX_ERROR(transaction->ctx,
+                               "Unhandled step type 0x%x. Ignoring.\n", (unsigned int)type);
+
                        return PAKFIRE_STEP_UNKNOWN;
        }
 }
@@ -165,33 +164,13 @@ static void pakfire_transaction_free_archives_and_packages(
        }
 }
 
-static void pakfire_transaction_free(struct pakfire_transaction* transaction) {
-       pakfire_transaction_free_archives_and_packages(transaction);
-
-       if (transaction->userinstalled) {
-               for (char** userinstalled = transaction->userinstalled; *userinstalled; userinstalled++)
-                       free(*userinstalled);
-               free(transaction->userinstalled);
-       }
-
-       if (transaction->transaction)
-               transaction_free(transaction->transaction);
-       if (transaction->solver)
-               solver_free(transaction->solver);
-       if (transaction->pakfire)
-               pakfire_unref(transaction->pakfire);
-       if (transaction->ctx)
-               pakfire_ctx_unref(transaction->ctx);
-       free(transaction);
-}
-
 static int pakfire_transaction_import_transaction(struct pakfire_transaction* transaction) {
        int r;
 
        // Clone the transaction to keep a copy of it
        transaction->transaction = solver_create_transaction(transaction->solver);
        if (!transaction->transaction) {
-               ERROR(transaction->pakfire, "Could not create transaction from solver: %m\n");
+               CTX_ERROR(transaction->ctx, "Could not create transaction from solver: %m\n");
                return 1;
        }
 
@@ -250,7 +229,7 @@ static int pakfire_transaction_import_userinstalled(struct pakfire_transaction*
 
        transaction->userinstalled = calloc(userinstalled.count + 1, sizeof(*transaction->userinstalled));
        if (!transaction->userinstalled) {
-               ERROR(transaction->pakfire, "Could not allocate userinstalled: %m\n");
+               CTX_ERROR(transaction->ctx, "Could not allocate userinstalled: %m\n");
                r = -errno;
                goto ERROR;
        }
@@ -295,7 +274,7 @@ static int pakfire_transaction_setup_solver(struct pakfire_transaction* transact
        // Allocate a new solver
        transaction->solver = solver_create(pool);
        if (!transaction->solver) {
-               ERROR(transaction->pakfire, "Could not allocate solver: %m\n");
+               CTX_ERROR(transaction->ctx, "Could not allocate solver: %m\n");
                return -errno;
        }
 
@@ -353,15 +332,37 @@ PAKFIRE_EXPORT int pakfire_transaction_create(struct pakfire_transaction** trans
                goto ERROR;
 
        // Return the transaction
-       *transaction = t;
+       *transaction = pakfire_transaction_ref(t);
 
        return 0;
 
 ERROR:
-       pakfire_transaction_free(t);
+       if (t)
+               pakfire_transaction_unref(t);
+
        return r;
 }
 
+static void pakfire_transaction_free(struct pakfire_transaction* transaction) {
+       pakfire_transaction_free_archives_and_packages(transaction);
+
+       if (transaction->userinstalled) {
+               for (char** userinstalled = transaction->userinstalled; *userinstalled; userinstalled++)
+                       free(*userinstalled);
+               free(transaction->userinstalled);
+       }
+
+       if (transaction->transaction)
+               transaction_free(transaction->transaction);
+       if (transaction->solver)
+               solver_free(transaction->solver);
+       if (transaction->pakfire)
+               pakfire_unref(transaction->pakfire);
+       if (transaction->ctx)
+               pakfire_ctx_unref(transaction->ctx);
+       free(transaction);
+}
+
 PAKFIRE_EXPORT struct pakfire_transaction* pakfire_transaction_ref(
                struct pakfire_transaction* transaction) {
        transaction->nrefs++;
@@ -578,7 +579,7 @@ PAKFIRE_EXPORT int pakfire_transaction_solve(struct pakfire_transaction* transac
 
        const char* selection = pool_selection2str(pool, &transaction->jobs, 0);
        if (selection)
-               DEBUG(transaction->pakfire, "Solving: %s\n", selection);
+               CTX_DEBUG(transaction->ctx, "Solving: %s\n", selection);
 
 RETRY:
        // Save time when we starting solving
@@ -590,7 +591,7 @@ RETRY:
        // Save time when we finished solving
        solving_end = clock();
 
-       DEBUG(transaction->pakfire, "Solved request in %.4fms\n",
+       CTX_DEBUG(transaction->ctx, "Solved request in %.4fms\n",
                (double)(solving_end - solving_start) * 1000 / CLOCKS_PER_SEC);
 
        switch (r) {
@@ -622,7 +623,7 @@ RETRY:
                        p = pakfire_transaction_get_problem_string(transaction, flags);
 
                        if (p) {
-                               DEBUG(transaction->pakfire,
+                               CTX_DEBUG(transaction->ctx,
                                        "Could not solve request: %s\n%s\n", selection, p);
 
                                // Return the problems
@@ -779,7 +780,7 @@ static int pakfire_transaction_add_job(struct pakfire_transaction* transaction,
                queue_push2(&jobs, SOLVER_SOLVABLE_PROVIDES, id);
        }
 
-       DEBUG(transaction->pakfire, "Found %d match(es) for '%s'\n", jobs.count / 2, what);
+       CTX_DEBUG(transaction->ctx, "Found %d match(es) for '%s'\n", jobs.count / 2, what);
 
        // Set action and global flags
        for (int i = 0; i < jobs.count; i += 2) {
@@ -1212,7 +1213,7 @@ PAKFIRE_EXPORT char* pakfire_transaction_dump(struct pakfire_transaction* transa
        }
 
        if (s)
-               DEBUG(transaction->pakfire, "%s", s);
+               CTX_DEBUG(transaction->ctx, "%s", s);
 
 ERROR:
        queue_free(&classes);
@@ -1249,7 +1250,7 @@ static int pakfire_transaction_verify(struct pakfire_transaction* transaction,
 
        // Nothing to do if this step does not have an archive
        if (!archive) {
-               DEBUG(transaction->pakfire, "Package %s requires no archive\n", nevra);
+               CTX_DEBUG(transaction->ctx, "Package %s requires no archive\n", nevra);
                return 0;
        }
 
@@ -1259,7 +1260,7 @@ static int pakfire_transaction_verify(struct pakfire_transaction* transaction,
        // Fetch digest from package
        const unsigned char* expected_digest = pakfire_package_get_digest(pkg, &digest_type, &length);
        if (!expected_digest) {
-               DEBUG(transaction->pakfire, "Package %s has no digest\n", nevra);
+               CTX_DEBUG(transaction->ctx, "Package %s has no digest\n", nevra);
                return 0;
        }
 
@@ -1299,7 +1300,7 @@ static int pakfire_transaction_extract(struct pakfire_transaction* transaction,
        // Extract payload
        int r = pakfire_archive_extract(archive, NULL, 0);
        if (r) {
-               ERROR(transaction->pakfire, "Could not extract package %s: %m\n",
+               CTX_ERROR(transaction->ctx, "Could not extract package %s: %m\n",
                        nevra);
                return r;
        }
@@ -1444,7 +1445,7 @@ static int pakfire_transaction_run_step(struct pakfire_transaction* transaction,
        const char* nevra = pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA);
        const enum pakfire_steps type = pakfire_transaction_get_step_type(transaction, pkg);
 
-       DEBUG(transaction->pakfire, "Running %s (%s) for %s\n",
+       CTX_DEBUG(transaction->ctx, "Running %s (%s) for %s\n",
                pakfire_action_type_string(action), pakfire_step_type_string(type), nevra);
 
        int r = 0;
@@ -1628,7 +1629,7 @@ static int pakfire_transaction_run_step(struct pakfire_transaction* transaction,
        }
 
        if (r)
-               ERROR(transaction->pakfire, "Step %s (%u) for %s has failed: %m\n",
+               CTX_ERROR(transaction->ctx, "Step %s (%u) for %s has failed: %m\n",
                        pakfire_action_type_string(action), type, nevra);
 
        return r;
@@ -1663,7 +1664,7 @@ static int pakfire_transaction_run_steps(struct pakfire_transaction* transaction
 
                // End loop if action was unsuccessful
                if (r) {
-                       DEBUG(transaction->pakfire, "Step %u failed: %m\n", i);
+                       CTX_DEBUG(transaction->ctx, "Step %u failed: %m\n", i);
                        break;
                }
        }
@@ -1702,7 +1703,7 @@ static int pakfire_transaction_open_archives(struct pakfire_transaction* transac
        return 0;
 }
 
-static int pakfire_usrmove_symlink(struct pakfire* pakfire,
+static int pakfire_usrmove_symlink(struct pakfire_ctx* ctx, struct pakfire* pakfire,
                const char* src, const char* dst) {
        char link[PATH_MAX];
        char path[PATH_MAX];
@@ -1730,11 +1731,11 @@ static int pakfire_usrmove_symlink(struct pakfire* pakfire,
        // Create the symlink
        r = symlink(dst, link);
        if (r) {
-               DEBUG(pakfire, "Could not create symlink %s to %s: %m\n", dst, link);
+               CTX_DEBUG(ctx, "Could not create symlink %s to %s: %m\n", dst, link);
                return r;
        }
 
-       DEBUG(pakfire, "Created symlink %s --> %s\n", link, dst);
+       CTX_DEBUG(ctx, "Created symlink %s --> %s\n", link, dst);
 
        return 0;
 }
@@ -1744,22 +1745,22 @@ static int pakfire_usrmove_symlink(struct pakfire* pakfire,
        that /bin, /sbin, /lib and /lib64 are symlinks to their
        corresponding path in /usr.
 */
-static int pakfire_usrmove(struct pakfire* pakfire) {
+static int pakfire_usrmove(struct pakfire_ctx* ctx, struct pakfire* pakfire) {
        int r;
 
-       r = pakfire_usrmove_symlink(pakfire, "/bin", "usr/bin");
+       r = pakfire_usrmove_symlink(ctx, pakfire, "/bin", "usr/bin");
        if (r)
                return r;
 
-       r = pakfire_usrmove_symlink(pakfire, "/sbin", "usr/sbin");
+       r = pakfire_usrmove_symlink(ctx, pakfire, "/sbin", "usr/sbin");
        if (r)
                return r;
 
-       r = pakfire_usrmove_symlink(pakfire, "/lib", "usr/lib");
+       r = pakfire_usrmove_symlink(ctx, pakfire, "/lib", "usr/lib");
        if (r)
                return r;
 
-       r = pakfire_usrmove_symlink(pakfire, "/lib64", "usr/lib64");
+       r = pakfire_usrmove_symlink(ctx, pakfire, "/lib64", "usr/lib64");
        if (r)
                return r;
 
@@ -1771,7 +1772,7 @@ static int pakfire_transaction_perform(struct pakfire_transaction* transaction)
        struct pakfire_db* db;
        int r;
 
-       DEBUG(transaction->pakfire, "Running Transaction %p\n", transaction);
+       CTX_DEBUG(transaction->ctx, "Running Transaction %p\n", transaction);
 
        // Open all archives
        r = pakfire_transaction_open_archives(transaction);
@@ -1781,7 +1782,7 @@ static int pakfire_transaction_perform(struct pakfire_transaction* transaction)
        // Open the database
        r = pakfire_db_open(&db, transaction->pakfire, PAKFIRE_DB_READWRITE);
        if (r) {
-               ERROR(transaction->pakfire, "Could not open the database\n");
+               CTX_ERROR(transaction->ctx, "Could not open the database\n");
                return r;
        }
 
@@ -1791,7 +1792,7 @@ static int pakfire_transaction_perform(struct pakfire_transaction* transaction)
                goto ERROR;
 
        // Make sure /usr-move is working
-       r = pakfire_usrmove(transaction->pakfire);
+       r = pakfire_usrmove(transaction->ctx, transaction->pakfire);
        if (r)
                goto ERROR;
 
@@ -1809,7 +1810,7 @@ static int pakfire_transaction_perform(struct pakfire_transaction* transaction)
        if (r)
                goto ERROR;
 
-       DEBUG(transaction->pakfire, "The transaction has finished successfully\n");
+       CTX_DEBUG(transaction->ctx, "The transaction has finished successfully\n");
 
        // Reload database for next transaction
 
@@ -1915,7 +1916,7 @@ PAKFIRE_EXPORT int pakfire_transaction_download(struct pakfire_transaction* tran
        // Initialize the HTTP client
        r = pakfire_httpclient_create(&httpclient, transaction->ctx, NULL);
        if (r) {
-               ERROR(transaction->pakfire, "Could not initialize HTTP client: %m\n");
+               CTX_ERROR(transaction->ctx, "Could not initialize HTTP client: %m\n");
                return 1;
        }
 
@@ -1931,7 +1932,7 @@ PAKFIRE_EXPORT int pakfire_transaction_download(struct pakfire_transaction* tran
                if (r) {
                        const char* nevra = pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA);
 
-                       ERROR(transaction->pakfire, "Could not add download to queue: %s: %m\n", nevra);
+                       CTX_ERROR(transaction->ctx, "Could not add download to queue: %s: %m\n", nevra);
                        goto ERROR;
                }
        }
@@ -1958,7 +1959,7 @@ PAKFIRE_EXPORT int pakfire_transaction_run(struct pakfire_transaction* transacti
 
        // Skip running an empty transaction
        if (!transaction->num) {
-               DEBUG(transaction->pakfire, "Empty transaction. Skipping...\n");
+               CTX_DEBUG(transaction->ctx, "Empty transaction. Skipping...\n");
                return 0;
        }
 
@@ -1968,7 +1969,7 @@ PAKFIRE_EXPORT int pakfire_transaction_run(struct pakfire_transaction* transacti
        // Check if we should continue
        r = pakfire_ctx_confirm(transaction->ctx, transaction->pakfire, dump, _("Is this okay?"));
        if (r) {
-               ERROR(transaction->pakfire, "Transaction aborted upon user request\n");
+               CTX_ERROR(transaction->ctx, "Transaction aborted upon user request\n");
                goto ERROR;
        }
 
@@ -2004,7 +2005,7 @@ int pakfire_transaction_compose_repo(struct pakfire_transaction* transaction,
        const char* files[transaction->num + 1];
        unsigned int num = 0;
 
-       DEBUG(transaction->pakfire, "Writing transaction to %s...\n", path);
+       CTX_DEBUG(transaction->ctx, "Writing transaction to %s...\n", path);
 
        // Open all archives
        r = pakfire_transaction_open_archives(transaction);