static gboolean
sysroot_finalize_deployment (OstreeSysroot *self,
OstreeDeployment *deployment,
- char **override_kernel_argv,
OstreeDeployment *merge_deployment,
GCancellable *cancellable,
GError **error)
if (!glnx_opendirat (self->sysroot_fd, deployment_path, TRUE, &deployment_dfd, error))
return FALSE;
- /* Only use the merge if we didn't get an override */
- if (!override_kernel_argv && merge_deployment)
+ OstreeBootconfigParser *bootconfig = ostree_deployment_get_bootconfig (deployment);
+
+ /* If the kargs weren't set yet, then just pick it up from the merge deployment. In the
+ * deploy path, overrides are set as part of sysroot_initialize_deployment(). In the
+ * finalize-staged path, they're set by OstreeSysroot when reading the staged GVariant. */
+ if (merge_deployment && ostree_bootconfig_parser_get (bootconfig, "options") == NULL)
{
- /* Override the bootloader arguments */
OstreeBootconfigParser *merge_bootconfig = ostree_deployment_get_bootconfig (merge_deployment);
if (merge_bootconfig)
{
- const char *opts = ostree_bootconfig_parser_get (merge_bootconfig, "options");
- ostree_bootconfig_parser_set (ostree_deployment_get_bootconfig (deployment), "options", opts);
+ const char *kargs = ostree_bootconfig_parser_get (merge_bootconfig, "options");
+ ostree_bootconfig_parser_set (bootconfig, "options", kargs);
}
}
&deployment, cancellable, error))
return FALSE;
- if (!sysroot_finalize_deployment (self, deployment, override_kernel_argv,
- provided_merge_deployment,
+ if (!sysroot_finalize_deployment (self, deployment, provided_merge_deployment,
cancellable, error))
return FALSE;
ostree_deployment_get_csum (merge_deployment_stub),
ostree_deployment_get_deployserial (merge_deployment_stub));
}
- g_autofree char **kargs = NULL;
- g_variant_lookup (self->staged_deployment_data, "kargs", "^a&s", &kargs);
/* Unlink the staged state now; if we're interrupted in the middle,
* we don't want e.g. deal with the partially written /etc merge.
if (!glnx_unlinkat (AT_FDCWD, _OSTREE_SYSROOT_RUNSTATE_STAGED, 0, error))
return FALSE;
- if (!sysroot_finalize_deployment (self, self->staged_deployment, kargs, merge_deployment,
+ if (!sysroot_finalize_deployment (self, self->staged_deployment, merge_deployment,
cancellable, error))
return FALSE;