libostree: Add API to write metadata as stream
And use it in pull-local. The goal here is to kill users of ostree_repo_load_variant(), and move a bit more towards hiding the variants.
This commit is contained in:
parent
b4082d5642
commit
9b31b526cc
|
|
@ -76,6 +76,7 @@ ostree_repo_write_metadata
|
||||||
ostree_repo_write_metadata_async
|
ostree_repo_write_metadata_async
|
||||||
ostree_repo_write_metadata_finish
|
ostree_repo_write_metadata_finish
|
||||||
ostree_repo_write_metadata_trusted
|
ostree_repo_write_metadata_trusted
|
||||||
|
ostree_repo_write_metadata_stream_trusted
|
||||||
ostree_repo_write_content
|
ostree_repo_write_content
|
||||||
ostree_repo_write_content_trusted
|
ostree_repo_write_content_trusted
|
||||||
ostree_repo_write_content_async
|
ostree_repo_write_content_async
|
||||||
|
|
|
||||||
|
|
@ -823,6 +823,33 @@ ostree_repo_write_metadata (OstreeRepo *self,
|
||||||
cancellable, error);
|
cancellable, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_repo_write_metadata_stream_trusted:
|
||||||
|
* @self: Repo
|
||||||
|
* @objtype: Object type
|
||||||
|
* @checksum: Store object with this ASCII SHA256 checksum
|
||||||
|
* @object_input: Metadata object stream
|
||||||
|
* @length: Length, may be 0 for unknown
|
||||||
|
* @cancellable: Cancellable
|
||||||
|
* @error: Error
|
||||||
|
*
|
||||||
|
* Store the metadata object @variant; the provided @checksum is
|
||||||
|
* trusted.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_repo_write_metadata_stream_trusted (OstreeRepo *self,
|
||||||
|
OstreeObjectType objtype,
|
||||||
|
const char *checksum,
|
||||||
|
GInputStream *object_input,
|
||||||
|
guint64 length,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
/* Ignore provided length for now */
|
||||||
|
return write_object (self, objtype, checksum, object_input, 0, NULL,
|
||||||
|
cancellable, error);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ostree_repo_write_metadata_trusted:
|
* ostree_repo_write_metadata_trusted:
|
||||||
* @self: Repo
|
* @self: Repo
|
||||||
|
|
|
||||||
|
|
@ -169,6 +169,14 @@ gboolean ostree_repo_write_metadata_trusted (OstreeRepo *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gboolean ostree_repo_write_metadata_stream_trusted (OstreeRepo *self,
|
||||||
|
OstreeObjectType objtype,
|
||||||
|
const char *checksum,
|
||||||
|
GInputStream *object_input,
|
||||||
|
guint64 length,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
gboolean ostree_repo_write_content_trusted (OstreeRepo *self,
|
gboolean ostree_repo_write_content_trusted (OstreeRepo *self,
|
||||||
const char *checksum,
|
const char *checksum,
|
||||||
GInputStream *object_input,
|
GInputStream *object_input,
|
||||||
|
|
|
||||||
|
|
@ -61,32 +61,26 @@ import_one_object (OtLocalCloneData *data,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
|
guint64 length;
|
||||||
|
gs_unref_object GInputStream *object = NULL;
|
||||||
|
|
||||||
|
if (!ostree_repo_load_object_stream (data->src_repo, objtype, checksum,
|
||||||
|
&object, &length,
|
||||||
|
cancellable, error))
|
||||||
|
goto out;
|
||||||
|
|
||||||
if (objtype == OSTREE_OBJECT_TYPE_FILE)
|
if (objtype == OSTREE_OBJECT_TYPE_FILE)
|
||||||
{
|
{
|
||||||
guint64 length;
|
|
||||||
gs_unref_object GInputStream *file_object = NULL;
|
|
||||||
|
|
||||||
if (!ostree_repo_load_object_stream (data->src_repo, objtype, checksum,
|
|
||||||
&file_object, &length,
|
|
||||||
cancellable, error))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (!ostree_repo_write_content_trusted (data->dest_repo, checksum,
|
if (!ostree_repo_write_content_trusted (data->dest_repo, checksum,
|
||||||
file_object, length,
|
object, length,
|
||||||
cancellable, error))
|
cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gs_unref_variant GVariant *metadata = NULL;
|
if (!ostree_repo_write_metadata_stream_trusted (data->dest_repo, objtype,
|
||||||
|
checksum, object, length,
|
||||||
if (!ostree_repo_load_variant (data->src_repo, objtype, checksum, &metadata,
|
cancellable, error))
|
||||||
error))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (!ostree_repo_write_metadata_trusted (data->dest_repo, objtype, checksum, metadata,
|
|
||||||
cancellable, error))
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue