Blob Blame History Raw
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:05 +0100
Subject: meson: enforce a minimum Linux kernel headers version >= 4.18
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001

Various areas of QEMU have a dependency on Linux kernel header
definitions. This falls under the scope of our supported platforms
matrix, but historically we've not checked for a minimum kernel
headers version. This has made it unclear when we can drop support
for older kernel headers.

  * Alpine 3.14: 5.10
  * CentOS 8: 4.18
  * CentOS 9: 5.14
  * Debian 10: 4.19
  * Debian 11: 5.10
  * Fedora 35: 5.19
  * Fedora 36: 5.19
  * OpenSUSE 15.3: 5.3.0
  * Ubuntu 20.04: 5.4
  * Ubuntu 22.04: 5.15

The above ignores the 3rd version digit since distros update their
packages periodically and such updates don't generally affect public
APIs to the extent that it matters for our build time check.

Overall, we can set the baseline to 4.18 currently.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
 meson.build | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/meson.build b/meson.build
index 41f693a822a7ec58085bb53a8518..6641e86c0107906bb07d6b35d54a 100644
--- a/meson.build
+++ b/meson.build
@@ -248,6 +248,18 @@ if targetos == 'linux'
   add_project_arguments('-isystem', meson.current_source_dir() / 'linux-headers',
                         '-isystem', 'linux-headers',
                         language: ['c', 'cpp'])
+
+  if not cc.compiles('''
+    #include <linux/version.h>
+    int main(void) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
+#error "QEMU requires Linux kernel headers version >= 4.18.0"
+#endif
+      return 0;
+    }''')
+  error('QEMU requires Linux kernel headers version >= 4.18.0')
+endif
+
 endif
 
 add_project_arguments('-iquote', '.',