/** * rpmostree_prepare_rootfs_for_commit: * * Walk over the root filesystem and perform some core conversions * from RPM conventions to OSTree conventions. For example: * * * Move /etc to /usr/etc * * Checksum the kernel in /boot * * Migrate content in /var to systemd-tmpfiles */ gboolean rpmostree_prepare_rootfs_for_commit (GFile *rootfs, JsonObject *treefile, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; gs_free char *dest_rootfs_path = NULL; dest_rootfs_path = g_strconcat (gs_file_get_path_cached (rootfs), ".post", NULL); if (!glnx_shutil_rm_rf_at (AT_FDCWD, dest_rootfs_path, cancellable, error)) goto out; { gs_unref_object GFile *dest_rootfs = g_file_new_for_path (dest_rootfs_path); if (!create_rootfs_from_yumroot_content (dest_rootfs, rootfs, treefile, cancellable, error)) goto out; } if (!glnx_shutil_rm_rf_at (AT_FDCWD, gs_file_get_path_cached (rootfs), cancellable, error)) goto out; if (TEMP_FAILURE_RETRY (renameat (AT_FDCWD, dest_rootfs_path, AT_FDCWD, gs_file_get_path_cached (rootfs))) != 0) { glnx_set_error_from_errno (error); goto out; } ret = TRUE; out: return ret; }
/** * rpmostree_prepare_rootfs_for_commit: * * Walk over the root filesystem and perform some core conversions * from RPM conventions to OSTree conventions. For example: * * * Move /etc to /usr/etc * * Checksum the kernel in /boot * * Migrate content in /var to systemd-tmpfiles */ gboolean rpmostree_prepare_rootfs_for_commit (GFile *rootfs, JsonObject *treefile, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; gs_unref_object GFile *rootfs_tmp = NULL; gs_free char *rootfs_tmp_path = NULL; rootfs_tmp_path = g_strconcat (gs_file_get_path_cached (rootfs), ".tmp", NULL); rootfs_tmp = g_file_new_for_path (rootfs_tmp_path); if (!gs_shutil_rm_rf (rootfs_tmp, cancellable, error)) goto out; if (!create_rootfs_from_yumroot_content (rootfs_tmp, rootfs, treefile, cancellable, error)) goto out; if (!gs_shutil_rm_rf (rootfs, cancellable, error)) goto out; if (!gs_file_rename (rootfs_tmp, rootfs, cancellable, error)) goto out; ret = TRUE; out: return ret; }