dir: Pass FlatpakRemoteState to flatpak_dir_find_remote_related

Closes: #1575
Approved by: alexlarsson
This commit is contained in:
Alexander Larsson
2018-04-13 11:48:47 +02:00
committed by Atomic Bot
parent d791625d77
commit 1936d2daae
4 changed files with 24 additions and 18 deletions

View File

@@ -357,6 +357,7 @@ ask_for_remote (FlatpakTransaction *self, const char **remotes)
static gboolean
add_related (FlatpakTransaction *self,
FlatpakRemoteState *state,
const char *remote,
const char *ref,
GError **error)
@@ -371,7 +372,7 @@ add_related (FlatpakTransaction *self,
if (self->no_pull)
related = flatpak_dir_find_local_related (self->dir, ref, remote, NULL, &local_error);
else
related = flatpak_dir_find_remote_related (self->dir, ref, remote, NULL, &local_error);
related = flatpak_dir_find_remote_related (self->dir, state, ref, NULL, &local_error);
if (related == NULL)
{
g_printerr (_("Warning: Problem looking for related refs: %s\n"), local_error->message);
@@ -401,6 +402,7 @@ add_related (FlatpakTransaction *self,
static gboolean
add_deps (FlatpakTransaction *self,
GKeyFile *metakey,
FlatpakRemoteState *state,
const char *remote,
const char *ref,
GError **error)
@@ -473,7 +475,7 @@ add_deps (FlatpakTransaction *self,
}
if (runtime_remote != NULL &&
!add_related (self, runtime_remote, full_runtime_ref, error))
!add_related (self, state, runtime_remote, full_runtime_ref, error))
return FALSE;
return TRUE;
@@ -607,13 +609,13 @@ flatpak_transaction_add_ref (FlatpakTransaction *self,
if (self->add_deps)
{
if (!add_deps (self, metakey, remote, ref, error))
if (!add_deps (self, metakey, state, remote, ref, error))
return FALSE;
}
flatpak_transaction_add_op (self, remote, ref, subpaths, commit, bundle, kind);
if (!add_related (self, remote, ref, error))
if (!add_related (self, state, remote, ref, error))
return FALSE;
return TRUE;

View File

@@ -10806,8 +10806,8 @@ add_related (FlatpakDir *self,
GPtrArray *
flatpak_dir_find_remote_related (FlatpakDir *self,
FlatpakRemoteState *state,
const char *ref,
const char *remote_name,
GCancellable *cancellable,
GError **error)
{
@@ -10817,18 +10817,13 @@ flatpak_dir_find_remote_related (FlatpakDir *self,
g_auto(GStrv) parts = NULL;
g_autoptr(GPtrArray) related = g_ptr_array_new_with_free_func ((GDestroyNotify)flatpak_related_free);
g_autofree char *url = NULL;
g_autoptr(FlatpakRemoteState) state = NULL;
parts = flatpak_decompose_ref (ref, error);
if (parts == NULL)
return NULL;
state = flatpak_dir_get_remote_state (self, remote_name, cancellable, error);
if (state == NULL)
return NULL;
if (!ostree_repo_remote_get_url (self->repo,
remote_name,
state->remote,
&url,
error))
return FALSE;
@@ -10894,18 +10889,22 @@ flatpak_dir_find_remote_related (FlatpakDir *self,
extension_ref = g_build_filename ("runtime", extension, parts[2], branch, NULL);
if (flatpak_summary_lookup_ref (state->summary, extension_collection_id, extension_ref, &checksum, NULL))
checksum = flatpak_remote_state_lookup_ref (state, extension_ref, NULL, NULL);
if (checksum)
{
add_related (self, related, extension, extension_collection_id, extension_ref, checksum, no_autodownload, download_if, autodelete, locale_subset);
add_related (self, related, extension, extension_collection_id, extension_ref, checksum,
no_autodownload, download_if, autodelete, locale_subset);
}
else if (subdirectories)
{
g_auto(GStrv) refs = flatpak_summary_match_subrefs (state->summary, extension_collection_id, extension_ref);
g_auto(GStrv) refs = flatpak_remote_state_match_subrefs (state, extension_ref);
int j;
for (j = 0; refs[j] != NULL; j++)
{
if (flatpak_summary_lookup_ref (state->summary, extension_collection_id, refs[j], &checksum, NULL))
add_related (self, related, extension, extension_collection_id, refs[j], checksum, no_autodownload, download_if, autodelete, locale_subset);
g_autofree char *subref_checksum = flatpak_remote_state_lookup_ref (state, refs[j], NULL, NULL);
if (subref_checksum)
add_related (self, related, extension, extension_collection_id, refs[j], subref_checksum,
no_autodownload, download_if, autodelete, locale_subset);
}
}
}

View File

@@ -691,7 +691,7 @@ FlatpakRemoteState * flatpak_dir_get_remote_state_optional (FlatpakDir *self,
GCancellable *cancellable,
GError **error);
GPtrArray * flatpak_dir_find_remote_related (FlatpakDir *dir,
const char *remote_name,
FlatpakRemoteState *state,
const char *ref,
GCancellable *cancellable,
GError **error);

View File

@@ -2264,13 +2264,18 @@ flatpak_installation_list_remote_related_refs_sync (FlatpakInstallation *self,
g_autoptr(FlatpakDir) dir = NULL;
g_autoptr(GPtrArray) related = NULL;
g_autoptr(GPtrArray) refs = g_ptr_array_new_with_free_func (g_object_unref);
g_autoptr(FlatpakRemoteState) state = NULL;
int i;
dir = flatpak_installation_get_dir (self, error);
if (dir == NULL)
return NULL;
related = flatpak_dir_find_remote_related (dir, ref, remote_name,
state = flatpak_dir_get_remote_state_optional (dir, remote_name, cancellable, error);
if (state == NULL)
return NULL;
related = flatpak_dir_find_remote_related (dir, state, ref,
cancellable, error);
if (related == NULL)
return NULL;