summaryrefslogtreecommitdiffstats
path: root/scripts/lib/wic/plugins/source/bootimg-partition.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/wic/plugins/source/bootimg-partition.py')
-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)