aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lib
diff options
context:
space:
mode:
authorKevin Hao <kexin.hao@windriver.com>2018-08-20 18:42:25 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-21 14:49:34 +0100
commitd1d80566681d4cdc00aa3d4b5e4bcf5edb7132b7 (patch)
tree568b3f645ab7462ab40063a3e18bbf5e6f5a08e5 /scripts/lib
parent33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1 (diff)
downloadopenembedded-core-contrib-d1d80566681d4cdc00aa3d4b5e4bcf5edb7132b7.tar.gz
wic: bootimg-partition: Select a preferred type if multi kernel images are installed
Automatically select one kernel type image based on a predefined precedence list if there are multi kernel images installed. Signed-off-by: Kevin Hao <kexin.hao@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-partition.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/scripts/lib/wic/plugins/source/bootimg-partition.py b/scripts/lib/wic/plugins/source/bootimg-partition.py
index 2e9b9f5ed6..ddc880be36 100644
--- a/scripts/lib/wic/plugins/source/bootimg-partition.py
+++ b/scripts/lib/wic/plugins/source/bootimg-partition.py
@@ -130,24 +130,28 @@ class BootimgPartitionPlugin(SourcePlugin):
if not custom_cfg:
# The kernel types supported by the sysboot of u-boot
- kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"]
+ kernel_types = ["zImage", "Image", "fitImage", "uImage", "vmlinux"]
has_dtb = False
fdt_dir = '/'
kernel_name = None
- for task in cls.install_task:
- src, dst = task
- # Find the kernel image name
- for image in kernel_types:
+
+ # Find the kernel image name, from the highest precedence to lowest
+ for image in kernel_types:
+ for task in cls.install_task:
+ src, dst = task
if re.match(image, src):
- if not kernel_name:
- kernel_name = os.path.join('/', dst)
- else:
- raise WicError('Multi kernel file founded')
+ kernel_name = os.path.join('/', dst)
+ break
+ if kernel_name:
+ break
+ for task in cls.install_task:
+ src, dst = task
# We suppose that all the dtb are in the same directory
if re.search(r'\.dtb', src) and fdt_dir == '/':
has_dtb = True
fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst))
+ break
if not kernel_name:
raise WicError('No kernel file founded')