[ostree/wip/libsysroot: 3/4] libostree: Move sysroot initialization API here
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree/wip/libsysroot: 3/4] libostree: Move sysroot initialization API here
- Date: Sun, 15 Sep 2013 22:12:10 +0000 (UTC)
commit 6f929ca5af114da00030bd83d8b100706d0eebef
Author: Colin Walters <walters verbum org>
Date: Sun Sep 15 15:16:56 2013 -0400
libostree: Move sysroot initialization API here
src/libostree/ostree-sysroot.c | 49 +++++++++++++++++++++++++++++++++
src/libostree/ostree-sysroot.h | 4 +++
src/ostree/ot-admin-builtin-init-fs.c | 4 ++-
src/ostree/ot-admin-builtin-os-init.c | 2 +-
src/ostree/ot-admin-functions.c | 42 ----------------------------
5 files changed, 57 insertions(+), 44 deletions(-)
---
diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c
index 4fa27af..3f1fa37 100644
--- a/src/libostree/ostree-sysroot.c
+++ b/src/libostree/ostree-sysroot.c
@@ -174,3 +174,52 @@ ostree_sysroot_get_path (OstreeSysroot *self)
{
return self->path;
}
+
+/**
+ * ostree_sysroot_ensure_initialized:
+ * @self:
+ *
+ * Ensure that @self is set up as a valid rootfs, by creating
+ * /ostree/repo, among other things.
+ */
+gboolean
+ostree_sysroot_ensure_initialized (OstreeSysroot *self,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean ret = FALSE;
+ gs_unref_object GFile *dir = NULL;
+ gs_unref_object GFile *ostree_dir = NULL;
+
+ ostree_dir = g_file_get_child (self->path, "ostree");
+
+ g_clear_object (&dir);
+ dir = g_file_get_child (ostree_dir, "repo");
+ if (!gs_file_ensure_directory (dir, TRUE, cancellable, error))
+ goto out;
+
+ g_clear_object (&dir);
+ dir = g_file_get_child (ostree_dir, "deploy");
+ if (!gs_file_ensure_directory (dir, TRUE, cancellable, error))
+ goto out;
+
+ g_clear_object (&dir);
+ dir = ot_gfile_get_child_build_path (ostree_dir, "repo", "objects", NULL);
+ if (!g_file_query_exists (dir, NULL))
+ {
+ gs_free char *opt_repo_arg = g_strdup_printf ("--repo=%s/repo",
+ gs_file_get_path_cached (ostree_dir));
+
+ if (!gs_subprocess_simple_run_sync (NULL, GS_SUBPROCESS_STREAM_DISPOSITION_NULL,
+ cancellable, error,
+ "ostree", opt_repo_arg, "init", NULL))
+ {
+ g_prefix_error (error, "Failed to initialize repository: ");
+ goto out;
+ }
+ }
+
+ ret = TRUE;
+ out:
+ return ret;
+}
diff --git a/src/libostree/ostree-sysroot.h b/src/libostree/ostree-sysroot.h
index b983383..490d5d2 100644
--- a/src/libostree/ostree-sysroot.h
+++ b/src/libostree/ostree-sysroot.h
@@ -38,5 +38,9 @@ OstreeSysroot* ostree_sysroot_new_default (void);
GFile *ostree_sysroot_get_path (OstreeSysroot *self);
+gboolean ostree_sysroot_ensure_initialized (OstreeSysroot *self,
+ GCancellable *cancellable,
+ GError **error);
+
G_END_DECLS
diff --git a/src/ostree/ot-admin-builtin-init-fs.c b/src/ostree/ot-admin-builtin-init-fs.c
index 78872b7..01114c5 100644
--- a/src/ostree/ot-admin-builtin-init-fs.c
+++ b/src/ostree/ot-admin-builtin-init-fs.c
@@ -40,6 +40,7 @@ ot_admin_builtin_init_fs (int argc, char **argv, OstreeSysroot *sysroot, GCancel
gboolean ret = FALSE;
gs_unref_object GFile *dir = NULL;
gs_unref_object GFile *child = NULL;
+ gs_unref_object OstreeSysroot *target_sysroot = NULL;
guint i;
const char *normal_toplevels[] = {"boot", "dev", "home", "proc", "run", "sys"};
@@ -56,6 +57,7 @@ ot_admin_builtin_init_fs (int argc, char **argv, OstreeSysroot *sysroot, GCancel
}
dir = g_file_new_for_path (argv[1]);
+ target_sysroot = ostree_sysroot_new (dir);
for (i = 0; i < G_N_ELEMENTS(normal_toplevels); i++)
{
@@ -75,7 +77,7 @@ ot_admin_builtin_init_fs (int argc, char **argv, OstreeSysroot *sysroot, GCancel
goto out;
g_clear_object (&child);
- if (!ot_admin_ensure_initialized (dir, cancellable, error))
+ if (!ostree_sysroot_ensure_initialized (target_sysroot, cancellable, error))
goto out;
ret = TRUE;
diff --git a/src/ostree/ot-admin-builtin-os-init.c b/src/ostree/ot-admin-builtin-os-init.c
index 414662a..e151506 100644
--- a/src/ostree/ot-admin-builtin-os-init.c
+++ b/src/ostree/ot-admin-builtin-os-init.c
@@ -48,7 +48,7 @@ ot_admin_builtin_os_init (int argc, char **argv, OstreeSysroot *sysroot, GCancel
if (!g_option_context_parse (context, &argc, &argv, error))
goto out;
- if (!ot_admin_ensure_initialized (ostree_sysroot_get_path (sysroot), cancellable, error))
+ if (!ostree_sysroot_ensure_initialized (sysroot, cancellable, error))
goto out;
if (argc < 2)
diff --git a/src/ostree/ot-admin-functions.c b/src/ostree/ot-admin-functions.c
index 770857a..2cef98c 100644
--- a/src/ostree/ot-admin-functions.c
+++ b/src/ostree/ot-admin-functions.c
@@ -93,48 +93,6 @@ match_info_cleanup (void *loc)
}
gboolean
-ot_admin_ensure_initialized (GFile *sysroot,
- GCancellable *cancellable,
- GError **error)
-{
- gboolean ret = FALSE;
- gs_unref_object GFile *dir = NULL;
- gs_unref_object GFile *ostree_dir = NULL;
-
- ostree_dir = g_file_get_child (sysroot, "ostree");
-
- g_clear_object (&dir);
- dir = g_file_get_child (ostree_dir, "repo");
- if (!gs_file_ensure_directory (dir, TRUE, cancellable, error))
- goto out;
-
- g_clear_object (&dir);
- dir = g_file_get_child (ostree_dir, "deploy");
- if (!gs_file_ensure_directory (dir, TRUE, cancellable, error))
- goto out;
-
- g_clear_object (&dir);
- dir = ot_gfile_get_child_build_path (ostree_dir, "repo", "objects", NULL);
- if (!g_file_query_exists (dir, NULL))
- {
- gs_free char *opt_repo_arg = g_strdup_printf ("--repo=%s/repo",
- gs_file_get_path_cached (ostree_dir));
-
- if (!gs_subprocess_simple_run_sync (NULL, GS_SUBPROCESS_STREAM_DISPOSITION_NULL,
- cancellable, error,
- "ostree", opt_repo_arg, "init", NULL))
- {
- g_prefix_error (error, "Failed to initialize repository: ");
- goto out;
- }
- }
-
- ret = TRUE;
- out:
- return ret;
-}
-
-gboolean
ot_admin_check_os (GFile *sysroot,
const char *osname,
GCancellable *cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]