[oe-commits] [openembedded-core] 01/20: wic: bootimg-partition: Add support to specify a custom extlinux.conf

git at git.openembedded.org git at git.openembedded.org
Tue Aug 21 13:53:20 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit 33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1
Author: Kevin Hao <kexin.hao at windriver.com>
AuthorDate: Mon Aug 20 18:42:24 2018 +0800

    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 at windriver.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 .../lib/wic/plugins/source/bootimg-partition.py    | 79 +++++++++++++---------
 1 file 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 7d61595..2e9b9f5 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)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list