[ostree] deploy: Also look for /usr/lib/os-release
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] deploy: Also look for /usr/lib/os-release
- Date: Mon, 23 Feb 2015 02:05:47 +0000 (UTC)
commit 9539408bb3699f8130f9c6549e82d5a795b3293f
Author: Colin Walters <walters verbum org>
Date: Thu Feb 12 21:35:19 2015 -0500
deploy: Also look for /usr/lib/os-release
With newer versions of systemd, the file has moved there.
src/libostree/ostree-sysroot-deploy.c | 41 ++++++++++++++++++++++++++------
1 files changed, 33 insertions(+), 8 deletions(-)
---
diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c
index 7052beb..34acc63 100644
--- a/src/libostree/ostree-sysroot-deploy.c
+++ b/src/libostree/ostree-sysroot-deploy.c
@@ -28,6 +28,7 @@
#include "ostree-linuxfsutil.h"
#include "otutil.h"
#include "libgsystem.h"
+#include "libglnx.h"
#define OSTREE_VARRELABEL_ID "da679b08acd34504b789d96f818ea781"
#define OSTREE_CONFIGMERGE_ID "d3863baec13e4449ab0384684a8af3a7"
@@ -1253,6 +1254,7 @@ install_deployment_kernel (OstreeSysroot *sysroot,
{
gboolean ret = FALSE;
+ struct stat stbuf;
const char *osname = ostree_deployment_get_osname (deployment);
const char *bootcsum = ostree_deployment_get_bootcsum (deployment);
gs_unref_object GFile *bootdir = NULL;
@@ -1264,8 +1266,8 @@ install_deployment_kernel (OstreeSysroot *sysroot,
gs_unref_object GFile *dest_initramfs_path = NULL;
gs_unref_object GFile *tree_kernel_path = NULL;
gs_unref_object GFile *tree_initramfs_path = NULL;
- gs_unref_object GFile *etc_os_release = NULL;
gs_unref_object GFile *deployment_dir = NULL;
+ glnx_fd_close int deployment_dfd = -1;
gs_free char *contents = NULL;
gs_free char *deployment_version = NULL;
gs_unref_hashtable GHashTable *osrelease_values = NULL;
@@ -1280,11 +1282,14 @@ install_deployment_kernel (OstreeSysroot *sysroot,
__attribute__((cleanup(_ostree_kernel_args_cleanup))) OstreeKernelArgs *kargs = NULL;
const char *val;
OstreeBootconfigParser *bootconfig;
- gsize len;
bootconfig = ostree_deployment_get_bootconfig (deployment);
deployment_dir = ostree_sysroot_get_deployment_directory (sysroot, deployment);
+ if (!glnx_opendirat (AT_FDCWD, gs_file_get_path_cached (deployment_dir), FALSE,
+ &deployment_dfd, error))
+ goto out;
+
if (!get_kernel_from_tree (deployment_dir, &tree_kernel_path, &tree_initramfs_path,
cancellable, error))
goto out;
@@ -1327,13 +1332,33 @@ install_deployment_kernel (OstreeSysroot *sysroot,
}
}
- etc_os_release = g_file_resolve_relative_path (deployment_dir, "etc/os-release");
-
- if (!g_file_load_contents (etc_os_release, cancellable,
- &contents, &len, NULL, error))
+ if (fstatat (deployment_dfd, "usr/lib/os-release", &stbuf, 0) != 0)
{
- g_prefix_error (error, "Reading /etc/os-release: ");
- goto out;
+ if (errno != ENOENT)
+ {
+ gs_set_error_from_errno (error, errno);
+ goto out;
+ }
+ else
+ {
+ contents = glnx_file_get_contents_utf8_at (deployment_dfd, "etc/os-release", NULL,
+ cancellable, error);
+ if (!contents)
+ {
+ g_prefix_error (error, "Reading /etc/os-release: ");
+ goto out;
+ }
+ }
+ }
+ else
+ {
+ contents = glnx_file_get_contents_utf8_at (deployment_dfd, "usr/lib/os-release", NULL,
+ cancellable, error);
+ if (!contents)
+ {
+ g_prefix_error (error, "Reading /usr/lib/os-release: ");
+ goto out;
+ }
}
osrelease_values = parse_os_release (contents, "\n");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]