From: Luca Boccassi Date: Fri, 12 Feb 2021 15:30:10 +0000 (+0000) Subject: os-util: allow missing VERSION_ID on the host X-Git-Tag: v248-rc1~66^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d335f4c5833387e5e779d629086defa46818592c;p=thirdparty%2Fsystemd.git os-util: allow missing VERSION_ID on the host Rolling releases, like ArchLinux, do not set VERSION_ID in their os-release files, so allow matching simply on ID if the host does not provide anything. --- diff --git a/src/shared/os-util.c b/src/shared/os-util.c index 53679c9597d..9aed3b5df4d 100644 --- a/src/shared/os-util.c +++ b/src/shared/os-util.c @@ -205,7 +205,6 @@ int extension_release_validate( assert(name); assert(!isempty(host_os_release_id)); - assert(!isempty(host_os_release_version_id) || !isempty(host_os_release_sysext_level)); /* Now that we can look into the extension image, let's see if the OS version is compatible */ if (strv_isempty(extension_release)) { @@ -226,6 +225,12 @@ int extension_release_validate( return 0; } + /* Rolling releases do not typically set VERSION_ID (eg: ArchLinux) */ + if (isempty(host_os_release_version_id) && isempty(host_os_release_sysext_level)) { + log_debug("No version info on the host (rolling release?), but ID in %s matched.", name); + return 1; + } + /* If the extension has a sysext API level declared, then it must match the host API * level. Otherwise, compare OS version as a whole */ extension_release_sysext_level = strv_env_pairs_get(extension_release, "SYSEXT_LEVEL");