ostree_sysroot_get_subbootversion
ostree_sysroot_get_deployments
ostree_sysroot_get_booted_deployment
+ostree_sysroot_require_booted_deployment
ostree_sysroot_get_deployment_directory
ostree_sysroot_get_deployment_dirpath
ostree_sysroot_get_deployment_origin_path
LIBOSTREE_2021.1 {
global:
ostree_commit_metadata_for_bootable;
+ ostree_sysroot_require_booted_deployment;
} LIBOSTREE_2020.8;
/* Stub section for the stable release *after* this development one; don't
if (!_ostree_sysroot_ensure_writable (self, error))
return FALSE;
- OstreeDeployment *booted_deployment = ostree_sysroot_get_booted_deployment (self);
+ OstreeDeployment *booted_deployment = ostree_sysroot_require_booted_deployment (self, error);
if (booted_deployment == NULL)
- return glnx_throw (error, "Cannot stage a deployment when not currently booted into an OSTree system");
+ return glnx_prefix_error (error, "Cannot stage deployment");
/* This is used by the testsuite to exercise the path unit, until it becomes the default
* (which is pending on the preset making it everywhere). */
return self->booted_deployment;
}
+
+/**
+ * ostree_sysroot_require_booted_deployment:
+ * @self: Sysroot
+ *
+ * Find the booted deployment, or return an error if not booted via OSTree.
+ *
+ * Returns: (transfer none) (not nullable): The currently booted deployment, or an error
+ * Since: 2021.1
+ */
+OstreeDeployment *
+ostree_sysroot_require_booted_deployment (OstreeSysroot *self, GError **error)
+{
+ g_return_val_if_fail (self->loadstate == OSTREE_SYSROOT_LOAD_STATE_LOADED, NULL);
+
+ if (!self->booted_deployment)
+ return glnx_null_throw (error, "Not currently booted into an OSTree system");
+ return self->booted_deployment;
+}
+
+
/**
* ostree_sysroot_get_staged_deployment:
* @self: Sysroot
_OSTREE_PUBLIC
OstreeDeployment *ostree_sysroot_get_booted_deployment (OstreeSysroot *self);
_OSTREE_PUBLIC
+OstreeDeployment *
+ostree_sysroot_require_booted_deployment (OstreeSysroot *self, GError **error);
+_OSTREE_PUBLIC
OstreeDeployment *ostree_sysroot_get_staged_deployment (OstreeSysroot *self);
_OSTREE_PUBLIC
if (opt_index == -1)
{
- target_deployment = ostree_sysroot_get_booted_deployment (sysroot);
+ target_deployment = ostree_sysroot_require_booted_deployment (sysroot, error);
if (target_deployment == NULL)
- {
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Not currently booted into an OSTree system");
- goto out;
- }
+ goto out;
/* To match the below */
target_deployment = g_object_ref (target_deployment);
}
goto out;
}
- booted_deployment = ostree_sysroot_get_booted_deployment (sysroot);
+ booted_deployment = ostree_sysroot_require_booted_deployment (sysroot, error);
if (!booted_deployment)
- {
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Not currently booted into an OSTree system");
- goto out;
- }
+ goto out;
if (opt_hotfix && opt_transient)
{
if ${CMD_PREFIX} ostree admin deploy --stage --os=testos testos:testos/buildmaster/x86_64-runtime 2>err.txt; then
fatal "staged when not booted"
fi
-assert_file_has_content_literal err.txt "Cannot stage a deployment when not currently booted into an OSTree system"
+assert_file_has_content_literal err.txt "Cannot stage deployment: Not currently booted into an OSTree system"
echo "ok staging does not work when not booted"
orig_mtime=$(stat -c '%.Y' sysroot/ostree/deploy)