From: Michael Tremer Date: Fri, 25 Oct 2024 13:58:07 +0000 (+0000) Subject: transaction: Remove the legacy logger X-Git-Tag: 0.9.30~887 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=091217e961b78da4ee3dd87274eea679812f52b0;p=pakfire.git transaction: Remove the legacy logger Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 035ce9a22..1ff82b846 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -22,13 +22,11 @@ #include #include +// libsolv #include #include #include -// Enable legacy logging -#define PAKFIRE_LEGACY_LOGGING - #include #include #include @@ -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);