From: Michael Tremer Date: Sun, 29 Jun 2025 15:30:28 +0000 (+0000) Subject: transaction: Move running ldconfig here X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=26eb42efa8e89c557192dc7114b385eb36886454;p=people%2Fms%2Fpakfire.git transaction: Move running ldconfig here Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/jail.c b/src/pakfire/jail.c index a93e0e17..3c9c77ee 100644 --- a/src/pakfire/jail.c +++ b/src/pakfire/jail.c @@ -2252,15 +2252,6 @@ static int pakfire_jail_run_if_possible(pakfire_ctx* ctx, pakfire_root* root, co return pakfire_jail_run(ctx, root, argv, NULL, 0, NULL, NULL); } -int pakfire_jail_ldconfig(pakfire_ctx* ctx, pakfire_root* root) { - const char* argv[] = { - "/sbin/ldconfig", - NULL, - }; - - return pakfire_jail_run_if_possible(ctx, root, argv); -} - int pakfire_jail_run_systemd_tmpfiles(pakfire_ctx* ctx, pakfire_root* root) { const char* argv[] = { "/usr/bin/systemd-tmpfiles", diff --git a/src/pakfire/jail.h b/src/pakfire/jail.h index f5201b9a..1b0d7096 100644 --- a/src/pakfire/jail.h +++ b/src/pakfire/jail.h @@ -95,7 +95,6 @@ int pakfire_jail_execute_script(pakfire_jail* jail, pakfire_jail_output_callback output_callback, void* output_data); int pakfire_jail_shell(pakfire_jail* jail, pakfire_env* env); -int pakfire_jail_ldconfig(pakfire_ctx* ctx, pakfire_root* root); int pakfire_jail_run_systemd_tmpfiles(pakfire_ctx* ctx, pakfire_root* root); // Streaming functions diff --git a/src/pakfire/transaction.c b/src/pakfire/transaction.c index 86836e20..cfcf9018 100644 --- a/src/pakfire/transaction.c +++ b/src/pakfire/transaction.c @@ -1332,8 +1332,18 @@ ERROR: return r; } +static int pakfire_transaction_ldconfig(pakfire_transaction* self, pakfire_jail* jail) { + const char* argv[] = { + "/sbin/ldconfig", + NULL, + }; + + // Run the command + return pakfire_jail_execute_command(jail, argv, NULL, PAKFIRE_JAIL_NOENT_OK); +} + static int pakfire_transaction_extract(pakfire_transaction* transaction, - pakfire_package* pkg, pakfire_archive* archive) { + pakfire_jail* jail, pakfire_package* pkg, pakfire_archive* archive) { pakfire_filelist* filelist = NULL; int r; @@ -1360,7 +1370,7 @@ static int pakfire_transaction_extract(pakfire_transaction* transaction, // Update the runtime linker cache if (pakfire_filelist_contains(filelist, "*/lib*.so.?")) - pakfire_jail_ldconfig(transaction->ctx, transaction->root); + pakfire_transaction_ldconfig(transaction, jail); if (filelist) pakfire_filelist_unref(filelist); @@ -1372,7 +1382,7 @@ ERROR: } static int pakfire_transaction_erase(pakfire_transaction* transaction, - pakfire_db* db, pakfire_package* pkg) { + pakfire_db* db, pakfire_jail* jail, pakfire_package* pkg) { pakfire_filelist* filelist = NULL; int r; @@ -1395,7 +1405,7 @@ static int pakfire_transaction_erase(pakfire_transaction* transaction, goto ERROR; // Update the runtime linker cache after all files have been removed - pakfire_jail_ldconfig(transaction->ctx, transaction->root); + r = pakfire_transaction_ldconfig(transaction, jail); ERROR: pakfire_progress_pop_status(transaction->progress); @@ -1590,7 +1600,7 @@ static int pakfire_transaction_run_step(pakfire_transaction* transaction, pakfir if (r) break; - r = pakfire_transaction_extract(transaction, pkg, archive); + r = pakfire_transaction_extract(transaction, jail, pkg, archive); if (r) break; @@ -1627,7 +1637,7 @@ static int pakfire_transaction_run_step(pakfire_transaction* transaction, pakfir if (r) break; - r = pakfire_transaction_extract(transaction, pkg, archive); + r = pakfire_transaction_extract(transaction, jail, pkg, archive); if (r) break; @@ -1651,7 +1661,7 @@ static int pakfire_transaction_run_step(pakfire_transaction* transaction, pakfir if (r) break; - r = pakfire_transaction_erase(transaction, db, pkg); + r = pakfire_transaction_erase(transaction, db, jail, pkg); if (r) break; @@ -1666,7 +1676,7 @@ static int pakfire_transaction_run_step(pakfire_transaction* transaction, pakfir // Erase the package data without running any scripts case PAKFIRE_STEP_UPGRADED: case PAKFIRE_STEP_DOWNGRADED: - r = pakfire_transaction_erase(transaction, db, pkg); + r = pakfire_transaction_erase(transaction, db, jail, pkg); if (r) break;