[ostree] core: Fix build with libarchive disabled
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Fix build with libarchive disabled
- Date: Fri, 23 Dec 2011 17:10:46 +0000 (UTC)
commit 4bbc99fb1db8825afb526b3e2b361c35e0556e6e
Author: Colin Walters <walters verbum org>
Date: Thu Dec 22 19:52:30 2011 -0500
core: Fix build with libarchive disabled
src/libostree/ostree-repo.c | 143 +++++++++++++++++++++----------------------
1 files changed, 71 insertions(+), 72 deletions(-)
---
diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
index 9c295aa..80b8181 100644
--- a/src/libostree/ostree-repo.c
+++ b/src/libostree/ostree-repo.c
@@ -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)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]