@@ -428,6 +428,7 @@ class KernelFitImageBase(FitImageTestCase):
'INITRAMFS_IMAGE_BUNDLE',
'INITRAMFS_IMAGE_NAME',
'INITRAMFS_IMAGE',
+ 'KERNEL_DEPLOYSUBDIR',
'KERNEL_DEVICETREE',
'KERNEL_FIT_LINK_NAME',
'MACHINE',
@@ -444,10 +445,21 @@ class KernelFitImageBase(FitImageTestCase):
'UBOOT_SIGN_KEYDIR',
'UBOOT_SIGN_KEYNAME',
}
- bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), "virtual/kernel")
+ bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), self.kernel_recipe)
self.logger.debug("bb_vars: %s" % pprint.pformat(bb_vars, indent=4))
return bb_vars
+ def _config_add_kernel_classes(self, config):
+ config += '# Use kernel-fitimage.bbclass for the creation of the fitImage' + os.linesep
+ config += 'KERNEL_IMAGETYPES += " fitImage "' + os.linesep
+ config += 'KERNEL_CLASSES = " kernel-fitimage "' + os.linesep
+ return config
+
+ @property
+ def kernel_recipe(self):
+ # virtual/kernel does not work with SRC_URI:append:pn-%s
+ return "linux-yocto"
+
def _config_add_uboot_env(self, config):
"""Generate an u-boot environment
@@ -461,7 +473,7 @@ class KernelFitImageBase(FitImageTestCase):
config += '# Add an u-boot script to the fitImage' + os.linesep
config += 'FIT_UBOOT_ENV = "%s"' % fit_uenv_file + os.linesep
config += 'FILESEXTRAPATHS:prepend := "${TOPDIR}/%s:"' % test_files_dir + os.linesep
- config += 'SRC_URI:append:pn-linux-yocto = " file://${FIT_UBOOT_ENV}"' + os.linesep
+ config += 'SRC_URI:append:pn-%s = " file://${FIT_UBOOT_ENV}"' % self.kernel_recipe + os.linesep
if not os.path.isdir(test_files_dir):
os.makedirs(test_files_dir)
@@ -473,7 +485,7 @@ class KernelFitImageBase(FitImageTestCase):
def _bitbake_fit_image(self, bb_vars):
"""Bitbake the kernel and return the paths to the its file and the FIT image"""
- bitbake("virtual/kernel")
+ bitbake(self.kernel_recipe)
# Find the right its file and the final fitImage and check if both files are available
deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE']
@@ -492,8 +504,13 @@ class KernelFitImageBase(FitImageTestCase):
fitimage_name = "fitImage" # or fitImage-${KERNEL_IMAGE_LINK_NAME}${KERNEL_IMAGE_BIN_EXT}
else:
self.fail('Invalid configuration: INITRAMFS_IMAGE_BUNDLE = "1" and not INITRAMFS_IMAGE')
- fitimage_its_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_its_name))
- fitimage_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_name))
+ kernel_deploysubdir = bb_vars['KERNEL_DEPLOYSUBDIR']
+ if kernel_deploysubdir:
+ fitimage_its_path = os.path.realpath(os.path.join(deploy_dir_image, kernel_deploysubdir, fitimage_its_name))
+ fitimage_path = os.path.realpath(os.path.join(deploy_dir_image, kernel_deploysubdir, fitimage_name))
+ else:
+ fitimage_its_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_its_name))
+ fitimage_path = os.path.realpath(os.path.join(deploy_dir_image, fitimage_name))
return (fitimage_its_path, fitimage_path)
def _get_req_its_paths(self, bb_vars):
@@ -741,10 +758,7 @@ class KernelFitImageTests(KernelFitImageBase):
Author: Usama Arif <usama.arif@arm.com>
"""
config = """
-# Enable creation of fitImage
KERNEL_IMAGETYPE = "Image"
-KERNEL_IMAGETYPES += " fitImage "
-KERNEL_CLASSES = " kernel-fitimage "
# RAM disk variables including load address and entrypoint for kernel and RAM disk
IMAGE_FSTYPES += "cpio.gz"
@@ -757,6 +771,7 @@ UBOOT_LOADADDRESS = "0x80080000"
UBOOT_ENTRYPOINT = "0x80080000"
FIT_DESC = "A model description"
"""
+ config = self._config_add_kernel_classes(config)
self.write_config(config)
bb_vars = self._fit_get_bb_vars()
self._test_fitimage(bb_vars)
@@ -772,11 +787,10 @@ FIT_DESC = "A model description"
config = """
# Enable creation of fitImage
MACHINE = "beaglebone-yocto"
-KERNEL_IMAGETYPES += " fitImage "
-KERNEL_CLASSES = " kernel-fitimage "
# Add a devicetree overlay which does not need kernel sources
PREFERRED_PROVIDER_virtual/dtb = "bborg-relay-00a2"
"""
+ config = self._config_add_kernel_classes(config)
config = self._config_add_uboot_env(config)
self.write_config(config)
bb_vars = self._fit_get_bb_vars()
@@ -801,13 +815,12 @@ PREFERRED_PROVIDER_virtual/dtb = "bborg-relay-00a2"
config = """
# Enable creation of fitImage
MACHINE = "beaglebone-yocto"
-KERNEL_IMAGETYPES += " fitImage "
-KERNEL_CLASSES = " kernel-fitimage "
UBOOT_SIGN_ENABLE = "1"
UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
UBOOT_SIGN_KEYNAME = "dev"
UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'"
"""
+ config = self._config_add_kernel_classes(config)
config = self._config_add_uboot_env(config)
self.write_config(config)
@@ -852,8 +865,6 @@ UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'"
config = """
# Enable creation of fitImage
MACHINE = "beaglebone-yocto"
-KERNEL_IMAGETYPES += " fitImage "
-KERNEL_CLASSES = " kernel-fitimage "
UBOOT_SIGN_ENABLE = "1"
FIT_GENERATE_KEYS = "1"
UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
@@ -862,6 +873,7 @@ UBOOT_SIGN_KEYNAME = "cfg-oe-selftest"
FIT_SIGN_INDIVIDUAL = "1"
UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'"
"""
+ config = self._config_add_kernel_classes(config)
config = self._config_add_uboot_env(config)
self.write_config(config)
bb_vars = self._fit_get_bb_vars()
@@ -888,8 +900,6 @@ MACHINE = "beaglebone-yocto"
INITRAMFS_IMAGE = "core-image-minimal-initramfs"
INITRAMFS_SCRIPTS = ""
UBOOT_MACHINE = "am335x_evm_defconfig"
-KERNEL_CLASSES = " kernel-fitimage "
-KERNEL_IMAGETYPES = "fitImage"
UBOOT_SIGN_ENABLE = "1"
UBOOT_SIGN_KEYNAME = "beaglebonekey"
UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}"
@@ -908,6 +918,7 @@ KERNEL_IMAGETYPE_REPLACEMENT = "zImage"
FIT_KERNEL_COMP_ALG = "none"
FIT_HASH_ALG = "sha256"
"""
+ config = self._config_add_kernel_classes(config)
config = self._config_add_uboot_env(config)
self.write_config(config)
@@ -948,8 +959,6 @@ INITRAMFS_IMAGE_BUNDLE = "1"
INITRAMFS_IMAGE = "core-image-minimal-initramfs"
INITRAMFS_SCRIPTS = ""
UBOOT_MACHINE = "am335x_evm_defconfig"
-KERNEL_CLASSES = " kernel-fitimage "
-KERNEL_IMAGETYPES = "fitImage"
UBOOT_SIGN_ENABLE = "1"
UBOOT_SIGN_KEYNAME = "beaglebonekey"
UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}"
@@ -966,11 +975,13 @@ KERNEL_IMAGETYPE_REPLACEMENT = "zImage"
FIT_KERNEL_COMP_ALG = "none"
FIT_HASH_ALG = "sha256"
"""
+ config = self._config_add_kernel_classes(config)
config = self._config_add_uboot_env(config)
self.write_config(config)
bb_vars = self._fit_get_bb_vars()
self._test_fitimage(bb_vars)
+
class FitImagePyTests(KernelFitImageBase):
"""Test cases for the fitimage.py module without calling bitbake"""
@@ -1069,6 +1080,8 @@ class FitImagePyTests(KernelFitImageBase):
class UBootFitImageTests(FitImageTestCase):
"""Test cases for the uboot-sign bbclass"""
+ BOOTLOADER_RECIPE = "virtual/bootloader"
+
def _fit_get_bb_vars(self, additional_vars=[]):
"""Get bb_vars as needed by _test_sign_fit_image
@@ -1110,13 +1123,13 @@ class UBootFitImageTests(FitImageTestCase):
'UBOOT_SIGN_KEYDIR',
'UBOOT_SIGN_KEYNAME',
}
- bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), "virtual/bootloader")
+ bb_vars = get_bb_vars(list(internal_used | set(additional_vars)), UBootFitImageTests.BOOTLOADER_RECIPE)
self.logger.debug("bb_vars: %s" % pprint.pformat(bb_vars, indent=4))
return bb_vars
def _bitbake_fit_image(self, bb_vars):
"""Bitbake the bootloader and return the paths to the its file and the FIT image"""
- bitbake("virtual/bootloader")
+ bitbake(UBootFitImageTests.BOOTLOADER_RECIPE)
deploy_dir_image = bb_vars['DEPLOY_DIR_IMAGE']
machine = bb_vars['MACHINE']
@@ -1634,7 +1647,7 @@ FIT_SIGN_INDIVIDUAL = "1"
# Using a static key. FIT_GENERATE_KEYS = "1" does not work without kernel-fitimage.bbclass
self._gen_signing_key(bb_vars)
- bitbake("virtual/bootloader")
+ bitbake(UBootFitImageTests.BOOTLOADER_RECIPE)
# Just check the DTB of u-boot since there is no u-boot FIT image
self._check_kernel_dtb(bb_vars)
From: Adrian Freihofer <adrian.freihofer@siemens.com> Support that a recipe other than virtual/kernel provides the kernel FIT image. Therefore * Support building with either: - KERNEL_IMAGETYPES += " fitImage " - KERNEL_CLASSES = " kernel-fitimage " or - KERNEL_CLASSES = " kernel-uboot " * allow to specify which recipe gets bitbaked. --- meta/lib/oeqa/selftest/cases/fitimage.py | 55 +++++++++++++++--------- 1 file changed, 34 insertions(+), 21 deletions(-)