]> git.ipfire.org Git - pakfire.git/commitdiff
pakfire_install/erase/update: Indicate how many packages changed
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 15 Jun 2021 10:59:45 +0000 (10:59 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 15 Jun 2021 10:59:45 +0000 (10:59 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/pakfire.c

index c19a4e8400130866b9b684657dbcdd1b3836caee..0444800c72d8c8d7cb55caeb79b59fbf287fba16 100644 (file)
@@ -74,16 +74,20 @@ static int pakfire_build_install_packages(Pakfire pakfire, int* snapshot_needs_u
        if (!packages)
                goto ERROR;
 
+       int changed = 0;
+
        // Install everything
-       r = pakfire_install(pakfire, (const char**)packages, 0);
+       r = pakfire_install(pakfire, (const char**)packages, 0, &changed);
        if (r) {
                ERROR(pakfire, "Could not install build dependencies\n");
                goto ERROR;
        }
 
-       // XXX Update everything
+       // Mark snapshot as changed if new packages were installed
+       if (changed)
+               *snapshot_needs_update = 1;
 
-       // XXX How do we know that the snapshot needs to be updated?
+       // XXX Update everything
 
        // Success
        r = 0;
@@ -789,7 +793,7 @@ PAKFIRE_EXPORT int pakfire_build(Pakfire pakfire, const char* path,
        };
 
        // Install the package into the build environment
-       r = pakfire_install(pakfire, packages, 0);
+       r = pakfire_install(pakfire, packages, 0, NULL);
        if (r) {
                ERROR(pakfire, "Could not install %s\n", path);
                goto ERROR;
index a3c19e4ac5a0b5ea940a2ce7aebadbf226207e77..b39097bfca8b95857c286c3cd4f0a45932e4571a 100644 (file)
@@ -87,9 +87,9 @@ int pakfire_read_makefile(PakfireParser* parser, Pakfire pakfire, const char* pa
 
 // Install/Erase/Update
 
-int pakfire_install(Pakfire pakfire, const char** packages, int flags);
-int pakfire_erase(Pakfire pakfire, const char** packages, int flags);
-int pakfire_update(Pakfire pakfire, const char** packages, int flags);
+int pakfire_install(Pakfire pakfire, const char** packages, int flags, int* changed);
+int pakfire_erase(Pakfire pakfire, const char** packages, int flags, int* changed);
+int pakfire_update(Pakfire pakfire, const char** packages, int flags, int* changed);
 
 #ifdef PAKFIRE_PRIVATE
 
index 38d8273c529d5dfa8dead5345d0951297206f687..7e720d2e8b17f12ed5af7c646f069806bf54d1d0 100644 (file)
@@ -1560,7 +1560,7 @@ struct archive* pakfire_make_archive_disk_writer(Pakfire pakfire) {
 
 static int pakfire_perform_transaction(Pakfire pakfire,
                int (*action)(struct pakfire_request* request, const char* what, int flags),
-               const char** packages, int flags) {
+               const char** packages, int flags, int* changed) {
        struct pakfire_request* request = NULL;
        struct pakfire_transaction* transaction = NULL;
        int r = 1;
@@ -1595,6 +1595,10 @@ static int pakfire_perform_transaction(Pakfire pakfire,
        if (!transaction)
                goto ERROR;
 
+       // Set how many packages have been changed
+       if (changed)
+               *changed = pakfire_transaction_count(transaction);
+
        // Run the transaction
        r = pakfire_transaction_run(transaction);
        if (r)
@@ -1612,14 +1616,20 @@ ERROR:
        return r;
 }
 
-PAKFIRE_EXPORT int pakfire_install(Pakfire pakfire, const char** packages, int flags) {
-       return pakfire_perform_transaction(pakfire, pakfire_request_install, packages, flags);
+PAKFIRE_EXPORT int pakfire_install(Pakfire pakfire, const char** packages,
+               int flags, int* changed) {
+       return pakfire_perform_transaction(pakfire, pakfire_request_install, packages,
+               flags, changed);
 }
 
-PAKFIRE_EXPORT int pakfire_erase(Pakfire pakfire, const char** packages, int flags) {
-       return pakfire_perform_transaction(pakfire, pakfire_request_erase, packages, flags);
+PAKFIRE_EXPORT int pakfire_erase(Pakfire pakfire, const char** packages,
+               int flags, int* changed) {
+       return pakfire_perform_transaction(pakfire, pakfire_request_erase, packages,
+               flags, changed);
 }
 
-PAKFIRE_EXPORT int pakfire_update(Pakfire pakfire, const char** packages, int flags) {
-       return pakfire_perform_transaction(pakfire, pakfire_request_upgrade, packages, flags);
+PAKFIRE_EXPORT int pakfire_update(Pakfire pakfire, const char** packages,
+               int flags, int* changed) {
+       return pakfire_perform_transaction(pakfire, pakfire_request_upgrade, packages,
+               flags, changed);
 }