The cirros image was rebuilt against the 3.13.0-83 kernel, drivers e1000e, igbvf...
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / buildroot-2015.05 / support / scripts / check-kernel-headers.sh
diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/support/scripts/check-kernel-headers.sh b/cirros-testvm/src-cirros/buildroot-2015.05/support/scripts/check-kernel-headers.sh
new file mode 100755 (executable)
index 0000000..a8cca78
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+SYSROOT="${1}"
+# Make sure we have enough version components
+HDR_VER="${2}.0.0"
+
+HDR_M="${HDR_VER%%.*}"
+HDR_V="${HDR_VER#*.}"
+HDR_m="${HDR_V%%.*}"
+
+EXEC="$(mktemp -t check-headers.XXXXXX)"
+
+# We do not want to account for the patch-level, since headers are
+# not supposed to change for different patchlevels, so we mask it out.
+# This only applies to kernels >= 3.0, but those are the only one
+# we actually care about; we treat all 2.6.x kernels equally.
+${HOSTCC} -imacros "${SYSROOT}/usr/include/linux/version.h" \
+          -x c -o "${EXEC}" - <<_EOF_
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc __attribute__((unused)),
+         char** argv __attribute__((unused)))
+{
+    if((LINUX_VERSION_CODE & ~0xFF)
+        != KERNEL_VERSION(${HDR_M},${HDR_m},0))
+    {
+        printf("Incorrect selection of kernel headers: ");
+        printf("expected %d.%d.x, got %d.%d.x\n", ${HDR_M}, ${HDR_m},
+               ((LINUX_VERSION_CODE>>16) & 0xFF),
+               ((LINUX_VERSION_CODE>>8) & 0xFF));
+        return 1;
+    }
+    return 0;
+}
+_EOF_
+
+"${EXEC}"
+ret=${?}
+rm -f "${EXEC}"
+exit ${ret}