summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/plugins
diff options
context:
space:
mode:
authorKevin Hao <kexin.hao@windriver.com>2018-08-20 18:42:24 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-21 14:49:34 +0100
commit33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1 (patch)
tree81000a777481088457b026c42fd5bda49d0868c0 /scripts/lib/wic/plugins
parent3cb303ffee8610d41c9a0745d366556c24066bc3 (diff)
downloadopenembedded-core-33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1.tar.gz
wic: bootimg-partition: Add support to specify a custom extlinux.conf
Add support to specify a custom extlinux.conf via something like: bootloader --configfile="extlinux.conf" Signed-off-by: Kevin Hao <kexin.hao@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/wic/plugins')
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-partition.py79
1 files changed, 47 insertions, 32 deletions
diff --git a/scripts/lib/wic/plugins/source/bootimg-partition.py b/scripts/lib/wic/plugins/source/bootimg-partition.py
index 7d61595d04..2e9b9f5ed6 100644
--- a/scripts/lib/wic/plugins/source/bootimg-partition.py
+++ b/scripts/lib/wic/plugins/source/bootimg-partition.py
@@ -30,6 +30,7 @@ import re
from glob import glob
from wic import WicError
+from wic.engine import get_custom_config
from wic.pluginbase import SourcePlugin
from wic.misc import exec_cmd, get_bitbake_var
@@ -114,38 +115,52 @@ class BootimgPartitionPlugin(SourcePlugin):
if source_params.get('loader') != "u-boot":
return
- # The kernel types supported by the sysboot of u-boot
- kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"]
- 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:
- if re.match(image, src):
- if not kernel_name:
- kernel_name = os.path.join('/', dst)
- else:
- raise WicError('Multi kernel file founded')
-
- # 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))
-
- if not kernel_name:
- raise WicError('No kernel file founded')
-
- # Compose the extlinux.conf
- extlinux_conf = "default Yocto\n"
- extlinux_conf += "label Yocto\n"
- extlinux_conf += " kernel %s\n" % kernel_name
- if has_dtb:
- extlinux_conf += " fdtdir %s\n" % fdt_dir
- bootloader = cr.ks.bootloader
- extlinux_conf += "append root=%s rootwait %s\n" \
- % (cr.rootdev, bootloader.append if bootloader.append else '')
+ configfile = cr.ks.bootloader.configfile
+ custom_cfg = None
+ if configfile:
+ custom_cfg = get_custom_config(configfile)
+ if custom_cfg:
+ # Use a custom configuration for extlinux.conf
+ extlinux_conf = custom_cfg
+ logger.debug("Using custom configuration file "
+ "%s for extlinux.cfg", configfile)
+ else:
+ raise WicError("configfile is specified but failed to "
+ "get it from %s." % configfile)
+
+ if not custom_cfg:
+ # The kernel types supported by the sysboot of u-boot
+ kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"]
+ 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:
+ if re.match(image, src):
+ if not kernel_name:
+ kernel_name = os.path.join('/', dst)
+ else:
+ raise WicError('Multi kernel file founded')
+
+ # 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))
+
+ if not kernel_name:
+ raise WicError('No kernel file founded')
+
+ # Compose the extlinux.conf
+ extlinux_conf = "default Yocto\n"
+ extlinux_conf += "label Yocto\n"
+ extlinux_conf += " kernel %s\n" % kernel_name
+ if has_dtb:
+ extlinux_conf += " fdtdir %s\n" % fdt_dir
+ bootloader = cr.ks.bootloader
+ extlinux_conf += "append root=%s rootwait %s\n" \
+ % (cr.rootdev, bootloader.append if bootloader.append else '')
install_cmd = "install -d %s/extlinux/" % hdddir
exec_cmd(install_cmd)