mirror of
https://github.com/ostreedev/ostree.git
synced 2025-02-20 01:59:07 +03:00
core: Fix build with libarchive disabled
This commit is contained in:
parent
dab4611263
commit
4bbc99fb1d
@ -1071,7 +1071,6 @@ ostree_repo_abort_transaction (OstreeRepo *self,
|
||||
}
|
||||
|
||||
ret = TRUE;
|
||||
out:
|
||||
g_hash_table_remove_all (priv->pending_transaction_tmpfiles);
|
||||
g_clear_object (&f);
|
||||
return ret;
|
||||
@ -1553,6 +1552,76 @@ ostree_repo_stage_directory_to_mtree (OstreeRepo *self,
|
||||
return ret;
|
||||
}
|
||||
|
||||
gboolean
|
||||
ostree_repo_stage_mtree (OstreeRepo *self,
|
||||
OstreeMutableTree *mtree,
|
||||
char **out_contents_checksum,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
gboolean ret = FALSE;
|
||||
GChecksum *ret_contents_checksum_obj = NULL;
|
||||
char *ret_contents_checksum = NULL;
|
||||
GHashTable *dir_metadata_checksums = NULL;
|
||||
GHashTable *dir_contents_checksums = NULL;
|
||||
GVariant *serialized_tree = NULL;
|
||||
GHashTableIter hash_iter;
|
||||
gpointer key, value;
|
||||
const char *existing_checksum;
|
||||
|
||||
existing_checksum = ostree_mutable_tree_get_contents_checksum (mtree);
|
||||
if (existing_checksum)
|
||||
{
|
||||
ret_contents_checksum = g_strdup (existing_checksum);
|
||||
}
|
||||
else
|
||||
{
|
||||
dir_contents_checksums = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
(GDestroyNotify)g_free, (GDestroyNotify)g_free);
|
||||
dir_metadata_checksums = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
(GDestroyNotify)g_free, (GDestroyNotify)g_free);
|
||||
|
||||
g_hash_table_iter_init (&hash_iter, ostree_mutable_tree_get_subdirs (mtree));
|
||||
while (g_hash_table_iter_next (&hash_iter, &key, &value))
|
||||
{
|
||||
const char *name = key;
|
||||
OstreeMutableTree *child_dir = value;
|
||||
char *child_dir_contents_checksum;
|
||||
|
||||
if (!ostree_repo_stage_mtree (self, child_dir, &child_dir_contents_checksum,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
|
||||
g_hash_table_replace (dir_contents_checksums, g_strdup (name),
|
||||
child_dir_contents_checksum); /* Transfer ownership */
|
||||
g_hash_table_replace (dir_metadata_checksums, g_strdup (name),
|
||||
g_strdup (ostree_mutable_tree_get_metadata_checksum (child_dir)));
|
||||
}
|
||||
|
||||
serialized_tree = create_tree_variant_from_hashes (ostree_mutable_tree_get_files (mtree),
|
||||
dir_contents_checksums,
|
||||
dir_metadata_checksums);
|
||||
|
||||
if (!stage_gvariant_object (self, OSTREE_OBJECT_TYPE_DIR_TREE,
|
||||
serialized_tree, &ret_contents_checksum_obj,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
ret_contents_checksum = g_strdup (g_checksum_get_string (ret_contents_checksum_obj));
|
||||
}
|
||||
|
||||
ret = TRUE;
|
||||
ot_transfer_out_value(out_contents_checksum, &ret_contents_checksum);
|
||||
out:
|
||||
if (dir_contents_checksums)
|
||||
g_hash_table_destroy (dir_contents_checksums);
|
||||
if (dir_metadata_checksums)
|
||||
g_hash_table_destroy (dir_metadata_checksums);
|
||||
g_free (ret_contents_checksum);
|
||||
ot_clear_checksum (&ret_contents_checksum_obj);
|
||||
ot_clear_gvariant (&serialized_tree);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBARCHIVE
|
||||
|
||||
static void
|
||||
@ -1634,76 +1703,6 @@ import_libarchive_entry_file (OstreeRepo *self,
|
||||
return ret;
|
||||
}
|
||||
|
||||
gboolean
|
||||
ostree_repo_stage_mtree (OstreeRepo *self,
|
||||
OstreeMutableTree *mtree,
|
||||
char **out_contents_checksum,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
gboolean ret = FALSE;
|
||||
GChecksum *ret_contents_checksum_obj = NULL;
|
||||
char *ret_contents_checksum = NULL;
|
||||
GHashTable *dir_metadata_checksums = NULL;
|
||||
GHashTable *dir_contents_checksums = NULL;
|
||||
GVariant *serialized_tree = NULL;
|
||||
GHashTableIter hash_iter;
|
||||
gpointer key, value;
|
||||
const char *existing_checksum;
|
||||
|
||||
existing_checksum = ostree_mutable_tree_get_contents_checksum (mtree);
|
||||
if (existing_checksum)
|
||||
{
|
||||
ret_contents_checksum = g_strdup (existing_checksum);
|
||||
}
|
||||
else
|
||||
{
|
||||
dir_contents_checksums = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
(GDestroyNotify)g_free, (GDestroyNotify)g_free);
|
||||
dir_metadata_checksums = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
(GDestroyNotify)g_free, (GDestroyNotify)g_free);
|
||||
|
||||
g_hash_table_iter_init (&hash_iter, ostree_mutable_tree_get_subdirs (mtree));
|
||||
while (g_hash_table_iter_next (&hash_iter, &key, &value))
|
||||
{
|
||||
const char *name = key;
|
||||
OstreeMutableTree *child_dir = value;
|
||||
char *child_dir_contents_checksum;
|
||||
|
||||
if (!ostree_repo_stage_mtree (self, child_dir, &child_dir_contents_checksum,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
|
||||
g_hash_table_replace (dir_contents_checksums, g_strdup (name),
|
||||
child_dir_contents_checksum); /* Transfer ownership */
|
||||
g_hash_table_replace (dir_metadata_checksums, g_strdup (name),
|
||||
g_strdup (ostree_mutable_tree_get_metadata_checksum (child_dir)));
|
||||
}
|
||||
|
||||
serialized_tree = create_tree_variant_from_hashes (ostree_mutable_tree_get_files (mtree),
|
||||
dir_contents_checksums,
|
||||
dir_metadata_checksums);
|
||||
|
||||
if (!stage_gvariant_object (self, OSTREE_OBJECT_TYPE_DIR_TREE,
|
||||
serialized_tree, &ret_contents_checksum_obj,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
ret_contents_checksum = g_strdup (g_checksum_get_string (ret_contents_checksum_obj));
|
||||
}
|
||||
|
||||
ret = TRUE;
|
||||
ot_transfer_out_value(out_contents_checksum, &ret_contents_checksum);
|
||||
out:
|
||||
if (dir_contents_checksums)
|
||||
g_hash_table_destroy (dir_contents_checksums);
|
||||
if (dir_metadata_checksums)
|
||||
g_hash_table_destroy (dir_metadata_checksums);
|
||||
g_free (ret_contents_checksum);
|
||||
ot_clear_checksum (&ret_contents_checksum_obj);
|
||||
ot_clear_gvariant (&serialized_tree);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
stage_libarchive_entry_to_mtree (OstreeRepo *self,
|
||||
OstreeMutableTree *root,
|
||||
@ -1852,6 +1851,7 @@ stage_libarchive_entry_to_mtree (OstreeRepo *self,
|
||||
g_ptr_array_unref (split_path);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
gboolean
|
||||
ostree_repo_stage_archive_to_mtree (OstreeRepo *self,
|
||||
@ -1906,7 +1906,6 @@ ostree_repo_stage_archive_to_mtree (OstreeRepo *self,
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
OstreeRepoCommitModifier *
|
||||
ostree_repo_commit_modifier_new (void)
|
||||
|
Loading…
x
Reference in New Issue
Block a user