]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
os-util: allow missing VERSION_ID on the host
authorLuca Boccassi <luca.boccassi@microsoft.com>
Fri, 12 Feb 2021 15:30:10 +0000 (15:30 +0000)
committerLuca Boccassi <luca.boccassi@microsoft.com>
Wed, 17 Feb 2021 21:45:31 +0000 (21:45 +0000)
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.

src/shared/os-util.c

index 53679c9597dffccebfcd48c2bbd970fb4c01025b..9aed3b5df4d711eac59c581f13348bf0497fcf8d 100644 (file)
@@ -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");