summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Leeds <matthew.leeds@endlessm.com>2020-04-04 22:18:40 -0700
committerAlexander Larsson <alexander.larsson@gmail.com>2020-04-16 09:22:11 +0200
commite6b906f842636031606116a22d2666aa0e622df6 (patch)
tree8a19322bbc0d843e86c2131aefd1994dee7df55e
parent56071df5fbc2c32590ac983afd783b785a4ba0c9 (diff)
downloadflatpak-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.c24
-rw-r--r--common/flatpak-transaction.h2
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);