forked from Mirrors/flatpak-builder
Properly handle subpaths on update
parent
77f1d7660c
commit
cfef57e343
|
@ -181,7 +181,7 @@ flatpak_builtin_install (int argc, char **argv, GCancellable *cancellable, GErro
|
|||
if (!flatpak_dir_install (dir,
|
||||
opt_no_pull,
|
||||
opt_no_deploy,
|
||||
ref, repository, opt_subpaths,
|
||||
ref, repository, (const char **)opt_subpaths,
|
||||
NULL,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
|
|
|
@ -73,7 +73,6 @@ do_update (FlatpakDir * dir,
|
|||
GError **error)
|
||||
{
|
||||
g_autofree char *repository = NULL;
|
||||
g_auto(GStrv) subpaths = NULL;
|
||||
|
||||
repository = flatpak_dir_get_origin (dir, ref, cancellable, error);
|
||||
if (repository == NULL)
|
||||
|
@ -82,14 +81,10 @@ do_update (FlatpakDir * dir,
|
|||
if (flatpak_dir_get_remote_disabled (dir, repository))
|
||||
g_print ("Not updating %s due to disabled remote %s\n", ref, repository);
|
||||
|
||||
subpaths = flatpak_dir_get_subpaths (dir, ref, cancellable, error);
|
||||
if (subpaths == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (!flatpak_dir_update (dir,
|
||||
opt_no_pull,
|
||||
opt_no_deploy,
|
||||
ref, repository, opt_commit, opt_subpaths,
|
||||
ref, repository, opt_commit, (const char **)opt_subpaths,
|
||||
NULL,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
|
|
|
@ -1235,7 +1235,7 @@ gboolean
|
|||
flatpak_dir_pull (FlatpakDir *self,
|
||||
const char *repository,
|
||||
const char *ref,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
OstreeRepo *repo,
|
||||
OstreeRepoPullFlags flags,
|
||||
OstreeAsyncProgress *progress,
|
||||
|
@ -1384,7 +1384,7 @@ flatpak_dir_pull_untrusted_local (FlatpakDir *self,
|
|||
const char *src_path,
|
||||
const char *remote_name,
|
||||
const char *ref,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
OstreeAsyncProgress *progress,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
|
@ -2818,7 +2818,7 @@ gboolean
|
|||
flatpak_dir_deploy_install (FlatpakDir *self,
|
||||
const char *ref,
|
||||
const char *origin,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
|
@ -2892,6 +2892,7 @@ gboolean
|
|||
flatpak_dir_deploy_update (FlatpakDir *self,
|
||||
const char *ref,
|
||||
const char *checksum_or_latest,
|
||||
const char **opt_subpaths,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
|
@ -2918,7 +2919,7 @@ flatpak_dir_deploy_update (FlatpakDir *self,
|
|||
old_origin,
|
||||
ref,
|
||||
checksum_or_latest,
|
||||
old_subpaths,
|
||||
opt_subpaths ? opt_subpaths : old_subpaths,
|
||||
old_deploy_data,
|
||||
cancellable, &my_error))
|
||||
{
|
||||
|
@ -3027,7 +3028,7 @@ flatpak_dir_install (FlatpakDir *self,
|
|||
gboolean no_deploy,
|
||||
const char *ref,
|
||||
const char *remote_name,
|
||||
char **subpaths,
|
||||
const char **opt_subpaths,
|
||||
OstreeAsyncProgress *progress,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
|
@ -3036,7 +3037,8 @@ flatpak_dir_install (FlatpakDir *self,
|
|||
{
|
||||
g_autoptr(OstreeRepo) child_repo = NULL;
|
||||
g_auto(GLnxLockFile) child_repo_lock = GLNX_LOCK_FILE_INIT;
|
||||
char *empty_subpaths[] = {NULL};
|
||||
const char *empty_subpaths[] = {NULL};
|
||||
const char **subpaths;
|
||||
g_autofree char *child_repo_path = NULL;
|
||||
FlatpakSystemHelper *system_helper;
|
||||
FlatpakHelperDeployFlags helper_flags = 0;
|
||||
|
@ -3045,6 +3047,11 @@ flatpak_dir_install (FlatpakDir *self,
|
|||
system_helper = flatpak_dir_get_system_helper (self);
|
||||
g_assert (system_helper != NULL);
|
||||
|
||||
if (opt_subpaths)
|
||||
subpaths = opt_subpaths;
|
||||
else
|
||||
subpaths = empty_subpaths;
|
||||
|
||||
if (!ostree_repo_remote_get_url (self->repo,
|
||||
remote_name,
|
||||
&url,
|
||||
|
@ -3086,7 +3093,7 @@ flatpak_dir_install (FlatpakDir *self,
|
|||
if (!flatpak_system_helper_call_deploy_sync (system_helper,
|
||||
child_repo_path ? child_repo_path : "",
|
||||
helper_flags, ref, remote_name,
|
||||
(const char * const *) (subpaths ? subpaths : empty_subpaths),
|
||||
(const char * const *) subpaths,
|
||||
cancellable,
|
||||
error))
|
||||
return FALSE;
|
||||
|
@ -3099,14 +3106,14 @@ flatpak_dir_install (FlatpakDir *self,
|
|||
|
||||
if (!no_pull)
|
||||
{
|
||||
if (!flatpak_dir_pull (self, remote_name, ref, subpaths, NULL, OSTREE_REPO_PULL_FLAGS_NONE, progress,
|
||||
if (!flatpak_dir_pull (self, remote_name, ref, opt_subpaths, NULL, OSTREE_REPO_PULL_FLAGS_NONE, progress,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!no_deploy)
|
||||
{
|
||||
if (!flatpak_dir_deploy_install (self, ref, remote_name, subpaths,
|
||||
if (!flatpak_dir_deploy_install (self, ref, remote_name, opt_subpaths,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -3237,16 +3244,37 @@ flatpak_dir_update (FlatpakDir *self,
|
|||
const char *ref,
|
||||
const char *remote_name,
|
||||
const char *checksum_or_latest,
|
||||
char **subpaths,
|
||||
const char **opt_subpaths,
|
||||
OstreeAsyncProgress *progress,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
g_autoptr(GVariant) deploy_data = NULL;
|
||||
g_autofree const char **old_subpaths = NULL;
|
||||
const char *empty_subpaths[] = {NULL};
|
||||
const char **subpaths;
|
||||
|
||||
deploy_data = flatpak_dir_get_deploy_data (self, ref,
|
||||
cancellable, NULL);
|
||||
|
||||
if (opt_subpaths)
|
||||
{
|
||||
subpaths = opt_subpaths;
|
||||
}
|
||||
else if (deploy_data != NULL)
|
||||
{
|
||||
old_subpaths = flatpak_deploy_data_get_subpaths (deploy_data);
|
||||
subpaths = old_subpaths;
|
||||
}
|
||||
else
|
||||
{
|
||||
subpaths = empty_subpaths;
|
||||
}
|
||||
|
||||
if (flatpak_dir_use_system_helper (self))
|
||||
{
|
||||
g_autoptr(OstreeRepo) child_repo = NULL;
|
||||
g_auto(GLnxLockFile) child_repo_lock = GLNX_LOCK_FILE_INIT;
|
||||
char *empty_subpaths[] = {NULL};
|
||||
g_autofree char *latest_checksum = NULL;
|
||||
g_autofree char *active_checksum = NULL;
|
||||
FlatpakSystemHelper *system_helper;
|
||||
|
@ -3310,7 +3338,7 @@ flatpak_dir_update (FlatpakDir *self,
|
|||
if (!flatpak_system_helper_call_deploy_sync (system_helper,
|
||||
child_repo_path ? child_repo_path : "",
|
||||
helper_flags, ref, remote_name,
|
||||
(const char * const *) empty_subpaths,
|
||||
subpaths,
|
||||
cancellable,
|
||||
error))
|
||||
return FALSE;
|
||||
|
@ -3322,7 +3350,6 @@ flatpak_dir_update (FlatpakDir *self,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
if (!no_pull)
|
||||
{
|
||||
if (!flatpak_dir_pull (self, remote_name, ref, subpaths,
|
||||
|
@ -3333,7 +3360,7 @@ flatpak_dir_update (FlatpakDir *self,
|
|||
|
||||
if (!no_deploy)
|
||||
{
|
||||
if (!flatpak_dir_deploy_update (self, ref, checksum_or_latest,
|
||||
if (!flatpak_dir_deploy_update (self, ref, checksum_or_latest, subpaths,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -3820,7 +3847,6 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
flatpak_dir_prune (FlatpakDir *self,
|
||||
GCancellable *cancellable,
|
||||
|
|
|
@ -208,7 +208,7 @@ gboolean flatpak_dir_update_appstream (FlatpakDir *self,
|
|||
gboolean flatpak_dir_pull (FlatpakDir *self,
|
||||
const char *repository,
|
||||
const char *ref,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
OstreeRepo *repo,
|
||||
OstreeRepoPullFlags flags,
|
||||
OstreeAsyncProgress *progress,
|
||||
|
@ -218,7 +218,7 @@ gboolean flatpak_dir_pull_untrusted_local (FlatpakDir *self,
|
|||
const char *src_path,
|
||||
const char *remote_name,
|
||||
const char *ref,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
OstreeAsyncProgress *progress,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
@ -277,12 +277,13 @@ gboolean flatpak_dir_deploy (FlatpakDir *self,
|
|||
gboolean flatpak_dir_deploy_update (FlatpakDir *self,
|
||||
const char *ref,
|
||||
const char *checksum,
|
||||
const char **opt_subpaths,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
gboolean flatpak_dir_deploy_install (FlatpakDir *self,
|
||||
const char *ref,
|
||||
const char *origin,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
gboolean flatpak_dir_install (FlatpakDir *self,
|
||||
|
@ -290,7 +291,7 @@ gboolean flatpak_dir_install (FlatpakDir *self,
|
|||
gboolean no_deploy,
|
||||
const char *ref,
|
||||
const char *remote_name,
|
||||
char **subpaths,
|
||||
const char **subpaths,
|
||||
OstreeAsyncProgress *progress,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
@ -306,7 +307,7 @@ gboolean flatpak_dir_update (FlatpakDir *self,
|
|||
const char *ref,
|
||||
const char *remote_name,
|
||||
const char *checksum_or_latest,
|
||||
char **subpaths,
|
||||
const char **opt_subpaths,
|
||||
OstreeAsyncProgress *progress,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
|
|
@ -1119,7 +1119,6 @@ flatpak_installation_update (FlatpakInstallation *self,
|
|||
g_autoptr(OstreeAsyncProgress) ostree_progress = NULL;
|
||||
g_autofree char *remote_name = NULL;
|
||||
FlatpakInstalledRef *result = NULL;
|
||||
g_auto(GStrv) subpaths = NULL;
|
||||
|
||||
ref = flatpak_compose_ref (kind == FLATPAK_REF_KIND_APP, name, branch, arch, error);
|
||||
if (ref == NULL)
|
||||
|
@ -1138,10 +1137,6 @@ flatpak_installation_update (FlatpakInstallation *self,
|
|||
if (remote_name == NULL)
|
||||
return NULL;
|
||||
|
||||
subpaths = flatpak_dir_get_subpaths (dir, ref, cancellable, error);
|
||||
if (subpaths == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* Pull, prune, etc are not threadsafe, so we work on a copy */
|
||||
dir_clone = flatpak_dir_clone (dir);
|
||||
|
||||
|
@ -1159,7 +1154,7 @@ flatpak_installation_update (FlatpakInstallation *self,
|
|||
if (!flatpak_dir_update (dir_clone,
|
||||
(flags & FLATPAK_UPDATE_FLAGS_NO_PULL) != 0,
|
||||
(flags & FLATPAK_UPDATE_FLAGS_NO_DEPLOY) != 0,
|
||||
ref, remote_name, NULL, subpaths,
|
||||
ref, remote_name, NULL, NULL,
|
||||
ostree_progress, cancellable, error))
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -208,7 +208,7 @@ handle_deploy (FlatpakSystemHelper *object,
|
|||
if (!flatpak_dir_pull_untrusted_local (system, arg_repo_path,
|
||||
arg_origin,
|
||||
arg_ref,
|
||||
(char **) arg_subpaths,
|
||||
(const char **) arg_subpaths,
|
||||
NULL,
|
||||
NULL, &error))
|
||||
{
|
||||
|
@ -242,7 +242,7 @@ handle_deploy (FlatpakSystemHelper *object,
|
|||
main_context = g_main_context_new ();
|
||||
g_main_context_push_thread_default (main_context);
|
||||
|
||||
if (!flatpak_dir_pull (system, arg_origin, arg_ref, (char **)arg_subpaths, NULL,
|
||||
if (!flatpak_dir_pull (system, arg_origin, arg_ref, (const char **)arg_subpaths, NULL,
|
||||
OSTREE_REPO_PULL_FLAGS_UNTRUSTED, NULL,
|
||||
NULL, &error))
|
||||
{
|
||||
|
@ -258,9 +258,8 @@ handle_deploy (FlatpakSystemHelper *object,
|
|||
{
|
||||
if (is_update)
|
||||
{
|
||||
/* TODO: This doesn't support a custom subpath */
|
||||
if (!flatpak_dir_deploy_update (system, arg_ref,
|
||||
NULL, NULL, &error))
|
||||
NULL, (const char **)arg_subpaths, NULL, &error))
|
||||
{
|
||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED,
|
||||
"Error deploying: %s", error->message);
|
||||
|
@ -270,7 +269,7 @@ handle_deploy (FlatpakSystemHelper *object,
|
|||
else
|
||||
{
|
||||
if (!flatpak_dir_deploy_install (system, arg_ref, arg_origin,
|
||||
(char **) arg_subpaths,
|
||||
(const char **) arg_subpaths,
|
||||
NULL, &error))
|
||||
{
|
||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED,
|
||||
|
|
Loading…
Reference in New Issue