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;
};
// 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;
// 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
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;
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)
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);
}