aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-12-02 15:04:38 +1300
committerPaul Eggleton <paul.eggleton@linux.intel.com>2016-05-09 16:33:52 +1200
commit29259d2220b8e6e577a3efaa160b77e3366fb6d5 (patch)
tree457bc3de22e04390de63e720645b8a47a247beec
parent35665d96131a41adc73cd9149f0d21d23e796714 (diff)
downloadopenembedded-core-contrib-paule/kernel-check.tar.gz
classes/image: check kernel config supports IMAGE_FSTYPES itemspaule/kernel-check
A lot of the IMAGE_FSTYPES items require the appropriate filesystem driver to be enabled in the kernel configuration; e.g. in order to read a btrfs filesystem, the kernel must enable CONFIG_BTRFS_FS. Add a check to ensure that is the case. Fixes [YOCTO #5574]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-rw-r--r--meta/classes/image.bbclass23
-rw-r--r--meta/classes/image_types.bbclass11
2 files changed, 34 insertions, 0 deletions
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 4542e95d1e..c56b053f18 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -238,9 +238,32 @@ do_rootfs[cleandirs] += "${S}"
do_rootfs[umask] = "022"
addtask rootfs before do_build
+inherit kernel-check
+
+def check_image_fstypes_kernel(d):
+ """
+ Check that the kernel we have built has the appropriate config options enabled
+ to support the image formats specified in IMAGE_FSTYPES
+ """
+ fstypes = (d.getVar('IMAGE_FSTYPES', True) or '').split()
+ ctypes = (d.getVar('COMPRESSIONTYPES', True) or '').split()
+ for fstype in fstypes:
+ kernconfig = (d.getVar('IMAGE_TYPE_KERNEL_OPTIONS_' + fstype, True) or '').split()
+ for ctype in ctypes:
+ if fstype.endswith("." + ctype):
+ basetype = fstype[:-len("." + ctype)]
+ kernconfig.extend((d.getVar('IMAGE_TYPE_KERNEL_OPTIONS_' + basetype, True) or '').split())
+ kernconfig = list(set(kernconfig))
+ if kernconfig:
+ missing, diffvalue = check_kernel_config_options(kernconfig, d)
+ if missing or diffvalue:
+ bb.warn('IMAGE_FSTYPES contains %s, but the following required kernel configuration items are not present in the kernel configuration:\n %s' % (fstype, '\n '.join(missing + ['%s=%s (actual value %s)' % item for item in diffvalue])))
+
fakeroot python do_image () {
from oe.utils import execute_pre_post_process
+ check_image_fstypes_kernel(d)
+
pre_process_cmds = d.getVar("IMAGE_PREPROCESS_COMMAND", True)
execute_pre_post_process(d, pre_process_cmds)
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index 53af7ca8dc..dd79726237 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -240,6 +240,17 @@ IMAGE_DEPENDS_ubifs = "mtd-utils-native"
IMAGE_DEPENDS_multiubi = "mtd-utils-native"
IMAGE_DEPENDS_wic = "parted-native"
+IMAGE_TYPE_KERNEL_OPTIONS_jffs2 = "CONFIG_JFFS2_FS"
+IMAGE_TYPE_KERNEL_OPTIONS_jffs2.sum = "CONFIG_JFFS2_SUMMARY"
+IMAGE_TYPE_KERNEL_OPTIONS_cramfs = "CONFIG_CRAMFS"
+IMAGE_TYPE_KERNEL_OPTIONS_ext2 = "CONFIG_EXT2_FS|CONFIG_EXT4_USE_FOR_EXT23"
+IMAGE_TYPE_KERNEL_OPTIONS_ext3 = "CONFIG_EXT3_FS|CONFIG_EXT4_USE_FOR_EXT23"
+IMAGE_TYPE_KERNEL_OPTIONS_ext4 = "CONFIG_EXT4_FS"
+IMAGE_TYPE_KERNEL_OPTIONS_btrfs = "CONFIG_BTRFS_FS"
+IMAGE_TYPE_KERNEL_OPTIONS_squashfs = "CONFIG_SQUASHFS"
+IMAGE_TYPE_KERNEL_OPTIONS_squashfs-xz = "CONFIG_SQUASHFS_XZ"
+IMAGE_TYPE_KERNEL_OPTIONS_squashfs-lzo = "CONFIG_SQUASHFS_LZO"
+
# This variable is available to request which values are suitable for IMAGE_FSTYPES
IMAGE_TYPES = " \
jffs2 jffs2.sum \