static gboolean backend_simulate_remove_packages_thread (PkBackend *backend) { PacmanList *list; gboolean autoremove; PacmanTransaction *transaction = NULL; PacmanTransactionFlags flags = PACMAN_TRANSACTION_FLAGS_REMOVE_CASCADE; g_return_val_if_fail (backend != NULL, FALSE); autoremove = pk_backend_get_bool (backend, "autoremove"); /* remove unneeded packages that were required by those to be removed */ if (autoremove) { flags |= PACMAN_TRANSACTION_FLAGS_REMOVE_RECURSIVE; } /* prepare the transaction */ list = backend_remove_list_targets (backend); if (list != NULL) { transaction = backend_transaction_simulate (backend, PACMAN_TRANSACTION_REMOVE, flags, list); pacman_list_free_full (list, g_free); if (transaction != NULL) { /* emit packages that would have been installed or removed */ backend_transaction_packages (backend, transaction); } } return backend_transaction_finished (backend, transaction); }
static gboolean backend_remove_packages_thread (PkBackend *backend) { PacmanList *list; gboolean allow_deps; gboolean autoremove; PacmanTransaction *transaction = NULL; PacmanTransactionFlags flags = PACMAN_TRANSACTION_FLAGS_NONE; g_return_val_if_fail (backend != NULL, FALSE); allow_deps = pk_backend_get_bool (backend, "allow_deps"); autoremove = pk_backend_get_bool (backend, "autoremove"); /* remove packages that depend on those to be removed */ if (allow_deps) { flags |= PACMAN_TRANSACTION_FLAGS_REMOVE_CASCADE; } /* remove unneeded packages that were required by those to be removed */ if (autoremove) { flags |= PACMAN_TRANSACTION_FLAGS_REMOVE_RECURSIVE; } /* run the transaction */ list = backend_remove_list_targets (backend); if (list != NULL) { transaction = backend_transaction_run (backend, PACMAN_TRANSACTION_REMOVE, flags, list); pacman_list_free_full (list, g_free); } return backend_transaction_finished (backend, transaction); }
static void pacman_transaction_finalize (GObject *object) { PacmanTransactionPrivate *priv; g_return_if_fail (object != NULL); priv = PACMAN_TRANSACTION_GET_PRIVATE (PACMAN_TRANSACTION (object)); pacman_list_free (priv->marked_packages); pacman_list_free_full (priv->missing_dependencies, (GDestroyNotify) pacman_missing_dependency_free); pacman_list_free_full (priv->conflicts, (GDestroyNotify) pacman_conflict_free); pacman_list_free_full (priv->file_conflicts, (GDestroyNotify) pacman_file_conflict_free); pacman_list_free (priv->invalid_files); pacman_transaction_end (NULL); pacman_manager_new_transaction (pacman_manager, G_TYPE_NONE); G_OBJECT_CLASS (pacman_transaction_parent_class)->finalize (object); }
/** * pacman_manager_set_sync_firsts: * @manager: A #PacmanManager. * @packages: A list of package names. * * Sets the list of SyncFirsts to @sync_firsts. See pacman_manager_get_sync_firsts(). */ void pacman_manager_set_sync_firsts (PacmanManager *manager, PacmanList *packages) { PacmanManagerPrivate *priv; g_return_if_fail (manager != NULL); priv = PACMAN_MANAGER_GET_PRIVATE (manager); pacman_list_free_full (priv->sync_firsts, (GDestroyNotify) g_free); priv->sync_firsts = pacman_list_strdup (packages); }
void pacman_transaction_set_file_conflicts (PacmanTransaction *transaction, PacmanList *conflicts) { PacmanTransactionPrivate *priv; g_return_if_fail (transaction != NULL); priv = PACMAN_TRANSACTION_GET_PRIVATE (transaction); pacman_list_free_full (priv->file_conflicts, (GDestroyNotify) pacman_file_conflict_free); priv->file_conflicts = conflicts; }
void pacman_transaction_set_missing_dependencies (PacmanTransaction *transaction, PacmanList *dependencies) { PacmanTransactionPrivate *priv; g_return_if_fail (transaction != NULL); priv = PACMAN_TRANSACTION_GET_PRIVATE (transaction); pacman_list_free_full (priv->missing_dependencies, (GDestroyNotify) pacman_missing_dependency_free); priv->missing_dependencies = dependencies; }
static void pacman_manager_finalize (GObject *object) { PacmanManagerPrivate *priv; g_return_if_fail (object != NULL); priv = PACMAN_MANAGER_GET_PRIVATE (PACMAN_MANAGER (object)); if (priv->transaction != NULL) { g_object_unref (priv->transaction); } g_free (priv->clean_method); if (priv->transfer != NULL) { g_closure_unref (priv->transfer); } pacman_list_free_full (priv->hold_packages, g_free); pacman_list_free_full (priv->sync_firsts, g_free); pacman_manager = NULL; alpm_release (); G_OBJECT_CLASS (pacman_manager_parent_class)->finalize (object); }