]> git.ipfire.org Git - pakfire.git/commitdiff
transaction: Create a convenience function to run transactions
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 5 Jun 2021 12:29:31 +0000 (12:29 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 5 Jun 2021 12:29:31 +0000 (12:29 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/transaction.c
src/pakfire/cli.py

index 43141ca7d01bfa3828c7206ad43a84f58e10e84d..84edcededef183f2527f04dc6115c3dc2b122710 100644 (file)
@@ -108,11 +108,6 @@ static int pakfire_build_install_packages(Pakfire pakfire, int* snapshot_needs_u
        if (pakfire_transaction_count(transaction))
                *snapshot_needs_update = 1;
 
-       // Download
-       r = pakfire_transaction_download(transaction);
-       if (r)
-               goto ERROR;
-
        // Run the transaction
        r = pakfire_transaction_run(transaction);
        if (r)
index ed203d95aedc6d01a710a738513021c66b56147e..3954348a05ff4f6fa6e6e14f7a2633b774d20000 100644 (file)
@@ -737,7 +737,7 @@ static int pakfire_transaction_open_archives(struct pakfire_transaction* transac
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_transaction_run(struct pakfire_transaction* transaction) {
+static int pakfire_transaction_perform(struct pakfire_transaction* transaction) {
        PakfireRepo repo = NULL;
        struct pakfire_db* db;
        int r;
@@ -901,3 +901,25 @@ ERROR:
 
        return r;
 }
+
+PAKFIRE_EXPORT int pakfire_transaction_run(struct pakfire_transaction* transaction) {
+       int r;
+
+       // Skip running an empty transaction
+       if (!transaction->num) {
+               DEBUG(transaction->pakfire, "Empty transaction. Skipping...\n");
+               return 0;
+       }
+
+       // Download what we need
+       r = pakfire_transaction_download(transaction);
+       if (r)
+               return r;
+
+       // Perform all steps
+       r = pakfire_transaction_perform(transaction);
+       if (r)
+               return r;
+
+       return 0;
+}
index 325beb6288d240affc4b20faf7d31965f0148d3d..338d1fd281e8ccc8e410c38405caed8d6b9fe6dc 100644 (file)
@@ -300,9 +300,6 @@ class Cli(object):
                        self.ui.message(_("Aborted by user"))
                        return
 
-               # Download transaction
-               transaction.download()
-
                # Run the transaction
                transaction.run()