From 614a64c7a4c135bec50014c1a6fcf0d29f000f48 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 29 Jun 2025 14:27:09 +0000 Subject: [PATCH] transaction: Directly pass the context Signed-off-by: Michael Tremer --- src/cli/lib/install.c | 3 ++- src/cli/lib/remove.c | 2 +- src/cli/lib/sync.c | 2 +- src/cli/lib/transaction.c | 7 ++++--- src/cli/lib/transaction.h | 5 +++-- src/cli/lib/update.c | 3 ++- src/pakfire/build.c | 10 +++++----- src/pakfire/package.c | 2 +- src/pakfire/root.c | 2 +- src/pakfire/snapshot.c | 7 ++++--- src/pakfire/transaction.c | 4 ++-- src/pakfire/transaction.h | 4 +++- src/python/transaction.c | 2 +- 13 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/cli/lib/install.c b/src/cli/lib/install.c index 95fbc7ce..941dd28a 100644 --- a/src/cli/lib/install.c +++ b/src/cli/lib/install.c @@ -124,7 +124,8 @@ int cli_install(void* data, int argc, char* argv[]) { if (r) goto ERROR; - r = cli_transaction(root, argc, argv, local_args.transaction_flags, __cli_install, &local_args); + r = cli_transaction(global_args->ctx, root, argc, argv, local_args.transaction_flags, + __cli_install, &local_args); ERROR: if (root) diff --git a/src/cli/lib/remove.c b/src/cli/lib/remove.c index 93b9d5d7..5d13a40e 100644 --- a/src/cli/lib/remove.c +++ b/src/cli/lib/remove.c @@ -104,7 +104,7 @@ int cli_remove(void* data, int argc, char* argv[]) { if (r) goto ERROR; - r = cli_transaction(root, argc, argv, 0, __cli_remove, &local_args); + r = cli_transaction(global_args->ctx, root, argc, argv, 0, __cli_remove, &local_args); ERROR: if (root) diff --git a/src/cli/lib/sync.c b/src/cli/lib/sync.c index 4d2c90f3..5496fa32 100644 --- a/src/cli/lib/sync.c +++ b/src/cli/lib/sync.c @@ -89,7 +89,7 @@ int cli_sync(void* data, int argc, char* argv[]) { if (r) goto ERROR; - r = cli_transaction(root, argc, argv, 0, __cli_sync, &local_args); + r = cli_transaction(global_args->ctx, root, argc, argv, 0, __cli_sync, &local_args); ERROR: if (root) diff --git a/src/cli/lib/transaction.c b/src/cli/lib/transaction.c index bf5836fe..1ec732f3 100644 --- a/src/cli/lib/transaction.c +++ b/src/cli/lib/transaction.c @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -32,14 +33,14 @@ The transaction is then solved and executed. */ -int cli_transaction(pakfire_root* root, int argc, char* argv[], int flags, - cli_transaction_callback callback, void* data) { +int cli_transaction(pakfire_ctx* ctx, pakfire_root* root, int argc, char* argv[], + int flags, cli_transaction_callback callback, void* data) { pakfire_transaction* transaction = NULL; char* problems = NULL; int r; // Create a new transaction - r = pakfire_transaction_create(&transaction, root, flags); + r = pakfire_transaction_create(&transaction, ctx, root, flags); if (r) { fprintf(stderr, "Could not setup the transaction\n"); goto ERROR; diff --git a/src/cli/lib/transaction.h b/src/cli/lib/transaction.h index c570e521..2d4b74b2 100644 --- a/src/cli/lib/transaction.h +++ b/src/cli/lib/transaction.h @@ -21,13 +21,14 @@ #ifndef PAKFIRE_CLI_TRANSACTION_H #define PAKFIRE_CLI_TRANSACTION_H +#include #include #include typedef int (*cli_transaction_callback) (pakfire_transaction* transaction, int argc, char* argv[], void* data); -int cli_transaction(pakfire_root* root, int argc, char* argv[], int flags, - cli_transaction_callback callback, void* data); +int cli_transaction(pakfire_ctx* ctx, pakfire_root* root, int argc, char* argv[], + int flags, cli_transaction_callback callback, void* data); #endif /* PAKFIRE_CLI_TRANSACTION_H */ diff --git a/src/cli/lib/update.c b/src/cli/lib/update.c index 8533be75..4de59464 100644 --- a/src/cli/lib/update.c +++ b/src/cli/lib/update.c @@ -140,7 +140,8 @@ int cli_update(void* data, int argc, char* argv[]) { if (r) goto ERROR; - r = cli_transaction(root, argc, argv, local_args.transaction_flags, __cli_update, &local_args); + r = cli_transaction(global_args->ctx, root, argc, argv, local_args.transaction_flags, + __cli_update, &local_args); ERROR: if (root) diff --git a/src/pakfire/build.c b/src/pakfire/build.c index d1090ec6..8432c76c 100644 --- a/src/pakfire/build.c +++ b/src/pakfire/build.c @@ -2348,8 +2348,8 @@ static int pakfire_build_install_test(pakfire_build* build) { int r; // Create a new transaction - r = pakfire_transaction_create(&transaction, build->root, - PAKFIRE_TRANSACTION_ALLOW_UNINSTALL); + r = pakfire_transaction_create(&transaction, + build->ctx, build->root, PAKFIRE_TRANSACTION_ALLOW_UNINSTALL); if (r < 0) goto ERROR; @@ -2408,7 +2408,7 @@ static int pakfire_build_init(pakfire_build* build, int r; // Create a new transaction - r = pakfire_transaction_create(&transaction, build->root, + r = pakfire_transaction_create(&transaction, build->ctx, build->root, PAKFIRE_TRANSACTION_ALLOW_DOWNGRADE|PAKFIRE_TRANSACTION_ALLOW_UNINSTALL); if (r) goto ERROR; @@ -2629,7 +2629,7 @@ static int pakfire_build_mkimage_install_deps(pakfire_build* build, goto ERROR; // Create a new transaction - r = pakfire_transaction_create(&transaction, build->root, 0); + r = pakfire_transaction_create(&transaction, build->ctx, build->root, 0); if (r) { ERROR(build->ctx, "Could not create transaction: %m\n"); goto ERROR; @@ -2671,7 +2671,7 @@ static int pakfire_build_collect_packages(pakfire_build* build, const char* path int r; // Create a new transaction - r = pakfire_transaction_create(&transaction, build->root, 0); + r = pakfire_transaction_create(&transaction, build->ctx, build->root, 0); if (r) { ERROR(build->ctx, "Could not create transaction: %m\n"); goto ERROR; diff --git a/src/pakfire/package.c b/src/pakfire/package.c index 0568b635..870ef346 100644 --- a/src/pakfire/package.c +++ b/src/pakfire/package.c @@ -2918,7 +2918,7 @@ int pakfire_package_installcheck(pakfire_package* pkg, const char* nevra = pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA); // Create a new transaction - r = pakfire_transaction_create(&transaction, pkg->root, flags); + r = pakfire_transaction_create(&transaction, pkg->ctx, pkg->root, flags); if (r) goto ERROR; diff --git a/src/pakfire/root.c b/src/pakfire/root.c index fe3965b5..44aea58b 100644 --- a/src/pakfire/root.c +++ b/src/pakfire/root.c @@ -1934,7 +1934,7 @@ int pakfire_root_install(pakfire_root* self, const char** packages) { int r; // Create a new transaction - r = pakfire_transaction_create(&transaction, self, 0); + r = pakfire_transaction_create(&transaction, self->ctx, self, 0); if (r < 0) goto ERROR; diff --git a/src/pakfire/snapshot.c b/src/pakfire/snapshot.c index 300f5608..0a96b34e 100644 --- a/src/pakfire/snapshot.c +++ b/src/pakfire/snapshot.c @@ -467,12 +467,13 @@ static int pakfire_snapshot_destroy(pakfire_snapshot* self) { return 0; } -static int pakfire_snapshot_install_packages(pakfire_root* root, const char** packages) { +static int pakfire_snapshot_install_packages(pakfire_ctx* ctx, pakfire_root* root, + const char** packages) { pakfire_transaction* transaction = NULL; int r; // Create a new transaction - r = pakfire_transaction_create(&transaction, root, 0); + r = pakfire_transaction_create(&transaction, ctx, root, 0); if (r) goto ERROR; @@ -555,7 +556,7 @@ int pakfire_snapshot_make(pakfire_snapshot** snapshot, pakfire_ctx* ctx, pakfire } // Install packages - r = pakfire_snapshot_install_packages(p, packages); + r = pakfire_snapshot_install_packages(ctx, p, packages); if (r < 0) goto ERROR; diff --git a/src/pakfire/transaction.c b/src/pakfire/transaction.c index d40d0ccd..cd594694 100644 --- a/src/pakfire/transaction.c +++ b/src/pakfire/transaction.c @@ -367,7 +367,7 @@ static void pakfire_transaction_free(pakfire_transaction* transaction) { } int pakfire_transaction_create(pakfire_transaction** transaction, - pakfire_root* root, int flags) { + pakfire_ctx* ctx, pakfire_root* root, int flags) { int r; // Allocate the transaction @@ -376,7 +376,7 @@ int pakfire_transaction_create(pakfire_transaction** transaction, return -errno; // Store a reference to the context - t->ctx = pakfire_root_get_ctx(root); + t->ctx = pakfire_ctx_ref(ctx); // Store reference to Pakfire t->root = pakfire_root_ref(root); diff --git a/src/pakfire/transaction.h b/src/pakfire/transaction.h index 1da801ea..21cc07d7 100644 --- a/src/pakfire/transaction.h +++ b/src/pakfire/transaction.h @@ -26,6 +26,7 @@ typedef struct pakfire_transaction pakfire_transaction; +#include #include #include #include @@ -59,7 +60,8 @@ enum pakfire_job_flags { PAKFIRE_JOB_BEST = 1 << 3, }; -int pakfire_transaction_create(pakfire_transaction** transaction, pakfire_root* root, int flags); +int pakfire_transaction_create(pakfire_transaction** transaction, + pakfire_ctx* ctx, pakfire_root* root, int flags); pakfire_transaction* pakfire_transaction_ref(pakfire_transaction* transaction); pakfire_transaction* pakfire_transaction_unref(pakfire_transaction* transaction); diff --git a/src/python/transaction.c b/src/python/transaction.c index cb447020..b8601b80 100644 --- a/src/python/transaction.c +++ b/src/python/transaction.c @@ -73,7 +73,7 @@ static int Transaction_init(TransactionObject* self, PyObject* args, PyObject* k flags |= PAKFIRE_TRANSACTION_WITHOUT_RECOMMENDED; // Create a new transaction - r = pakfire_transaction_create(&self->transaction, root->root, flags); + r = pakfire_transaction_create(&self->transaction, root->ctx->ctx, root->root, flags); if (r < 0) { errno = -r; PyErr_SetFromErrno(PyExc_OSError); -- 2.47.2