From 62b0ee9eb1b488e96359fa9b3f225c80e92cd082 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Thu, 23 Jul 2020 14:44:10 +0100 Subject: [PATCH] portabled: update host's os-release path --- src/portable/portable.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/portable/portable.c b/src/portable/portable.c index 48294d4c49..3a1367ec2b 100644 --- a/src/portable/portable.c +++ b/src/portable/portable.c @@ -695,17 +695,28 @@ static int install_chroot_dropin( if (!text) return -ENOMEM; - if (endswith(m->name, ".service")) + if (endswith(m->name, ".service")) { + const char *os_release_source; + + if (access("/etc/os-release", F_OK) < 0) { + if (errno != ENOENT) + return log_debug_errno(errno, "Failed to check if /etc/os-release exists: %m"); + + os_release_source = "/usr/lib/os-release"; + } else + os_release_source = "/etc/os-release"; + if (!strextend(&text, "\n" "[Service]\n", IN_SET(type, IMAGE_DIRECTORY, IMAGE_SUBVOLUME) ? "RootDirectory=" : "RootImage=", image_path, "\n" "Environment=PORTABLE=", basename(image_path), "\n" - "BindReadOnlyPaths=-/etc/os-release:/run/host/etc/os-release /usr/lib/os-release:/run/host/usr/lib/os-release\n" + "BindReadOnlyPaths=", os_release_source, ":/run/host/os-release\n" "LogExtraFields=PORTABLE=", basename(image_path), "\n", NULL)) return -ENOMEM; + } r = write_string_file(dropin, text, WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC); if (r < 0)