Patchwork [3/7] wic: Add wic-specific bootloader subclass

login
register
mail settings
Submitter tom.zanussi@linux.intel.com
Date Feb. 4, 2014, 1:16 a.m.
Message ID <fc2b9e2d634e482680264fa899428292c52b9391.1391476329.git.tom.zanussi@linux.intel.com>
Download mbox | patch
Permalink /patch/66285/
State New
Headers show

Comments

tom.zanussi@linux.intel.com - Feb. 4, 2014, 1:16 a.m.
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>
---
 scripts/lib/mic/imager/direct.py                   |  6 +++
 scripts/lib/mic/kickstart/__init__.py              |  4 +-
 .../lib/mic/kickstart/custom_commands/wicboot.py   | 57 ++++++++++++++++++++++
 3 files changed, 65 insertions(+), 2 deletions(-)
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/wicboot.py

Patch

diff --git a/scripts/lib/mic/imager/direct.py b/scripts/lib/mic/imager/direct.py
index d24bc68..3827eb8 100644
--- a/scripts/lib/mic/imager/direct.py
+++ b/scripts/lib/mic/imager/direct.py
@@ -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:
diff --git a/scripts/lib/mic/kickstart/__init__.py b/scripts/lib/mic/kickstart/__init__.py
index 7e645ca..72f3ca6 100644
--- a/scripts/lib/mic/kickstart/__init__.py
+++ b/scripts/lib/mic/kickstart/__init__.py
@@ -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
index 0000000..ab8871d
--- /dev/null
+++ b/scripts/lib/mic/kickstart/custom_commands/wicboot.py
@@ -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
+