diff options
author | Matthew Leeds <matthew.leeds@endlessm.com> | 2020-04-04 22:18:40 -0700 |
---|---|---|
committer | Alexander Larsson <alexander.larsson@gmail.com> | 2020-04-16 09:22:11 +0200 |
commit | e6b906f842636031606116a22d2666aa0e622df6 (patch) | |
tree | 8a19322bbc0d843e86c2131aefd1994dee7df55e | |
parent | 56071df5fbc2c32590ac983afd783b785a4ba0c9 (diff) | |
download | flatpak-e6b906f842636031606116a22d2666aa0e622df6.tar.gz |
transaction: Add transaction_operation_get_related_to_op()
This will be used in the following commit, so we can track what
installed thing needs an update when there's a transaction operation to
e.g. install its missing runtime or extension.
-rw-r--r-- | common/flatpak-transaction.c | 24 | ||||
-rw-r--r-- | common/flatpak-transaction.h | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/common/flatpak-transaction.c b/common/flatpak-transaction.c index e3d0b68a..c2aff019 100644 --- a/common/flatpak-transaction.c +++ b/common/flatpak-transaction.c @@ -127,6 +127,7 @@ struct _FlatpakTransactionOperation int run_after_prio; /* Higher => run later (when it becomes runnable). Used to run related ops (runtime extensions) before deps (apps using the runtime) */ GList *run_before_ops; FlatpakTransactionOperation *fail_if_op_fails; /* main app/runtime for related extensions, runtime for apps */ + FlatpakTransactionOperation *related_to_op; /* main app/runtime for related extensions, app for runtimes */ }; typedef struct _FlatpakTransactionPrivate FlatpakTransactionPrivate; @@ -675,6 +676,26 @@ flatpak_transaction_operation_get_ref (FlatpakTransactionOperation *self) } /** + * flatpak_transaction_operation_get_related_to_op: + * @self: a #FlatpakTransactionOperation + * + * Gets the operation which caused this operation to be added to the + * transaction. In the case of a runtime, it's the app whose runtime it is. In + * the case of a related ref such as an extension, it's the main app or + * runtime. In the case of a main app or something added to the transaction by + * flatpak_transaction_add_ref(), %NULL will be returned. + * + * Returns: (transfer none) (nullable): the #FlatpakTransactionOperation this + * one is related to, or %NULL + * Since: 1.7.3 + */ +FlatpakTransactionOperation * +flatpak_transaction_operation_get_related_to_op (FlatpakTransactionOperation *self) +{ + return self->related_to_op; +} + +/** * flatpak_transaction_operation_get_remote: * @self: a #FlatpakTransactionOperation * @@ -1782,6 +1803,7 @@ add_related (FlatpakTransaction *self, FLATPAK_TRANSACTION_OPERATION_UNINSTALL); related_op->non_fatal = TRUE; related_op->fail_if_op_fails = op; + related_op->related_to_op = op; run_operation_before (op, related_op, 1); } } @@ -1801,6 +1823,7 @@ add_related (FlatpakTransaction *self, FLATPAK_TRANSACTION_OPERATION_INSTALL_OR_UPDATE); related_op->non_fatal = TRUE; related_op->fail_if_op_fails = op; + related_op->related_to_op = op; run_operation_before (related_op, op, 1); } } @@ -1938,6 +1961,7 @@ add_deps (FlatpakTransaction *self, runtime_op->ref, op->ref); op->fail_if_op_fails = runtime_op; + runtime_op->related_to_op = op; run_operation_before (runtime_op, op, 2); } diff --git a/common/flatpak-transaction.h b/common/flatpak-transaction.h index f66ddee2..3f93e21b 100644 --- a/common/flatpak-transaction.h +++ b/common/flatpak-transaction.h @@ -174,6 +174,8 @@ FlatpakTransactionOperationType flatpak_transaction_operation_get_operation_type FLATPAK_EXTERN const char * flatpak_transaction_operation_get_ref (FlatpakTransactionOperation *self); FLATPAK_EXTERN +FlatpakTransactionOperation * flatpak_transaction_operation_get_related_to_op (FlatpakTransactionOperation *self); +FLATPAK_EXTERN const char * flatpak_transaction_operation_get_remote (FlatpakTransactionOperation *self); FLATPAK_EXTERN GFile * flatpak_transaction_operation_get_bundle_path (FlatpakTransactionOperation *self); |