lib/deploy: Add deploy/stage APIs with options
And make the `override_kernel_argv` one of those options. This is mostly a mechanical move here, no functional change otherwise. Prep for adding a new option.
This commit is contained in:
parent
f7500bb703
commit
40fea4c443
|
|
@ -547,7 +547,9 @@ ostree_sysroot_write_deployments
|
||||||
ostree_sysroot_write_deployments_with_options
|
ostree_sysroot_write_deployments_with_options
|
||||||
ostree_sysroot_write_origin_file
|
ostree_sysroot_write_origin_file
|
||||||
ostree_sysroot_stage_tree
|
ostree_sysroot_stage_tree
|
||||||
|
ostree_sysroot_stage_tree_with_options
|
||||||
ostree_sysroot_deploy_tree
|
ostree_sysroot_deploy_tree
|
||||||
|
ostree_sysroot_deploy_tree_with_options
|
||||||
ostree_sysroot_get_merge_deployment
|
ostree_sysroot_get_merge_deployment
|
||||||
ostree_sysroot_query_deployments_for
|
ostree_sysroot_query_deployments_for
|
||||||
ostree_sysroot_origin_new_from_refspec
|
ostree_sysroot_origin_new_from_refspec
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ global:
|
||||||
ostree_repo_static_delta_verify_signature;
|
ostree_repo_static_delta_verify_signature;
|
||||||
ostree_bootconfig_parser_get_overlay_initrds;
|
ostree_bootconfig_parser_get_overlay_initrds;
|
||||||
ostree_bootconfig_parser_set_overlay_initrds;
|
ostree_bootconfig_parser_set_overlay_initrds;
|
||||||
|
ostree_sysroot_deploy_tree_with_options;
|
||||||
|
ostree_sysroot_stage_tree_with_options;
|
||||||
} LIBOSTREE_2020.4;
|
} LIBOSTREE_2020.4;
|
||||||
|
|
||||||
/* Stub section for the stable release *after* this development one; don't
|
/* Stub section for the stable release *after* this development one; don't
|
||||||
|
|
|
||||||
|
|
@ -2688,7 +2688,7 @@ sysroot_initialize_deployment (OstreeSysroot *self,
|
||||||
const char *osname,
|
const char *osname,
|
||||||
const char *revision,
|
const char *revision,
|
||||||
GKeyFile *origin,
|
GKeyFile *origin,
|
||||||
char **override_kernel_argv,
|
OstreeSysrootDeployTreeOpts *opts,
|
||||||
OstreeDeployment **out_new_deployment,
|
OstreeDeployment **out_new_deployment,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
|
|
@ -2721,7 +2721,7 @@ sysroot_initialize_deployment (OstreeSysroot *self,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
_ostree_deployment_set_bootcsum (new_deployment, kernel_layout->bootcsum);
|
_ostree_deployment_set_bootcsum (new_deployment, kernel_layout->bootcsum);
|
||||||
_ostree_deployment_set_bootconfig_from_kargs (new_deployment, override_kernel_argv);
|
_ostree_deployment_set_bootconfig_from_kargs (new_deployment, opts ? opts->override_kernel_argv : NULL);
|
||||||
|
|
||||||
if (!prepare_deployment_etc (self, repo, new_deployment, deployment_dfd,
|
if (!prepare_deployment_etc (self, repo, new_deployment, deployment_dfd,
|
||||||
cancellable, error))
|
cancellable, error))
|
||||||
|
|
@ -2852,6 +2852,53 @@ sysroot_finalize_deployment (OstreeSysroot *self,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_sysroot_deploy_tree_with_options:
|
||||||
|
* @self: Sysroot
|
||||||
|
* @osname: (allow-none): osname to use for merge deployment
|
||||||
|
* @revision: Checksum to add
|
||||||
|
* @origin: (allow-none): Origin to use for upgrades
|
||||||
|
* @provided_merge_deployment: (allow-none): Use this deployment for merge path
|
||||||
|
* @opts: (allow-none): Options
|
||||||
|
* @out_new_deployment: (out): The new deployment path
|
||||||
|
* @cancellable: Cancellable
|
||||||
|
* @error: Error
|
||||||
|
*
|
||||||
|
* Check out deployment tree with revision @revision, performing a 3
|
||||||
|
* way merge with @provided_merge_deployment for configuration.
|
||||||
|
*
|
||||||
|
* When booted into the sysroot, you should use the
|
||||||
|
* ostree_sysroot_stage_tree() API instead.
|
||||||
|
*
|
||||||
|
* Since: 2020.7
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_sysroot_deploy_tree_with_options (OstreeSysroot *self,
|
||||||
|
const char *osname,
|
||||||
|
const char *revision,
|
||||||
|
GKeyFile *origin,
|
||||||
|
OstreeDeployment *provided_merge_deployment,
|
||||||
|
OstreeSysrootDeployTreeOpts *opts,
|
||||||
|
OstreeDeployment **out_new_deployment,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
if (!_ostree_sysroot_ensure_writable (self, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
g_autoptr(OstreeDeployment) deployment = NULL;
|
||||||
|
if (!sysroot_initialize_deployment (self, osname, revision, origin, opts,
|
||||||
|
&deployment, cancellable, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!sysroot_finalize_deployment (self, deployment, provided_merge_deployment,
|
||||||
|
cancellable, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
*out_new_deployment = g_steal_pointer (&deployment);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ostree_sysroot_deploy_tree:
|
* ostree_sysroot_deploy_tree:
|
||||||
* @self: Sysroot
|
* @self: Sysroot
|
||||||
|
|
@ -2864,11 +2911,9 @@ sysroot_finalize_deployment (OstreeSysroot *self,
|
||||||
* @cancellable: Cancellable
|
* @cancellable: Cancellable
|
||||||
* @error: Error
|
* @error: Error
|
||||||
*
|
*
|
||||||
* Check out deployment tree with revision @revision, performing a 3
|
* Older version of ostree_sysroot_stage_tree_with_options().
|
||||||
* way merge with @provided_merge_deployment for configuration.
|
|
||||||
*
|
*
|
||||||
* When booted into the sysroot, you should use the
|
* Since: 2018.5
|
||||||
* ostree_sysroot_stage_tree() API instead.
|
|
||||||
*/
|
*/
|
||||||
gboolean
|
gboolean
|
||||||
ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
||||||
|
|
@ -2881,20 +2926,10 @@ ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
if (!_ostree_sysroot_ensure_writable (self, error))
|
OstreeSysrootDeployTreeOpts opts = { .override_kernel_argv = override_kernel_argv };
|
||||||
return FALSE;
|
return ostree_sysroot_deploy_tree_with_options (self, osname, revision, origin,
|
||||||
|
provided_merge_deployment, &opts,
|
||||||
g_autoptr(OstreeDeployment) deployment = NULL;
|
out_new_deployment, cancellable, error);
|
||||||
if (!sysroot_initialize_deployment (self, osname, revision, origin, override_kernel_argv,
|
|
||||||
&deployment, cancellable, error))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (!sysroot_finalize_deployment (self, deployment, provided_merge_deployment,
|
|
||||||
cancellable, error))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
*out_new_deployment = g_steal_pointer (&deployment);
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Serialize information about a deployment to a variant, used by the staging
|
/* Serialize information about a deployment to a variant, used by the staging
|
||||||
|
|
@ -2968,8 +3003,7 @@ _ostree_sysroot_deserialize_deployment_from_variant (GVariant *v,
|
||||||
* @cancellable: Cancellable
|
* @cancellable: Cancellable
|
||||||
* @error: Error
|
* @error: Error
|
||||||
*
|
*
|
||||||
* Like ostree_sysroot_deploy_tree(), but "finalization" only occurs at OS
|
* Older version of ostree_sysroot_stage_tree_with_options().
|
||||||
* shutdown time.
|
|
||||||
*
|
*
|
||||||
* Since: 2018.5
|
* Since: 2018.5
|
||||||
*/
|
*/
|
||||||
|
|
@ -2983,6 +3017,41 @@ ostree_sysroot_stage_tree (OstreeSysroot *self,
|
||||||
OstreeDeployment **out_new_deployment,
|
OstreeDeployment **out_new_deployment,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
GError **error)
|
||||||
|
{
|
||||||
|
OstreeSysrootDeployTreeOpts opts = { .override_kernel_argv = override_kernel_argv };
|
||||||
|
return ostree_sysroot_stage_tree_with_options (self, osname, revision, origin,
|
||||||
|
merge_deployment, &opts,
|
||||||
|
out_new_deployment, cancellable, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_sysroot_stage_tree_with_options:
|
||||||
|
* @self: Sysroot
|
||||||
|
* @osname: (allow-none): osname to use for merge deployment
|
||||||
|
* @revision: Checksum to add
|
||||||
|
* @origin: (allow-none): Origin to use for upgrades
|
||||||
|
* @merge_deployment: (allow-none): Use this deployment for merge path
|
||||||
|
* @opts: Options
|
||||||
|
* @out_new_deployment: (out): The new deployment path
|
||||||
|
* @cancellable: Cancellable
|
||||||
|
* @error: Error
|
||||||
|
*
|
||||||
|
* Like ostree_sysroot_deploy_tree(), but "finalization" only occurs at OS
|
||||||
|
* shutdown time.
|
||||||
|
*
|
||||||
|
* Since: 2020.7
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_sysroot_stage_tree_with_options (OstreeSysroot *self,
|
||||||
|
const char *osname,
|
||||||
|
const char *revision,
|
||||||
|
GKeyFile *origin,
|
||||||
|
OstreeDeployment *merge_deployment,
|
||||||
|
OstreeSysrootDeployTreeOpts *opts,
|
||||||
|
OstreeDeployment **out_new_deployment,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
{
|
{
|
||||||
if (!_ostree_sysroot_ensure_writable (self, error))
|
if (!_ostree_sysroot_ensure_writable (self, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
@ -3014,8 +3083,8 @@ ostree_sysroot_stage_tree (OstreeSysroot *self,
|
||||||
} /* OSTREE_SYSROOT_DEBUG_TEST_STAGED_PATH */
|
} /* OSTREE_SYSROOT_DEBUG_TEST_STAGED_PATH */
|
||||||
|
|
||||||
g_autoptr(OstreeDeployment) deployment = NULL;
|
g_autoptr(OstreeDeployment) deployment = NULL;
|
||||||
if (!sysroot_initialize_deployment (self, osname, revision, origin, override_kernel_argv,
|
if (!sysroot_initialize_deployment (self, osname, revision, origin, opts, &deployment,
|
||||||
&deployment, cancellable, error))
|
cancellable, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* Write out the origin file using the sepolicy from the non-merged root for
|
/* Write out the origin file using the sepolicy from the non-merged root for
|
||||||
|
|
@ -3050,9 +3119,9 @@ ostree_sysroot_stage_tree (OstreeSysroot *self,
|
||||||
g_variant_builder_add (builder, "{sv}", "merge-deployment",
|
g_variant_builder_add (builder, "{sv}", "merge-deployment",
|
||||||
serialize_deployment_to_variant (merge_deployment));
|
serialize_deployment_to_variant (merge_deployment));
|
||||||
|
|
||||||
if (override_kernel_argv)
|
if (opts && opts->override_kernel_argv)
|
||||||
g_variant_builder_add (builder, "{sv}", "kargs",
|
g_variant_builder_add (builder, "{sv}", "kargs",
|
||||||
g_variant_new_strv ((const char *const*)override_kernel_argv, -1));
|
g_variant_new_strv ((const char *const*)opts->override_kernel_argv, -1));
|
||||||
|
|
||||||
const char *parent = dirname (strdupa (_OSTREE_SYSROOT_RUNSTATE_STAGED));
|
const char *parent = dirname (strdupa (_OSTREE_SYSROOT_RUNSTATE_STAGED));
|
||||||
if (!glnx_shutil_mkdir_p_at (AT_FDCWD, parent, 0755, cancellable, error))
|
if (!glnx_shutil_mkdir_p_at (AT_FDCWD, parent, 0755, cancellable, error))
|
||||||
|
|
|
||||||
|
|
@ -186,6 +186,13 @@ gboolean ostree_sysroot_write_deployments_with_options (OstreeSysroot *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
gboolean unused_bools[8];
|
||||||
|
int unused_ints[8];
|
||||||
|
char **override_kernel_argv;
|
||||||
|
gpointer unused_ptrs[7];
|
||||||
|
} OstreeSysrootDeployTreeOpts;
|
||||||
|
|
||||||
_OSTREE_PUBLIC
|
_OSTREE_PUBLIC
|
||||||
gboolean ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
gboolean ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
||||||
const char *osname,
|
const char *osname,
|
||||||
|
|
@ -197,6 +204,17 @@ gboolean ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
_OSTREE_PUBLIC
|
||||||
|
gboolean ostree_sysroot_deploy_tree_with_options (OstreeSysroot *self,
|
||||||
|
const char *osname,
|
||||||
|
const char *revision,
|
||||||
|
GKeyFile *origin,
|
||||||
|
OstreeDeployment *provided_merge_deployment,
|
||||||
|
OstreeSysrootDeployTreeOpts *opts,
|
||||||
|
OstreeDeployment **out_new_deployment,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
_OSTREE_PUBLIC
|
_OSTREE_PUBLIC
|
||||||
gboolean ostree_sysroot_stage_tree (OstreeSysroot *self,
|
gboolean ostree_sysroot_stage_tree (OstreeSysroot *self,
|
||||||
const char *osname,
|
const char *osname,
|
||||||
|
|
@ -208,6 +226,18 @@ gboolean ostree_sysroot_stage_tree (OstreeSysroot *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
_OSTREE_PUBLIC
|
||||||
|
gboolean ostree_sysroot_stage_tree_with_options (OstreeSysroot *self,
|
||||||
|
const char *osname,
|
||||||
|
const char *revision,
|
||||||
|
GKeyFile *origin,
|
||||||
|
OstreeDeployment *merge_deployment,
|
||||||
|
OstreeSysrootDeployTreeOpts *opts,
|
||||||
|
OstreeDeployment **out_new_deployment,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
|
|
||||||
_OSTREE_PUBLIC
|
_OSTREE_PUBLIC
|
||||||
gboolean ostree_sysroot_deployment_set_mutable (OstreeSysroot *self,
|
gboolean ostree_sysroot_deployment_set_mutable (OstreeSysroot *self,
|
||||||
OstreeDeployment *deployment,
|
OstreeDeployment *deployment,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue