]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
transaction: Move running ldconfig here
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 15:30:28 +0000 (15:30 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 15:30:28 +0000 (15:30 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/jail.c
src/pakfire/jail.h
src/pakfire/transaction.c

index a93e0e17081538b4b4e8afafd339113283f71bd7..3c9c77ee4ae6ba3d1a7d8e7bf46a74c16f41afc9 100644 (file)
@@ -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",
index f5201b9a00421775be70c06c0769dd486842c54c..1b0d709605fd4df03d901a9512ac080da9560333 100644 (file)
@@ -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
index 86836e203822a7a16c81f380c63bf9a4e2cc63a0..cfcf9018318ca17239b8c99d53fb6ebc3656550e 100644 (file)
@@ -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;