From: Michael Tremer Date: Tue, 15 Jun 2021 10:59:45 +0000 (+0000) Subject: pakfire_install/erase/update: Indicate how many packages changed X-Git-Tag: 0.9.28~1244 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1a06c73e9055f0ddd9fcd56493d6f132aea8cf2;p=pakfire.git pakfire_install/erase/update: Indicate how many packages changed Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index c19a4e840..0444800c7 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -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; diff --git a/src/libpakfire/include/pakfire/pakfire.h b/src/libpakfire/include/pakfire/pakfire.h index a3c19e4ac..b39097bfc 100644 --- a/src/libpakfire/include/pakfire/pakfire.h +++ b/src/libpakfire/include/pakfire/pakfire.h @@ -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 diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index 38d8273c5..7e720d2e8 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -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); }