]> code.ossystems Code Review - openembedded-core.git/commitdiff
wic: Add wic-specific bootloader subclass
authorTom Zanussi <tom.zanussi@linux.intel.com>
Tue, 4 Feb 2014 01:16:56 +0000 (19:16 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 4 Feb 2014 12:56:55 +0000 (12:56 +0000)
Add a new wic-specific bootloader subclass so we can add a --source
param to hang non-partition plugin off of.

By default, the bootloader gets the /boot partition source plugin, but
this can be overridden by the --source bootloader param if needed.

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/lib/mic/imager/direct.py
scripts/lib/mic/kickstart/__init__.py
scripts/lib/mic/kickstart/custom_commands/wicboot.py [new file with mode: 0644]

index d24bc684fe14a8fbbc88d7adc87a031a837b2619..3827eb8e940359e4387c2125e0a1572762cf95e7 100644 (file)
@@ -225,6 +225,12 @@ class DirectImageCreator(BaseImageCreator):
 
         fstab = self.__write_fstab()
 
+        for p in parts:
+            # as a convenience, set source to the boot partition source
+            # instead of forcing it to be set via bootloader --source
+            if not self.ks.handler.bootloader.source and p.mountpoint == "/boot":
+                self.ks.handler.bootloader.source = p.source
+
         self.boot_type = self.get_boot_type()
 
         if not self.bootimg_dir:
index 7e645caa11fa5f59b4d6ca2fd96b750b38126748..72f3ca684996eb41ccb62b183938cb0c08ebddb6 100644 (file)
@@ -32,7 +32,7 @@ from pykickstart.handlers.control import dataMap
 
 from mic import msger
 from mic.utils import errors, misc, runner, fs_related as fs
-from custom_commands import desktop, micrepo, micboot, partition, installerfw
+from custom_commands import desktop, micrepo, wicboot, partition, installerfw
 
 
 AUTH_URL_PTN = r"(?P<scheme>.*)://(?P<username>.*)(:?P<password>.*)?@(?P<url>.*)"
@@ -98,7 +98,7 @@ def read_kickstart(path):
     using_version = ksversion.DEVEL
     commandMap[using_version]["desktop"] = desktop.Mic_Desktop
     commandMap[using_version]["repo"] = micrepo.Mic_Repo
-    commandMap[using_version]["bootloader"] = micboot.Mic_Bootloader
+    commandMap[using_version]["bootloader"] = wicboot.Wic_Bootloader
     commandMap[using_version]["part"] = partition.Wic_Partition
     commandMap[using_version]["partition"] = partition.Wic_Partition
     commandMap[using_version]["installerfw"] = installerfw.Mic_installerfw
diff --git a/scripts/lib/mic/kickstart/custom_commands/wicboot.py b/scripts/lib/mic/kickstart/custom_commands/wicboot.py
new file mode 100644 (file)
index 0000000..ab8871d
--- /dev/null
@@ -0,0 +1,57 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# Copyright (c) 2014, Intel Corporation.
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# DESCRIPTION
+# This module provides the OpenEmbedded bootloader object definitions.
+#
+# AUTHORS
+# Tom Zanussi <tom.zanussi (at] linux.intel.com>
+#
+
+from pykickstart.base import *
+from pykickstart.errors import *
+from pykickstart.options import *
+from pykickstart.commands.bootloader import *
+
+from mic.kickstart.custom_commands.micboot import *
+
+class Wic_Bootloader(Mic_Bootloader):
+    def __init__(self, writePriority=10, appendLine="", driveorder=None,
+                 forceLBA=False, location="", md5pass="", password="",
+                 upgrade=False, menus=""):
+        Mic_Bootloader.__init__(self, writePriority, appendLine, driveorder,
+                                forceLBA, location, md5pass, password, upgrade)
+
+        self.source = ""
+
+    def _getArgsAsStr(self):
+        retval = Mic_Bootloader._getArgsAsStr(self)
+
+        if self.source:
+            retval += " --source=%s" % self.source
+
+        return retval
+
+    def _getParser(self):
+        op = Mic_Bootloader._getParser(self)
+        # use specified source plugin to implement bootloader-specific methods
+        op.add_option("--source", type="string", action="store",
+                      dest="source", default=None)
+        return op
+